Last updated:
0 purchases
annotattrs 0.0.12
annot_attrs (current v0.0.12/)
DESCRIPTION_SHORT
work with annotated but not defined/not used attrs in class
DESCRIPTION_LONG
Designed to get list of annotated but not defined/not used attrs from class (not instance!).
may be helpful further in instance to check that really have values.
Features
get set of unused attributes from class(not instance!)
work with nested classes
get values:
by case insensitive names
by dict key access method
work on any object (over Obj parameter!):
at least for NamedTuple
License
See the LICENSE file for license rights and limitations (MIT).
Release history
See the HISTORY.md file for release history.
Installation
pip install annot-attrs
Import
from annot_attrs import *
USAGE EXAMPLES
See tests and sourcecode for other examples.
1. example1.py
# ===============================================================
### 1. inheritance
# (BEST practice - dont mess classes! use as separated object!)
from annot_attrs import *
class Cls:
ATTR1: int
ATTR2: int = 2
obj = Cls(1)
assert AnnotAttrs().annots_get_set(obj) == {"ATTR1", }
assert AnnotAttrs().annots_get_dict(obj) == {"ATTR1": 1, }
# ===============================================================
from annot_attrs import *
class Cls(AnnotAttrs):
ATTR1: int
ATTR2: int = 2
assert Cls().annots_get_set() == {"ATTR1", }
class Cls2(Cls):
ATTR1: int = 2
ATTR3: int
assert Cls2().annots_get_set() == {"ATTR1", "ATTR3", }
inst = Cls2()
inst.ATTR1 = 1
inst.ATTR2 = 1
inst.ATTR3 = 1
assert Cls2().annots_get_set() == {"ATTR1", "ATTR3", }
assert Cls().ATTR2 == 2
assert Cls().attr2 == 2
assert Cls()["ATTR2"] == 2
assert Cls()["attr2"] == 2
obj = Cls()
try:
obj.annots_get_dict()
except Exx__AttrNotExist:
pass
else:
assert False
obj.ATTR1 = 1
assert obj.annots_get_dict() == {"ATTR1": 1}
# ===============================================================
### 2. Indepandant usage
from annot_attrs import *
try:
class Cls(AnnotAttrs, NamedTuple):
ATTR1: int
ATTR2: int = 2
except TypeError:
# TypeError: can only inherit from a NamedTuple type and Generic
pass
else:
assert True
class Cls(NamedTuple):
ATTR1: int
ATTR2: int = 2
obj = Cls(1)
assert AnnotAttrs().annots_get_set(obj) == {"ATTR1", }
assert AnnotAttrs().annots_get_dict(obj) == {"ATTR1": 1}
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.