A small library for adding total orderings to enums
Project description
ordered_enum
ordered_enum is a small library for adding (total) orderings to enum.Enums.
It provides two ordering behaviors:
ordered_enum.OrderedEnum: total ordering by definitionordered_enum.ValueOrderedEnum: "total" ordering by member values
Installation
ordered_enum requires Python 3.9 or newer.
pip3 install ordered_enum
Usage
To use ordered_enum, just use OrderedEnum or ValueOrderedEnum as your parent class:
from ordered_enum import OrderedEnum
class State(OrderedEnum):
Disabled = 4
Loaded = 3
Waiting = 2
Running = 1
Dead = 0
assert(State.Disabled < State.Loaded)
assert(sorted([State.Dead, State.Waiting]) == [State.Waiting, State.Dead])
OrderedEnum doesn't require @enum.unique (or unique values at all); it uses the order of
definition to impose an ordering between members.
If you'd like to impose an ordering based on member values, you can use ValueOrderedEnum instead:
import enum
from ordered_enum import ValueOrderedEnum
@enum.unique
class State(ValueOrderedEnum):
Disabled = 4
Loaded = 3
Waiting = 2
Running = 1
Dead = 0
assert(State.Disabled > State.Loaded)
assert(sorted([State.Waiting, State.Dead]) == [State.Dead, State.Waiting])
ValueOrderedEnum does require unique values, which can be enforced via @enum.unique.
Failing to make a ValueOrderedEnum's values unique will result in a silently broken ordering.
Caveats
As mentioned above, ordered_enum.OrderedEnum provides an ordering of enum values based on their order
of definition in the class. This means that:
- Enum values doesn't have to be unique for ordered_enum to work
- Enum values can be heterogeneously typed
- Moving enum values around changes their ordering
Therefore, you should either not depend on a specific ordering or ensure that your order of definition is the order you'd like.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ordered_enum-0.0.10.tar.gz.
File metadata
- Download URL: ordered_enum-0.0.10.tar.gz
- Upload date:
- Size: 2.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6979a367a7f252353eef4d5cd4c3c00c2178a421b52cc5f7cb2ee0d412d7f05b
|
|
| MD5 |
056ea92895e1f264e2755b34af182c07
|
|
| BLAKE2b-256 |
34208d165f16c2ef9d5bc945571898a0c99d3755bc401a1c57517318ba43a58f
|
Provenance
The following attestation bundles were made for ordered_enum-0.0.10.tar.gz:
Publisher:
release.yml on woodruffw/ordered_enum
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ordered_enum-0.0.10.tar.gz -
Subject digest:
6979a367a7f252353eef4d5cd4c3c00c2178a421b52cc5f7cb2ee0d412d7f05b - Sigstore transparency entry: 246739567
- Sigstore integration time:
-
Permalink:
woodruffw/ordered_enum@fa31674f377d6b9e7b2a59bcd2bb5a2ac267655f -
Branch / Tag:
refs/tags/v0.0.10 - Owner: https://github.com/woodruffw
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fa31674f377d6b9e7b2a59bcd2bb5a2ac267655f -
Trigger Event:
release
-
Statement type:
File details
Details for the file ordered_enum-0.0.10-py3-none-any.whl.
File metadata
- Download URL: ordered_enum-0.0.10-py3-none-any.whl
- Upload date:
- Size: 3.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f398723003f43bc19ef0e308f687149814a9889e7b81dd1947c556daa94d547e
|
|
| MD5 |
6ab423b487ee137a735d97534b900968
|
|
| BLAKE2b-256 |
6c3155f391e6039353ccb97072ab990f21bde06676d1df295310cca51141d510
|
Provenance
The following attestation bundles were made for ordered_enum-0.0.10-py3-none-any.whl:
Publisher:
release.yml on woodruffw/ordered_enum
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ordered_enum-0.0.10-py3-none-any.whl -
Subject digest:
f398723003f43bc19ef0e308f687149814a9889e7b81dd1947c556daa94d547e - Sigstore transparency entry: 246739574
- Sigstore integration time:
-
Permalink:
woodruffw/ordered_enum@fa31674f377d6b9e7b2a59bcd2bb5a2ac267655f -
Branch / Tag:
refs/tags/v0.0.10 - Owner: https://github.com/woodruffw
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fa31674f377d6b9e7b2a59bcd2bb5a2ac267655f -
Trigger Event:
release
-
Statement type: