Easy declaration of data structures with runtime type checking
Project description
easytypes
Easy typed structures for Python with optional field checking and runtime type checking. Based on class decorators and typeguard
package for type checking.
What does the package implement
from easytypes import easy_type_decorator, safe_type, fast_type, unlimited_type
from easytypes import EasyTypesException
from easytypes import AttributeRequired, AttributeNotAllowed, AttributeTypeError
from easytypes import Required
from easytypes import disable_all_checks, enable_all_checks
How to define a simple data class
from easytypes import easy_type_decorator, safe_type, fast_type, unlimited_type
from easytypes import EasyTypesException
from easytypes import AttributeRequired, AttributeNotAllowed, AttributeTypeError
from easytypes import Required
from easytypes import disable_all_checks, enable_all_checks
@safe_type # You cannot: add new attrs; not set (or delete) the required attrs; assign wrong types
class A:
a: int # Type checking, not required, no default value
b: str = '5' # Type checking, not required, the default value is '5'
c: float = Required() # Type checking, required, no default value
d: Tuple[int, int] = Required((2, 3)) # Type checking, required, the default value is (2, 3)
...and how does the class work
va = A(a=2, b='b', c=1.0, d=(2,4)) # Ok
assert va.a == 2
va.a = 5
assert va.a == 5
va = A(c=1.0) # Ok, using default values
va = A(c=1.0, q=2) # raises AttributeNotAllowed
va.q = 0 # raises AttributeNotAllowed
va.a = '5' # raises AttributeTypeError (a should be int)
va = A(c='c') # raises AttributeTypeError (c should be float)
va = (b='c') # raises AttributeRequired (a is missing)
How to extend a class
@safe_type
class B(A):
e: str = 5 # Is added to the fields defined in A
...and how to redefine a field
@safe_type
class C(A):
a: int = 5 # Not recomended and not prohibited
How to disable all the checks at runtime
disable_all_checks() # Does not affect all the previously created classes, so put it before the class declaration
...and how to re-enable them
enable_all_checks() # Does not affect all the previously created classes, so put it before the class declaration
The other class decorators
unlimited_type # Allows to add the attributes that are not declared at the class level
fast_type # No checks at all, just a constructor implemetation accepting the attributes
...and how to get a customized decorator
easy_type_decorator(chk_required=True, chk_allowed=True, chk_types=True) # Allows to activate only the desired checks
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
easytypes-0.5.5.tar.gz
(7.7 kB
view details)
Built Distribution
File details
Details for the file easytypes-0.5.5.tar.gz
.
File metadata
- Download URL: easytypes-0.5.5.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28186e4ac53c19cf3ab592b3bc32393d5f8d4a868abf0bce742b8a3dec181373 |
|
MD5 | b2723ca22db4ce50bd1d9c2d7fdd0bf3 |
|
BLAKE2b-256 | 44f4971b3a9f3f45c8c46995e610000dcf4f1371058efbc8f9359f158fce5ad8 |
File details
Details for the file easytypes-0.5.5-py3-none-any.whl
.
File metadata
- Download URL: easytypes-0.5.5-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f4047ae0225fb946c3d5438ba97559a07aa687a6698181cfe07ea84c5f06279 |
|
MD5 | ab15d174767368555f9e2b2abd8979e5 |
|
BLAKE2b-256 | 6716fd81c3ae0acb6cd679c2a66102a8d534033268c8cf24d37a11eb20ede813 |