AnyStrEnum
Elegant implementation of Enum which inherits from str or bytes
As simple as this
from anystrenum import StrEnum
class Season(StrEnum):
spring: str
summer: str
autumn: str
winter: str
print(Season.summer)
print(isinstance(Season.summer, str))
# summer
# True
Features
Easy members assignment with type hinting (No need to use auto() or other stubs)
Automatic value generation with support of custom converters or separators
Method to filter members (contains, contained_in, startswith, endswith, etc.)
Custom str and bytes types support
Installation
$ pip install AnyStrEnum
Examples
Using custom words separator
To automatically replace all underscores (_) in names to something more suitable, use sep parameter:
from anystrenum import StrEnum
class Region(StrEnum, sep='-'):
us_east_1: str
us_west_1: str
ca_central_1: str
cn_northwest_1: str
eu_central_1: str
eu_west_1: str
eu_north_2: str
sa_east_1: str
print(Region.us_east_1)
# us-east-1
Using str converter and custom words separator
If you need to apply to your names more changes, you can use converter parameter. Pass a function in here which will be called on every member
from anystrenum import StrEnum
class ContentType(StrEnum, converter=lambda s: s.replace('_', '/', 1), sep='-'):
application_json: str
application_octet_stream: str
application_x_json_stream: str
audio_mpeg: str
audio_pcm: str
audio_ogg: str
print(ContentType.application_octet_stream)
# application/octet-stream
As you can see from an example, firstly, names will be converted with our lambda function and then, remaining underscores will be replaced with given separator
Filtering enum members
Using enums from previous examples
print(ContentType.filter(contains='-', startswith='a', endswith='m'))
# {<ContentType.application_octet_stream: 'application/octet-stream'>,
# <ContentType.application_x_json_stream: 'application/x-json-stream'>}
print(ContentType.filter(contained_in='Usually content type for MP3 is audio/mpeg'))
# {<ContentType.audio_mpeg: 'audio/mpeg'>}
print(Region.filter(startswith='eu', endswith='1'))
# {<Region.eu_west_1: 'eu-west-1'>, <Region.eu_central_1: 'eu-central-1'>}
Metadata
Release files for AnyStrEnum 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| AnyStrEnum-0.2.0.tar.gz | 5.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| AnyStrEnum-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.5 kB
Release files / AnyStrEnum-0.2.0.tar.gz
| Download URL | AnyStrEnum-0.2.0.tar.gz |
|---|---|
| Size | 5.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
675a804941d370d98b618f6a11f7ebffb9a633a32c63057ee37b1d6b3b6e4be7
|
|
BLAKE2b-256 checksum How to use checksums |
2163391b3edcd6129e32a57fce21b1c41cfd27b48330cfa9b974d6b309ba6fee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8
|
Release files / AnyStrEnum-0.2.0-py3-none-any.whl
| Download URL | AnyStrEnum-0.2.0-py3-none-any.whl |
|---|---|
| Size | 6.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2eea8854c0202cb04e5122558db8f1d0c801269922b89a20109206d94877fd31
|
|
BLAKE2b-256 checksum How to use checksums |
70e22f009daccfb8af8896c712ba9ad4e053e4132b76c9a8557bb9642de79ba3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8
|
Security for AnyStrEnum 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.