Skip to main content

Dictionary to Model

Project description

Dict2Model

alt_text

The library returns an object with defined attributes in types from an input dictionary, with optional rules about types and more.

The declaration for the object variables and their types uses annotations:

    number: int
    question: bool

The mapping between variable and path inside the input dictionary are inside the source variables, in this format: a string separated by '-' for each inner jump inside the dictionary For example:

    NUMBER_SOURCE = "data-number"           # == dict_input["data"]["number"]
    QUESTION_SOURCE = "data-question"       # == dict_input["data"]["question"]

The optional parameter are:

DISABLE_TYPE_EXCEPTIONS = True
DISABLE_PATH_EXCEPTIONS = True

Type exception indicate to stop the object creation if theirs an error in matching types. The second variable indicate to stop the object creation if a value don't exist in the source path. When disabled variables are true the problematic variables are set to None. The default is DISABLE_TYPE_EXCEPTIONS and DISABLE_PATH_EXCEPTIONS as False.

Full example:

class TestObj:
    number: int
    question: bool
    NUMBER_SOURCE = "data-number"
    QUESTION_SOURCE = "data-question"
    DISABLE_TYPE_EXCEPTIONS = True
    DISABLE_PATH_EXCEPTIONS = True

##Example:

pip install SpecialModel

from src.dict2model import Dict2Model


class TestObj:
    number: int
    question: bool

    NUMBER_SOURCE = "data-number"
    QUESTION_SOURCE = "data-question"
    DISABLE_TYPE_EXCEPTIONS = True
    DISABLE_PATH_EXCEPTIONS = True


dict_input_test = {
    "data": {
        "number": 123,
        "question": True
    }
}

factory = Dict2Model.Dict2Model(TestObj, dict_input_test)
test_obj: TestObj = factory.run()
print(test_obj.number, test_obj.question)
print(type(test_obj.number), type(test_obj.question))

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

Dict2Model-0.0.22.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Dict2Model-0.0.22-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file Dict2Model-0.0.22.tar.gz.

File metadata

  • Download URL: Dict2Model-0.0.22.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5

File hashes

Hashes for Dict2Model-0.0.22.tar.gz
Algorithm Hash digest
SHA256 3dfd21038aec1f092229bd94dfa8044ee0eccbdd38e8bfb723e3ad101af7fc8a
MD5 3054d713866528ea3a9131655973f1b5
BLAKE2b-256 b914a9fe29fb7c7faebca71aebe492724104e8816e5634b24eeddc753b5192ce

See more details on using hashes here.

File details

Details for the file Dict2Model-0.0.22-py3-none-any.whl.

File metadata

  • Download URL: Dict2Model-0.0.22-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5

File hashes

Hashes for Dict2Model-0.0.22-py3-none-any.whl
Algorithm Hash digest
SHA256 c16df26c2fe2e55eb30f9ee4b084df54b067ba4d4bb561c81ed45189af8bd285
MD5 43d9535039625b417d7cdf54462065a1
BLAKE2b-256 98fe786efe51fe5330d840dac14a94773546fda7939e3676398aba11b1965588

See more details on using hashes here.

Supported by

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