Skip to main content

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 @classproperty which isn't available for Python < 3.9

  • BaseCls - A wrapper around BaseModel with:

    • arbitrary_types_allowed = True
    • .get(name, default) function to retain dict-like properties
  • BaseLazy - Another wrapper around BaseModel with:

    • arbitrary_types_allowed = True
    • extra = 'allow'
    • alias_generator = to_camelcase
    • orjson serializer by default
    • .get(name, default) function to retain dict-like properties

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

lazycls-0.1.10.tar.gz (237.6 kB view details)

Uploaded Source

Built Distribution

lazycls-0.1.10-py3-none-any.whl (286.7 kB view details)

Uploaded Python 3

File details

Details for the file lazycls-0.1.10.tar.gz.

File metadata

  • Download URL: lazycls-0.1.10.tar.gz
  • Upload date:
  • Size: 237.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for lazycls-0.1.10.tar.gz
Algorithm Hash digest
SHA256 97bbc3700811c8f5415a621f91c37e4e6780b9dd1acda7b1796c642b4b62df1b
MD5 5e07a853c0b319862f1fad3ca1e754a3
BLAKE2b-256 fbad51ea16327aa22fce28abddf402ae5e2e5bfe1ad1d1c27995c777f2ebc434

See more details on using hashes here.

File details

Details for the file lazycls-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: lazycls-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 286.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for lazycls-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 54870bc71e3f8630f7e283af71426aa0b7591c2c7921e8a22d325700e9c21a55
MD5 08e59913d3969095ad67a9cc5672db9f
BLAKE2b-256 1077066f88ae953889e38b365646505d9fdc6ee343f112d887b6b5cf22f8b422

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