Name | declarativeenum JSON |
Version |
1.0.0
JSON |
| download |
home_page | None |
Summary | A declarative and flexible approach to Python enums with preprocessing, validation, and more |
upload_time | 2024-11-11 22:29:22 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | None |
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"
}