declarativeenum


Namedeclarativeenum JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryA declarative and flexible approach to Python enums with preprocessing, validation, and more
upload_time2024-11-11 22:29:22
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords declarative enum preprocessing validation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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

```bash
pip install declarativeenum
```

## Basic Usage

```python
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

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

    SHORT
    ALSO_SHORT
```

### Pattern Formatting

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

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

### Auto-numbering

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

### Method Chaining with Direct Access

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

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

## License

MIT License - see LICENSE file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "declarativeenum",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "declarative, enum, preprocessing, validation",
    "author": null,
    "author_email": "Joel Yisrael <joel@highlyawear.com>",
    "download_url": "https://files.pythonhosted.org/packages/eb/d4/d0563651948584682155155cc70702b2a61522e58947e3a911d880094c73/declarativeenum-1.0.0.tar.gz",
    "platform": null,
    "description": "# DeclarativeEnum\n\nA declarative and flexible approach to Python enums that supports preprocessing, validation, namespacing, and direct value access.\n\n## Features\n\n- Value preprocessing and validation\n- Auto-numbering support\n- Namespace prefixing\n- Pattern formatting\n- Value type enforcement\n- Method chaining with direct access\n- Aliases support\n\n## Installation\n\n```bash\npip install declarativeenum\n```\n\n## Basic Usage\n\n```python\nfrom declarativeenum import DeclarativeEnum\n\n# Basic enum with direct string values\nclass Colors(DeclarativeEnum):\n    RED\n    BLUE\n    GREEN\n\nassert Colors.RED.value == \"RED\"\n\n# Enum with preprocessing\nclass Headers(DeclarativeEnum):\n    __preprocess__ = lambda x: f\"X-Custom-{x.lower()}\"\n    TRACKING\n    VERSION\n\nassert Headers.TRACKING.value == \"X-Custom-tracking\"\n\n# Enum with type conversion and validation\nclass Ports(DeclarativeEnum):\n    __type__ = int\n    __validate__ = lambda x: 0 <= x <= 65535\n    HTTP = \"80\"\n    HTTPS = \"443\"\n\nassert isinstance(Ports.HTTP.value, int)\nassert Ports.HTTPS.value == 443\n\n# Enum with direct value access\nclass StatusCode(DeclarativeEnum):\n    __directaccess__ = True\n    OK = 200\n    NOT_FOUND = 404\n\n# Direct comparison works\nassert StatusCode.OK == 200\n```\n\n## Advanced Features\n\n### Preprocessing and Validation\n\n```python\nclass ValidatedEnum(DeclarativeEnum):\n    __preprocess__ = lambda x: x.upper()\n    __validate__ = lambda x: len(x) <= 10\n    __type__ = str\n\n    SHORT\n    ALSO_SHORT\n```\n\n### Pattern Formatting\n\n```python\nclass APIEndpoints(DeclarativeEnum):\n    __pattern__ = \"/api/v1/{}\"\n    __namespace__ = \"users\"\n\n    PROFILE  # becomes \"/api/v1/users/profile\"\n    SETTINGS # becomes \"/api/v1/users/settings\"\n```\n\n### Auto-numbering\n\n```python\nclass OrderedEnum(DeclarativeEnum):\n    __autonumber__ = 100  # Start from 100\n    FIRST   # 100\n    SECOND  # 101\n    THIRD   # 102\n```\n\n### Method Chaining with Direct Access\n\n```python\nclass Headers(DeclarativeEnum):\n    __directaccess__ = True\n    CONTENT_TYPE = \"application/json\"\n\nassert Headers.CONTENT_TYPE.upper() == \"APPLICATION/JSON\"\n```\n\n## License\n\nMIT License - see LICENSE file for details.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A declarative and flexible approach to Python enums with preprocessing, validation, and more",
    "version": "1.0.0",
    "project_urls": null,
    "split_keywords": [
        "declarative",
        " enum",
        " preprocessing",
        " validation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c3788ab486d6167a1c72e86f9a2f4ccf4e77640df838aab2335f19f8710083c1",
                "md5": "5a529f4b1d071734d92026422a631cf9",
                "sha256": "8b5bf0e8098355151a05e0b4927931da27bc830b189686729d3ab93aba0f6612"
            },
            "downloads": -1,
            "filename": "declarativeenum-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5a529f4b1d071734d92026422a631cf9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 6261,
            "upload_time": "2024-11-11T22:29:20",
            "upload_time_iso_8601": "2024-11-11T22:29:20.224019Z",
            "url": "https://files.pythonhosted.org/packages/c3/78/8ab486d6167a1c72e86f9a2f4ccf4e77640df838aab2335f19f8710083c1/declarativeenum-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ebd4d0563651948584682155155cc70702b2a61522e58947e3a911d880094c73",
                "md5": "785c59ad25d72118e619561378ca01f7",
                "sha256": "9873eb36acc15f9f4ac3d5ba07f8119b5f078fa8c0b71e16908e5e0e430309ad"
            },
            "downloads": -1,
            "filename": "declarativeenum-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "785c59ad25d72118e619561378ca01f7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 6944,
            "upload_time": "2024-11-11T22:29:22",
            "upload_time_iso_8601": "2024-11-11T22:29:22.333144Z",
            "url": "https://files.pythonhosted.org/packages/eb/d4/d0563651948584682155155cc70702b2a61522e58947e3a911d880094c73/declarativeenum-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-11 22:29:22",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "declarativeenum"
}
        
Elapsed time: 0.61237s