Enum Algebraic Data Types (ADTs) for Python
Project description
enum-adt
Enum Algebraic Data Types (ADTs) for Python.
Installation
Run the following command to install the Python package on Python 3.8 or later:
pip install enum-adt
Or you can simply copy the enum_adt.py
file anywhere in your project.
Usage
from enum_adt import ADT
class MyEnum(ADT):
class Foo: ...
class Bar:
name: str
foo = MyEnum.Foo()
bar = MyEnum.Bar("bar")
assert isinstance(foo, MyEnum)
assert isinstance(bar, MyEnum)
Alternatively, you can use metaclass:
from enum_adt import ADTMeta
class MyEnum(metaclass=ADTMeta):
class Foo: ...
class Bar:
name: str
Each internal class will be created as a dataclass
with the same attributes. You can customize the dataclass by passing arguments to the class:
All enum variants get the same arguments.
from enum_adt import ADT
class MyEnum(ADT, frozen=True, kw_only=True):
class Foo: ...
class Bar:
name: str
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file enum_adt-0.0.2.tar.gz
.
File metadata
- Download URL: enum_adt-0.0.2.tar.gz
- Upload date:
- Size: 2.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08b8ee69ed02772783d665e8863aa063783f34a4b4745d5e77a76cd282060c15 |
|
MD5 | 7bfb88ef4b7b8c6a021543492f744d10 |
|
BLAKE2b-256 | 66605ec0e1dcb108b0b876bd2f867653fbb3d37a317f1162ead7d94cbed922c1 |
File details
Details for the file enum_adt-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: enum_adt-0.0.2-py3-none-any.whl
- Upload date:
- Size: 3.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ac641f570286346c051b1d4177f79b27fd03cbb4839edb9e951915ca0a5db64 |
|
MD5 | 20073702d25891c6ae8ee27c2da6f574 |
|
BLAKE2b-256 | 3ced359af9b0853e82bd5891f79e38d440226b496efb6cf37ed9e6342cb34fca |