Metadata-Version: 2.1
Name: enumset
Version: 0.1.dev1
Summary: set of enum.Enum
Home-page: https://github.com/wtnb75/enumset
Author: Watanebe Takashi
Author-email: wtnb75@gmail.com
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-readme ; extra == 'dev'

# enumset

collection of Enum classes.

## Install

- pip install enumset

## Enumset

Enumset stores multiple Enum-class value, each value in Enum-class should be unique.

```python
from enum import Enum, auto
from enumset import Enumset

class A(Enum):
    A1 = auto();A2 = auto();A3 = auto()

class B(Enum):
    B1 = auto();B2 = auto()

es = Enumset()
es.define_enum(None, A)
es.define_enum(None, B)
es.setval(A.A1)
es.setval(B.B2)
assert list(es.iterval()) == [A.A1, B.B2]
assert es.getval(A) == A.A1

es.setval(A.A2)   # replace A1 -> A2
assert list(es.iterval()) == [A.A2, B.B2]
assert es.getval(A) == A.A2
```

## Flagset

Flagset stores multiple Enum-class value, like `set[Enum]`.

```python
from enum import Enum, auto
from enumset import Flagset

class A(Enum):
    A1 = auto();A2 = auto();A3 = auto()

class B(Enum):
    B1 = auto();B2 = auto()

fs = Flagset()
fs.define_enum(None, A)
fs.define_enum(None, B)
fs.setval(A.A1)
fs.setval(B.B2)
assert list(fs.iterval()) == [A.A1, B.B2]
assert list(fs.getval(A)) == [A.A1]

fs.setval(A.A2)   # A1+A2
assert list(fs.iterval()) == [A.A1, A.A2, B.B2]
assert list(fs.getval(A)) == [A.A1, A.A2]

fs.setval(A.A2)   # A2 already exists
assert list(fs.iterval()) == [A.A1, A.A2, B.B2]
```
