Registry / serialization / adaptix

adaptix

JSON →
library3.0.0b12pypypi✓ verified 79d ago

An extremely flexible and configurable data model conversion library for Python 3.10+, currently at v3.0.0b12. It allows loading, dumping, and conversion between different model types (dataclasses, pydantic, msgspec, SQLAlchemy, etc.) with a powerful recipe-based provider system. The library is in active beta development with frequent releases.

pip install adaptix
INSTALL
IMPORT
SIG · ADAPTIX
A
adaptix
serializationpythonv3.0.0b12
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

AdornedRetort
from adaptix import AdornedRetort
from adaptix import Recipe
Loader
from adaptix import Loader
Dumper
from adaptix import Dumper

Basic loader and dumper creation using Recipe for a dataclass.

from dataclasses import dataclass from adaptix import Recipe from adaptix.conversion import loader, dumper @dataclass class User: id: int name: str recipe = Recipe() # Load User from dict data = {'id': 1, 'name': 'Alice'} load = recipe.ask(loader, User) user = load(data) print(user) # Dump User to dict dump = recipe.ask(dumper, User) dumped = dump(user) print(dumped)
Debug
Known issues
deprecatedThe 'NoSuitableProvider' exception was renamed to 'ProviderNotFoundError' in v3.0.0b7. The old name is still available as an alias but will be removed in a future version.
fix
Replace 'NoSuitableProvider' with 'ProviderNotFoundError' in your exception handlers.
affects: >=3.0.0b7
gotchaRecipe is immutable and expensive to create. Do not create a new Recipe for every conversion call; reuse the same Recipe instance for the same set of types.
fix
Create a single Recipe at application startup and reuse it.
affects: all
breakingIn v3.0.0b9, all iterables are now dumped to tuple (or list for list children). Previously, some iterables were dumped as generators or other types.
fix
If you rely on the dumped type being a specific iterable (e.g., set), you must add a custom coercer or post-process the output.
affects: >=3.0.0b9
gotchaWhen working with Optional types, a coercer defined for the inner type may not be applied if the destination type is exactly Optional[InnerType]. Use the special handling for Optional.
fix
Upgrade to >=3.0.0b7 where Optional coercer redefinition is allowed.
affects: <3.0.0b7
Upgrade
Version history
3.0.0b12latest on PyPI · released Apr 4, 2026
Audit
Dependencies
pydanticoptionalOptional: needed for Pydantic model support
msgspecoptionalOptional: needed for msgspec model support
sqlalchemyoptionalOptional: needed for SQLAlchemy integration
Agent activity
67 hits · last 30 days
node
58
OpenAI (training)
1
Resources
adaptix — pip install adaptix · libregistry