py-dto 1.1.0

Last updated:

0 purchases

py-dto 1.1.0 Image
py-dto 1.1.0 Images
Add to Cart

Description:

pydto 1.1.0

Python DTO





Data Transfer Objects (DTO) with Python.
Install
pip install py_dto

Usage
Define the object properties with types defined, then pass a dict with data.
Basic example
For type hinting
from py_dto import DTO

# This DTO will be used as a type definition
class UserProfile(DTO):
avatar: str

# The DTO with the properties defined
class User(DTO):
profile: UserProfile
name: str
email: str
age: int
tags: list[str]

# Create the DTO instance
user = User({
'profile': UserProfile({'avatar': 'https://i.pravatar.cc/300'}),
'name': 'John',
'email': '[email protected]',
'age': 42,
'tags': ['developer', 'python']
})

print(user.name) # 'John'
print(user.profile.avatar) # https://i.pravatar.cc/300

The Any type
Even DTO are supposed to specify data types, you can use the Any type to accept literally any type for a property:
from py_dto import DTO
from typing import Any

# The DTO accepts "any" type of data for the "name" property
class User(DTO):
name: Any

# Create the DTO instance
user = User({
'name': 'John',
})

print(user.name) # 'John'

user = User({
'name': 123,
})

print(user.name) # 123

Dealing with None
Imagine you are retrieving data from a database table where a column is empty for some records.
By using python's Optional type on a specific property, the DTO will not raise an exception if a None value is set.
from py_dto import DTO
from typing import Optional

# The DTO "name" property can be a str or a None value
class User(DTO):
name: Optional[str]

# Create the DTO instance with a "str"
user = User({
'name': 'John',
})

print(user.name) # 'John'

# Create the DTO instance with a "None"
user = User({
'name': None,
})

print(user.name) # None

# Any other type will raise an exception
try:
user = User({
'name': 123,
})
except:
print('123 does not have a "str" nor a "None" type')

License
This project is open-sourced software licensed under the MIT license.
Original idea comes from spatie/data-transfer-object package for PHP.
Icons made by Pixel perfect from www.flaticon.com

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.