work with annotated but not defined/not used attrs in class
Project description
annot_attrs (current v0.0.9/)
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.9.tar.gz
(7.1 kB
view details)
Built Distribution
File details
Details for the file annot_attrs-0.0.9.tar.gz
.
File metadata
- Download URL: annot_attrs-0.0.9.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e2025c17a618925b70f6a09b6d837ab6662edf34d59e2b0efee51ec87da5a1e |
|
MD5 | 5e4e77b1e10c0645799ee05616fd4457 |
|
BLAKE2b-256 | bbb7da10368ef9d4f399e89992e5bd5d00a7ccdf3b41dd7f8fd71917fad30239 |
File details
Details for the file annot_attrs-0.0.9-py3-none-any.whl
.
File metadata
- Download URL: annot_attrs-0.0.9-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6cf8610758767a196f486e84f6fae0fd971131f95c0c3990cd837bd5e9c18e0 |
|
MD5 | b5e7731e5e47121cf06227ca3c2a8a45 |
|
BLAKE2b-256 | c548c9f849a072a355f0b452975425af5e98c792e02374809e10919794345a00 |