Skip to main content

Python data serializer with type checking

Project description

DSerial

PyPI version

0. Introduction

DSerial is dictionary serializer with type checking methodology by declared type hinting

1. Requirements

python 3.7 +

2. Quick start

2.0. Installation

pip3 install dserial

2.1. Default type

{
  "int_variable": 1234,
  "string_variable": "string_value"
}

For serialize above dictionary, data class can be below code

class DefaultData(TypeCheckingDictSerializer):
    int_variable: int
    string_variable: str

and usage:

>>> dictionary = {
  'int_variable': 1234,
  'string_variable': 'string_value'
}
>>> data = DefaultData(dictionary)
>>> data.int_variable
1234
>>> data.string_variable
string_value

2.2. Nested type

{
  "int_variable": 1234,
  "string_variable": "string_value",
  "nested": {
    "int_variable": 4321
  }
}

For serialize above dictionary, data class can be below code

class NestedData(TypeCheckingDictSerializer):
    int_variable: int

class DefaultData(TypeCheckingDictSerializer):
    int_variable: int
    string_variable: str
    nested: NestedData

and usage:

>>> dictionary = {
    'int_variable': 1234,
    'string_variable': 'string_value',
    'nested': {
        'int_variable': 4321
    }
}
>>> data = DefaultData(dictionary)
>>> data.int_variable
1234
>>> data.string_variable
string_value
>>> data.nested.int_variable
4321

2.3. Repeated type

{
  "int_variable": 1234,
  "string_variable": "string_value",
  "nested": {
    "int_variable": 4321
  },
  "repeated": [1, 2, 3]
}

For serialize above dictionary, data class can be below code

class RepeatedData(TypeAnnotatedList):
    @staticmethod
    def get_type():
        return int

class NestedData(TypeCheckingDictSerializer):
    int_variable: int

class DefaultData(TypeCheckingDictSerializer):
    int_variable: int
    string_variable: str
    nested: NestedData
    repeated: RepeatedData

and usage:

>>> dictionary = {
    'int_variable': 1234,
    'string_variable': 'string_value',
    'nested': {
        'int_variable': 4321
    },
    'repeated': [1, 2, 3]
}
>>> data = DefaultData(dictionary)
>>> data.int_variable
1234
>>> data.string_variable
string_value
>>> data.nested.int_variable
4321
>>> len(data.repeated)
3
>>> data.repeated[0]
1

2.4. More complex

{
  "int_variable": 1234,
  "string_variable": "string_value",
  "repeated_nested": [{
    "int_variable": 3133
  }, {
    "int_variable": 1337
  }]
}

For serialize above dictionary, data class can be below code

class NestedData(TypeCheckingDictSerializer):
    int_variable: int

class RepeatedData(TypeAnnotatedList):
    @staticmethod
    def get_type():
        return NestedData

class DefaultData(TypeCheckingDictSerializer):
    int_variable: int
    string_variable: str
    repeated_nested: RepeatedData

and usage:

>>> dictionary = {
    'int_variable': 1234,
    'string_variable': 'string_value',
    'repeated_nested': [{
        'int_variable': 3133
    }, {
        'int_variable': 1337
    }]
}
>>> data = DefaultData(dictionary)
>>> data.int_variable
1234
>>> data.string_variable
string_value
>>> len(data.repeated_nested)
3
>>> data.repeated[0].int_variable
3133

3. Test

> dserial$ python3 -m tests

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

dserial-0.0.1.tar.gz (3.8 kB view details)

Uploaded Source

File details

Details for the file dserial-0.0.1.tar.gz.

File metadata

  • Download URL: dserial-0.0.1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.3

File hashes

Hashes for dserial-0.0.1.tar.gz
Algorithm Hash digest
SHA256 0169d3654d3dad73e8cb8e15d8dd95995de665f8e9da26bf8a3d48d8cbc048cd
MD5 0d6fc3e7bea1ca355b74bc07e828f8d1
BLAKE2b-256 f84a65dc5fd6b7392523a41470475fe5e003ba47bad0f5ecb3a500fbcc4566a8

See more details on using hashes here.

Supported by

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