Skip to main content

DeclarativeEnum

A declarative and flexible approach to Python enums that supports preprocessing, validation, namespacing, and direct value access.

Features

  • Value preprocessing and validation
  • Auto-numbering support
  • Namespace prefixing
  • Pattern formatting
  • Value type enforcement
  • Method chaining with direct access
  • Aliases support

Installation

pip install declarativeenum

Basic Usage

from declarativeenum import DeclarativeEnum

# Basic enum with direct string values
class Colors(DeclarativeEnum):
    RED
    BLUE
    GREEN

assert Colors.RED.value == "RED"

# Enum with preprocessing
class Headers(DeclarativeEnum):
    __preprocess__ = lambda x: f"X-Custom-{x.lower()}"
    TRACKING
    VERSION

assert Headers.TRACKING.value == "X-Custom-tracking"

# Enum with type conversion and validation
class Ports(DeclarativeEnum):
    __type__ = int
    __validate__ = lambda x: 0 <= x <= 65535
    HTTP = "80"
    HTTPS = "443"

assert isinstance(Ports.HTTP.value, int)
assert Ports.HTTPS.value == 443

# Enum with direct value access
class StatusCode(DeclarativeEnum):
    __directaccess__ = True
    OK = 200
    NOT_FOUND = 404

# Direct comparison works
assert StatusCode.OK == 200

Advanced Features

Preprocessing and Validation

class ValidatedEnum(DeclarativeEnum):
    __preprocess__ = lambda x: x.upper()
    __validate__ = lambda x: len(x) <= 10
    __type__ = str

    SHORT
    ALSO_SHORT

Pattern Formatting

class APIEndpoints(DeclarativeEnum):
    __pattern__ = "/api/v1/{}"
    __namespace__ = "users"

    PROFILE  # becomes "/api/v1/users/profile"
    SETTINGS # becomes "/api/v1/users/settings"

Auto-numbering

class OrderedEnum(DeclarativeEnum):
    __autonumber__ = 100  # Start from 100
    FIRST   # 100
    SECOND  # 101
    THIRD   # 102

Method Chaining with Direct Access

class Headers(DeclarativeEnum):
    __directaccess__ = True
    CONTENT_TYPE = "application/json"

assert Headers.CONTENT_TYPE.upper() == "APPLICATION/JSON"

License

MIT License - see LICENSE file for details.

Metadata

Release files for declarativeenum 1.0.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 declarativeenum 1.0.0
File Size Uploaded
declarativeenum-1.0.0.tar.gz 6.9 kB Details

Built distribution (wheel)

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

Total release size: 13.2 kB

Release files / declarativeenum-1.0.0.tar.gz

Download URL declarativeenum-1.0.0.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9873eb36acc15f9f4ac3d5ba07f8119b5f078fa8c0b71e16908e5e0e430309ad
BLAKE2b-256 checksum
How to use checksums
ebd4d0563651948584682155155cc70702b2a61522e58947e3a911d880094c73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.5

Release files / declarativeenum-1.0.0-py3-none-any.whl

Download URL declarativeenum-1.0.0-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b5bf0e8098355151a05e0b4927931da27bc830b189686729d3ab93aba0f6612
BLAKE2b-256 checksum
How to use checksums
c3788ab486d6167a1c72e86f9a2f4ccf4e77640df838aab2335f19f8710083c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.5

Release history Release notifications | RSS feed

This release

1.0.0 This release

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