enumerific 1.0.7__py3-none-any.whl → 1.0.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- enumerific/extensible.py +34 -19
- enumerific/version.txt +1 -1
- {enumerific-1.0.7.dist-info → enumerific-1.0.8.dist-info}/METADATA +13 -3
- enumerific-1.0.8.dist-info/RECORD +12 -0
- enumerific-1.0.7.dist-info/RECORD +0 -12
- {enumerific-1.0.7.dist-info → enumerific-1.0.8.dist-info}/WHEEL +0 -0
- {enumerific-1.0.7.dist-info → enumerific-1.0.8.dist-info}/licenses/LICENSE.md +0 -0
- {enumerific-1.0.7.dist-info → enumerific-1.0.8.dist-info}/top_level.txt +0 -0
- {enumerific-1.0.7.dist-info → enumerific-1.0.8.dist-info}/zip-safe +0 -0
enumerific/extensible.py
CHANGED
|
@@ -1459,44 +1459,59 @@ class EnumerationMetaClass(type):
|
|
|
1459
1459
|
name: str = None,
|
|
1460
1460
|
caselessly: bool = False,
|
|
1461
1461
|
annotation: str = None,
|
|
1462
|
+
**annotations: dict[str, object],
|
|
1462
1463
|
) -> Enumeration | None:
|
|
1463
1464
|
"""The 'reconcile' method can be used to reconcile Enumeration type, enumeration
|
|
1464
1465
|
values, or enumeration names to their matching Enumeration type instances. If a
|
|
1465
1466
|
match is found the Enumeration type instance will be returned otherwise None will
|
|
1466
1467
|
be returned, unless the class is configured to raise an error for mismatches."""
|
|
1467
1468
|
|
|
1468
|
-
if
|
|
1469
|
+
if isinstance(annotation, str):
|
|
1470
|
+
annotations[annotation] = value
|
|
1471
|
+
|
|
1472
|
+
if name is None and value is None and len(annotations) == 0:
|
|
1469
1473
|
raise ValueError(
|
|
1470
|
-
"Either
|
|
1474
|
+
"Either a 'value', 'name' or annotation keyword argument must be specified when calling the 'reconcile' function!"
|
|
1471
1475
|
)
|
|
1472
1476
|
|
|
1473
1477
|
if not value is None and not isinstance(value, (Enumeration, object)):
|
|
1474
1478
|
raise TypeError(
|
|
1475
|
-
"The 'value' argument must reference an Enumeration type or have an enumeration value!"
|
|
1479
|
+
"The 'value' argument, if specified, must reference an Enumeration type or have an enumeration value!"
|
|
1476
1480
|
)
|
|
1477
1481
|
|
|
1478
1482
|
if not name is None and not isinstance(name, str):
|
|
1479
|
-
raise TypeError(
|
|
1483
|
+
raise TypeError(
|
|
1484
|
+
"The 'name' argument, if specified, must have a string value!"
|
|
1485
|
+
)
|
|
1480
1486
|
|
|
1481
1487
|
reconciled: Enumeration = None
|
|
1482
1488
|
|
|
1483
1489
|
for attribute, enumeration in self._enumerations.items():
|
|
1484
|
-
if
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1490
|
+
if len(annotations) > 0:
|
|
1491
|
+
comparisons: list[bool] = []
|
|
1492
|
+
|
|
1493
|
+
for annotation, value in annotations.items():
|
|
1494
|
+
if annotation in enumeration._annotations:
|
|
1495
|
+
if enumeration._annotations[annotation] is value:
|
|
1496
|
+
comparisons.append(True)
|
|
1497
|
+
elif enumeration._annotations[annotation] == value:
|
|
1498
|
+
comparisons.append(True)
|
|
1499
|
+
else:
|
|
1500
|
+
comparisons.append(False)
|
|
1501
|
+
else:
|
|
1502
|
+
comparisons.append(False)
|
|
1503
|
+
|
|
1504
|
+
logger.debug(
|
|
1505
|
+
"The enumeration option, %s, has no '%s' annotation!"
|
|
1506
|
+
% (
|
|
1507
|
+
enumeration,
|
|
1508
|
+
annotation,
|
|
1509
|
+
)
|
|
1498
1510
|
)
|
|
1499
|
-
|
|
1511
|
+
|
|
1512
|
+
if len(comparisons) == len(annotations) and False not in comparisons:
|
|
1513
|
+
reconciled = enumeration
|
|
1514
|
+
break
|
|
1500
1515
|
elif isinstance(value, Enumeration):
|
|
1501
1516
|
if enumeration is value:
|
|
1502
1517
|
reconciled = enumeration
|
enumerific/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.8
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: enumerific
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.8
|
|
4
4
|
Summary: Simplifies working with Python enums.
|
|
5
5
|
Author: Daniel Sissman
|
|
6
6
|
License-Expression: MIT
|
|
@@ -690,8 +690,8 @@ class Colors(Enumeration):
|
|
|
690
690
|
# Ensure that the Colors enumeration subclass is of the expected types
|
|
691
691
|
assert issubclass(Colors, Enumeration)
|
|
692
692
|
|
|
693
|
-
# Attempt to reconcile a Color against one of its annotations
|
|
694
|
-
color = Colors.reconcile(
|
|
693
|
+
# Attempt to reconcile a Color against one of its annotations (via annotation keyword)
|
|
694
|
+
color = Colors.reconcile(RGB=(255, 0, 0))
|
|
695
695
|
|
|
696
696
|
assert isinstance(color, Colors)
|
|
697
697
|
assert isinstance(color, Enumeration)
|
|
@@ -699,6 +699,16 @@ assert isinstance(color, Enumeration)
|
|
|
699
699
|
assert color.name == "RED"
|
|
700
700
|
assert color.value == 1
|
|
701
701
|
assert color.RGB == (255, 0, 0)
|
|
702
|
+
|
|
703
|
+
# Attempt to reconcile a Color against one of its annotations (via annotation argument)
|
|
704
|
+
color = Colors.reconcile(value=(0, 255, 0), annotation="RGB")
|
|
705
|
+
|
|
706
|
+
assert isinstance(color, Colors)
|
|
707
|
+
assert isinstance(color, Enumeration)
|
|
708
|
+
|
|
709
|
+
assert color.name == "GREEN"
|
|
710
|
+
assert color.value == 2
|
|
711
|
+
assert color.RGB == (0, 255, 0)
|
|
702
712
|
```
|
|
703
713
|
|
|
704
714
|
# Enumerific Library Enumerations: Classes & Methods
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
enumerific/__init__.py,sha256=K9iFirgxSkrHgXfhocOvgRkskGe0VfWRgxEvppnVWBM,587
|
|
2
|
+
enumerific/exceptions.py,sha256=lvfcH1cz43hDjzSUpgm1-OZjKzxo--fyZ8UsBS-GiZA,359
|
|
3
|
+
enumerific/extensible.py,sha256=o0n9PdgnbC52vw4wbk4kUkmRsFUTN_e7yqe7LA-6Obg,87108
|
|
4
|
+
enumerific/logging.py,sha256=zz1Phnot1BFWMoxwvZ0FlZDsiYZZYhz-_S4IzgPYc40,97
|
|
5
|
+
enumerific/standard.py,sha256=xQhhwlcYZ6-8DmgscbV38g2Ol5Z8_vvBwonz-Ww0I40,3254
|
|
6
|
+
enumerific/version.txt,sha256=phVSvZad-OqKy8Q8pyiMu01dODZaYQyAIaQn4mpRhR0,5
|
|
7
|
+
enumerific-1.0.8.dist-info/licenses/LICENSE.md,sha256=j1XidOCGUhPx7CyXA31uC0XGKDRnvUcZpMp161qHI6g,1077
|
|
8
|
+
enumerific-1.0.8.dist-info/METADATA,sha256=Loee454XK_bhrv_N3PKAEFjDFHATJBQbdG4QZRGzLYg,34237
|
|
9
|
+
enumerific-1.0.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
10
|
+
enumerific-1.0.8.dist-info/top_level.txt,sha256=hyemsMgPYZgSx71XHmFRF-gvc_2Y4rDAESR8e0hbYHU,11
|
|
11
|
+
enumerific-1.0.8.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
12
|
+
enumerific-1.0.8.dist-info/RECORD,,
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
enumerific/__init__.py,sha256=K9iFirgxSkrHgXfhocOvgRkskGe0VfWRgxEvppnVWBM,587
|
|
2
|
-
enumerific/exceptions.py,sha256=lvfcH1cz43hDjzSUpgm1-OZjKzxo--fyZ8UsBS-GiZA,359
|
|
3
|
-
enumerific/extensible.py,sha256=HX-oZ91XtTLk5dmlqFOSFCO71_TEj1zGaO4KSKGwwoY,86507
|
|
4
|
-
enumerific/logging.py,sha256=zz1Phnot1BFWMoxwvZ0FlZDsiYZZYhz-_S4IzgPYc40,97
|
|
5
|
-
enumerific/standard.py,sha256=xQhhwlcYZ6-8DmgscbV38g2Ol5Z8_vvBwonz-Ww0I40,3254
|
|
6
|
-
enumerific/version.txt,sha256=6fmB8RVMkjgdY7ZTz7_Hm-ksP2zJXgkVpeXBnzkkylg,5
|
|
7
|
-
enumerific-1.0.7.dist-info/licenses/LICENSE.md,sha256=j1XidOCGUhPx7CyXA31uC0XGKDRnvUcZpMp161qHI6g,1077
|
|
8
|
-
enumerific-1.0.7.dist-info/METADATA,sha256=AnTj6l-xLoVxh1rQ1dFw1t8_v3Aq2slvwgiL458SBGs,33923
|
|
9
|
-
enumerific-1.0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
10
|
-
enumerific-1.0.7.dist-info/top_level.txt,sha256=hyemsMgPYZgSx71XHmFRF-gvc_2Y4rDAESR8e0hbYHU,11
|
|
11
|
-
enumerific-1.0.7.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
12
|
-
enumerific-1.0.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|