Skip to main content

work with annotated but not defined/not used attrs in class

Project description

Ver/TestedPython Ver/Os
repo/Created Commit/Last Tests/GitHubWorkflowStatus Tests/GitHubWorkflowStatus
repo/Size Commit/Count/t Commit/Count/y Commit/Count/m

annot_attrs (current v0.0.9/Ver/Pypi Latest)

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

  1. get set of unused attributes from class(not instance!)
  2. work with nested classes
  3. get values:
    • by case insensitive names
    • by dict key access method
  4. 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


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)

Uploaded Source

Built Distribution

annot_attrs-0.0.9-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

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

Hashes for annot_attrs-0.0.9.tar.gz
Algorithm Hash digest
SHA256 6e2025c17a618925b70f6a09b6d837ab6662edf34d59e2b0efee51ec87da5a1e
MD5 5e4e77b1e10c0645799ee05616fd4457
BLAKE2b-256 bbb7da10368ef9d4f399e89992e5bd5d00a7ccdf3b41dd7f8fd71917fad30239

See more details on using hashes here.

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

Hashes for annot_attrs-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 a6cf8610758767a196f486e84f6fae0fd971131f95c0c3990cd837bd5e9c18e0
MD5 b5e7731e5e47121cf06227ca3c2a8a45
BLAKE2b-256 c548c9f849a072a355f0b452975425af5e98c792e02374809e10919794345a00

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page