Python data serializer with type checking
Project description
DSerial
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
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.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size dserial-0.0.2.tar.gz (3.8 kB) | File type Source | Python version None | Upload date | Hashes View |