A small, dependency-free library offering additional enum.StrEnum subclasses and a backport for older Python versions.
Project description
stringenum
Table Of Contents
About
A small, dependency-free library offering additional enum.StrEnum subclasses and a backport for older Python versions.
Installation
stringenum
is available on PyPI, so you can simply use pip to install it.
pip install stringenum
Usage
-
stringenum.StrEnum
- A backport ofenum.StrEnum
. WhileStrEnum
was added in Python 3.11, version 3.12 brought changes to the__contains__
method inEnumType
, which also impactsStrEnum
.stringenum.StrEnum
includes this__contains__
update from Python 3.12.-
enum.StrEnum
on Python <=3.11>>> class Color(enum.StrEnum): ... RED = "RED" ... GREEN = "GREEN" >>> Color.RED in Color True >>> "RED" in Color Traceback (most recent call last): ... TypeError: unsupported operand type(s) for 'in': 'str' and 'EnumType'
-
enum.StrEnum
on Python >=3.12>>> class Color(enum.StrEnum): ... RED = "RED" ... GREEN = "GREEN" >>> Color.RED in Color True >>> "RED" in Color True >>> 12 in Color False
-
stringenum.StrEnum
on Python >=3.9>>> class Color(stringenum.StrEnum): ... RED = "RED" ... GREEN = "GREEN" >>> Color.RED in Color True >>> "RED" in Color True >>> 12 in Color False
-
-
stringenum.DuplicateFreeStrEnum
- A subclass ofStrEnum
that ensures all members have unique values and names, raising aValueError
if duplicates are found.>>> class Fruits(DuplicateFreeStrEnum): ... APPLE = "apple" ... BANANA = "banana" ... ORANGE = "apple" ... Traceback (most recent call last): ... ValueError: Duplicate values are not allowed in Fruits: <Fruits.ORANGE: 'apple'>
-
stringenum.CaseInsensitiveStrEnum
- A subclass ofDuplicateFreeStrEnum
that supports case-insensitive lookup.>>> class Pet(CaseInsensitiveStrEnum): ... CAT = "meow" ... DOG = "bark" >>> Pet("Meow") <Pet.CAT: 'meow'> >>> Pet("BARK") <Pet.DOG: 'bark'> >>> Pet["Cat"] <Pet.CAT: 'meow'> >>> Pet["dog"] <Pet.DOG: 'bark'>
-
stringenum.DoubleSidedStrEnum
- A subclass ofDuplicateFreeStrEnum
that supports double-sided lookup, allowing both member values and member names to be used for lookups.>>> class Status(DoubleSidedStrEnum): ... PENDING = "waiting" ... REJECTED = "denied" >>> Status("PENDING") <Status.PENDING: 'waiting'> >>> Status("waiting") <Status.PENDING: 'waiting'> >>> Status["REJECTED"] <Status.REJECTED: 'denied'> >>> Status["denied"] <Status.REJECTED: 'denied'>
-
stringenum.DoubleSidedCaseInsensitiveStrEnum
- A subclass ofDuplicateFreeStrEnum
that supports case-insenitive double-sided lookup, allowing both member values and member names to be used for lookups.>>> class Status(DoubleSidedCaseInsensitiveStrEnum): ... PENDING = "waiting" ... REJECTED = "denied" >>> Status("pending") <Status.PENDING: 'waiting'> >>> Status("Waiting") <Status.PENDING: 'waiting'> >>> Status["Rejected"] <Status.REJECTED: 'denied'> >>> Status["DenieD"] <Status.REJECTED: 'denied'>
License
Distributed under the MIT License. See LICENSE for more information.
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
File details
Details for the file stringenum-0.5.0.tar.gz
.
File metadata
- Download URL: stringenum-0.5.0.tar.gz
- Upload date:
- Size: 24.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c80a702877cf815bb6b15c840d3a97e8994db32e2ac2998dc7e0cf8769632aa1 |
|
MD5 | 14016f6cbbb25e738dfb06a8324b481b |
|
BLAKE2b-256 | 1274b32bbcd5279fb2f8d14513a3b30b256603c3988b408f666ac60992c483d3 |
Provenance
The following attestation bundles were made for stringenum-0.5.0.tar.gz
:
Publisher:
release.yml
on Ravencentric/stringenum
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
stringenum-0.5.0.tar.gz
- Subject digest:
c80a702877cf815bb6b15c840d3a97e8994db32e2ac2998dc7e0cf8769632aa1
- Sigstore transparency entry: 150851255
- Sigstore integration time:
- Predicate type:
File details
Details for the file stringenum-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: stringenum-0.5.0-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f3541693d9915669f590a3bd12bb00322097d5ce97a363f287618bb9bf48223 |
|
MD5 | 3db8c1a2bc9ea8431b5e8ca9dfefc998 |
|
BLAKE2b-256 | e6d53c352e2f2260b757309804ee7d14c5aa3c00bb9be64d2d2914adea363335 |
Provenance
The following attestation bundles were made for stringenum-0.5.0-py3-none-any.whl
:
Publisher:
release.yml
on Ravencentric/stringenum
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
stringenum-0.5.0-py3-none-any.whl
- Subject digest:
3f3541693d9915669f590a3bd12bb00322097d5ce97a363f287618bb9bf48223
- Sigstore transparency entry: 150851256
- Sigstore integration time:
- Predicate type: