This release is a pre-release and may not be stable for production use.
An extremely flexible and configurable data model conversion library.
TL;DR
Install
pip install adaptix==3.0.0b12
Use for model loading and dumping.
from dataclasses import dataclass
from adaptix import Retort
@dataclass
class Book:
title: str
price: int
data = {
"title": "Fahrenheit 451",
"price": 100,
}
# Retort is meant to be global constant or just one-time created
retort = Retort()
book = retort.load(data, Book)
assert book == Book(title="Fahrenheit 451", price=100)
assert retort.dump(book) == data
Use for converting one model to another.
from dataclasses import dataclass
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from adaptix.conversion import get_converter
class Base(DeclarativeBase):
pass
class Book(Base):
__tablename__ = 'books'
id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str]
price: Mapped[int]
@dataclass
class BookDTO:
id: int
title: str
price: int
convert_book_to_dto = get_converter(Book, BookDTO)
assert (
convert_book_to_dto(Book(id=183, title="Fahrenheit 451", price=100))
==
BookDTO(id=183, title="Fahrenheit 451", price=100)
)
Use cases
- Validation and transformation of received data for your API.
- Conversion between data models and DTOs.
- Config loading/dumping via codec that produces/takes dict.
- Storing JSON in a database and representing it as a model inside the application code.
- Creating API clients that convert a model to JSON sending to the server.
- Persisting entities at cache storage.
- Implementing fast and primitive ORM.
Advantages
- Sane defaults for JSON processing, no configuration is needed for simple cases.
- Separated model definition and rules of conversion that allow preserving SRP and have different representations for one model.
- Speed. It is one of the fastest data parsing and serialization libraries.
- There is no forced model representation, adaptix can adjust to your needs.
- Support dozens of types,
including different model kinds:
@dataclass,TypedDict,NamedTuple,attrs,sqlalchemy,pydanticandmsgspec. - Working with self-referenced data types (such as linked lists or trees).
- Saving path where an exception is raised (including unexpected errors).
- Machine-readable errors that could be dumped.
- Support for user-defined generic models.
- Automatic name style conversion (e.g.
snake_casetocamelCase). - Predicate system that allows to concisely and precisely override some behavior.
- Disabling additional checks to speed up data loading from trusted sources.
- No auto casting by default. The loader does not try to guess value from plenty of input formats.
Metadata
Release files for adaptix 3.0.0b12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| adaptix-3.0.0b12.tar.gz | 128.6 kB | Without provenance | Details for adaptix-3.0.0b12.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| adaptix-3.0.0b12-py3-none-any.whl | Python 3 | none | any | Details for adaptix-3.0.0b12-py3-none-any.whl |
Total release size: 317.3 kB
Release files / adaptix-3.0.0b12.tar.gz
| Download URL | adaptix-3.0.0b12.tar.gz |
|---|---|
| Size | 128.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
906053a39ff509f0aa4ca9faa07dffa205bd90fa41d9774cd849d3454565b0ea
|
|
BLAKE2b-256 checksum How to use checksums |
5d82aa17eb2968cf7c78caf4915ca62397214f196dc1bef07e4d81bfb4c4abc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.1
|
Release files / adaptix-3.0.0b12-py3-none-any.whl
| Download URL | adaptix-3.0.0b12-py3-none-any.whl |
|---|---|
| Size | 188.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8156f0549b96fcd193d13efca7bfbda39b3d6389085556d930e204c09f9ae6ed
|
|
BLAKE2b-256 checksum How to use checksums |
1166abcca849b17e4a3adf5116e58c51471f37264a190cee2c67f1ba57782a7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.1
|
Security for adaptix 3.0.0b12
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.