Python Utilities for the Super Lazy
Project description
lazy
Python Utilities for the Super Lazy
Motivation
This library is forked from an internal project that works with a lot of dataclasses, (AWS API) and I got tired of writing data classes to work with and manipulate them. This library is a wrapper around the main pydantic.create_model function that recursively parses a dict object and transforms them into subclasses. So nested dict objects within dicts get transformed into their own dataclass.
Quickstart
pip install --upgrade lazycls
from lazycls import LazyCls, BaseLazy
data = {
'x': ...,
'y': ...
}
obj = LazyCls(
name: str = 'CustomCls',
data: Dict[str, Any] = data,
modulename: str = 'lazycls', # your module name
basecls: Type[BaseModel] = BaseLazy # A custom Base Model class that is used to generate the model
) -> Type[BaseModel]:
"""
obj = lazycls.CustomCls
lazycls.CustomCls.x = ...
lazycls.CustomCls.y = ...
"""
Utilities
Some additional enhancements/utilities include:
-
set_modulename(name)- set the default module name - useful when included in other libs -
clear_lazy_models- clears all the currently created lazy models. Memory management -
classproperty- allows for usage of@classpropertywhich isn't available for Python < 3.9 -
BaseCls- A wrapper aroundBaseModelwith:arbitrary_types_allowed = True.get(name, default)function to retaindict-like properties
-
BaseLazy- Another wrapper aroundBaseModelwith:arbitrary_types_allowed = Trueextra = 'allow'alias_generator = to_camelcaseorjsonserializer by default.get(name, default)function to retaindict-like properties
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lazycls-0.1.15.tar.gz.
File metadata
- Download URL: lazycls-0.1.15.tar.gz
- Upload date:
- Size: 243.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0900a7dd0b51d5d320a41a6b6e15c162c71ed13bbf8950ae84581d35bca5694
|
|
| MD5 |
41b54c1a793c4613402893dc457ed031
|
|
| BLAKE2b-256 |
592e0bfd257dbf0894c5ecb247146842a0232ae8dca67c44b87488519a86b6e2
|
File details
Details for the file lazycls-0.1.15-py3-none-any.whl.
File metadata
- Download URL: lazycls-0.1.15-py3-none-any.whl
- Upload date:
- Size: 293.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de7cab079323ce8da46ee63d26f4d793fbceb6ccb9fae20c70d5303dcbf2dfb9
|
|
| MD5 |
52e6a983dc083554171899a8af6be73e
|
|
| BLAKE2b-256 |
c2e4bc2e4dd14732282674e106c9afa57f6c5cc551b2c62e89e06ca775208125
|