Metadata-Version: 2.4
Name: described-enum
Version: 0.0.1
Summary: Python Enums with description property
Keywords: enum,enums,described enum,enum with description
Author: Mikhail Shagov
Author-email: Mikhail Shagov <mishaga@me.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 1 - Planning
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Maintainer: Mikhail Shagov
Maintainer-email: Mikhail Shagov <mishaga@me.com>
Requires-Python: >=3.11
Project-URL: Homepage, https://github.com/mishaga/described-enum
Project-URL: Issues, https://github.com/mishaga/described-enum/issues
Project-URL: Repository, https://github.com/mishaga/described-enum
Description-Content-Type: text/markdown

# described-enum

Python Enums with description property


## Install

With pip:

```bash
pip install described-enum
```

With uv:

```bash
uv add described-enum
```

With poetry:

```bash
poetry add described-enum
```


## Classes

* `DescribedEnum` – child class of `enum.Enum`
* `DescribedIntEnum` – child class of `enum.IntEnum`
* `DescribedStrEnum` – child class of `enum.StrEnum`


## Usage examples

```python
from described_enum import DescribedIntEnum, DescribedStrEnum


class TaskStatus(DescribedIntEnum):
    PENDING = 1, 'Task was created / enqueued'
    RUNNING = 2, 'Working on the task'
    DONE = 3, 'Success'
    FAILED = 4, 'Task failed'


print(TaskStatus.RUNNING.name)  # will print str 'RUNNING'
print(TaskStatus.RUNNING.value)  # will print int 2
print(TaskStatus.RUNNING.description)  # will print str 'Working on the task'


class Format(DescribedStrEnum):
    XML = 'xml', 'Extensible Markup Language'
    JSON = 'json', 'JavaScript Object Notation'
    TOML = 'toml', "Tom's Obvious, Minimal Language"
    YAML = 'yml', "YAML Ain't Markup Language"


print(Format.YAML.name)  # will print str 'YAML'
print(Format.YAML.value)  # will print str 'yml'
print(Format.YAML.description)  # will print str "YAML Ain't Markup Language"
```
