Skip to main content

stringenum

PyPI - Version PyPI - Python Version License Checked with mypy Ruff

GitHub Workflow Status (with event) GitHub Actions Workflow Status codecov

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 of enum.StrEnum. While StrEnum was added in Python 3.11, version 3.12 brought changes to the __contains__ method in EnumType, which also impacts StrEnum. 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 of StrEnum that ensures all members have unique values and names, raising a ValueError 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 of DuplicateFreeStrEnum 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 of DuplicateFreeStrEnum 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 of DuplicateFreeStrEnum 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.

Metadata

Release files for stringenum 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for stringenum 0.6.0
File Size Uploaded
stringenum-0.6.0.tar.gz 26.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for stringenum 0.6.0
File Interpreter ABI Platform
stringenum-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 32.4 kB

Release files / stringenum-0.6.0.tar.gz

Download URL stringenum-0.6.0.tar.gz
Size 26.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2b47213f239487ec8051e9cc54d68b4955509808e33126c6cc4ab53e47f66d01
BLAKE2b-256 checksum
How to use checksums
e4bfe8069c06e43869d9371022a8805fe497ff80b50e5b45b91b3a795b669ca3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 24, 2024.

Transparency log

Release files / stringenum-0.6.0-py3-none-any.whl

Download URL stringenum-0.6.0-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e132edae8bb2bf5c37cae55f5d4ec51c7596e5064fe2d3e6bd567e0ca773063d
BLAKE2b-256 checksum
How to use checksums
70a6d21747d479369d30df2f5d1a86f9f426b7839c4e8a5fb32d5bff24c0f9a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 24, 2024.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page