work with annotated but not defined/not used attrs in class
Project description
annot_attrs (v0.0.6)
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}
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
annot_attrs-0.0.6.tar.gz
(5.0 kB
view hashes)
Built Distribution
Close
Hashes for annot_attrs-0.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ac277a208df4861c8a980336c5a222135111fec89999821d04b58b79c07b75d |
|
MD5 | 5e4b8bdd2c1d2ef19f89944971a43c7a |
|
BLAKE2b-256 | 39a38fefd3c91ad96ec21a49e8e4915619020df1cc0adb12f70775d387a12a30 |