Skip to main content

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)

Source distribution for dataclass-parser 0.1.3
File Size Uploaded
dataclass_parser-0.1.3.tar.gz 11.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dataclass-parser 0.1.3
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page