Dataclass Parser
Библиотека для удобного преобразования данных между Python dataclasses и другими форматами (JSON, ORM объекты и т.д.).
Основные возможности
- Автоматически преобразует данные в/из dataclass объектов
- Поддерживает вложенные структуры данных
- Обрабатывает сложные типы (UUID, Enum, Decimal, Path, datetime)
- Поддерживает Union и Optional типы
- Работает с коллекциями (list, set, tuple, dict)
- Предотвращает рекурсивные циклы в структурах данных
- Поддержка как синхронного, так и асинхронного API
Установка
pip install dataclass-parser
Использование
Синхронный API
from dataclass_parser import EntityBase
from dataclasses import dataclass
from datetime import datetime
@dataclass
class User(EntityBase):
id: int
name: str
created_at: datetime
# Загрузка данных
data = {"id": 1, "name": "John", "created_at": "2023-01-01T12:00:00"}
user = User.parse(data)
# Выгрузка данных
user_dict = user.serialize(exclude=['id']) # {"name": "John", "created_at": "2023-01-01T12:00:00"}
Асинхронный API
from dataclass_parser.async_parser import AEntityBase
from dataclasses import dataclass
from datetime import datetime
import asyncio
@dataclass
class User(AEntityBase):
id: int
name: str
created_at: datetime
async def main():
# Загрузка данных
data = {"id": 1, "name": "John", "created_at": "2023-01-01T12:00:00"}
user = await User.parse(data)
# Выгрузка данных
user_dict = await user.serialize()
print(user)
print(user_dict)
if __name__ == "__main__":
asyncio.run(main())
Поддерживаемые типы данных
Простые типы
- int, float, str, bool
- datetime, date, time
- UUID
- Decimal
- Path
- Enum
Сложные типы
- Вложенные dataclass объекты
- Optional/Union типы (включая None)
- Коллекции:
- list[T]
- set[T]
- tuple[T, ...]
- dict[K, V]
- Вложенные коллекции (например, list[list[int]])
Продвинутые возможности
Кастомная обработка типов
Библиотека позволяет расширять обработку типов данных с помощью кастомных обработчиков.
Обработка рекурсивных структур
Библиотека автоматически обрабатывает циклические ссылки и рекурсивные структуры, предотвращая бесконечные циклы.
Типизация
Полная поддержка аннотаций типов, что обеспечивает корректную работу статических анализаторов типов, таких как mypy.
Примеры
Для дополнительных примеров смотрите директорию dataclass_parser/examples/.
Лицензия
MIT License
Copyright (c) 2023 EnterNick
Подробности смотрите в файле LICENSE.
Metadata
Release files for dataclass-parser 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dataclass_parser-0.1.3.tar.gz | 11.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dataclass_parser-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.3 kB
Release files / dataclass_parser-0.1.3.tar.gz
| Download URL | dataclass_parser-0.1.3.tar.gz |
|---|---|
| Size | 11.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f326a2b34d8961d56805d3d1c26a83ba20a1258071ca1af850dfceef4ea1c7b3
|
|
BLAKE2b-256 checksum How to use checksums |
ce73c1d9b20ed9b7c48fcbe6564579802a8d83b628ec1e06aa2a8b2a2b1d91e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|
Release files / dataclass_parser-0.1.3-py3-none-any.whl
| Download URL | dataclass_parser-0.1.3-py3-none-any.whl |
|---|---|
| Size | 21.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c87f4f8decf9c39b858431254549c4fd31906ebef022e4a29386267cd024d4d0
|
|
BLAKE2b-256 checksum How to use checksums |
110ca232dcc2db6fed4d5028778257ffc81cf532068c6e575899809383e437f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|