{"id":27578,"library":"adaptix","title":"Adaptix","description":"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.","status":"active","version":"3.0.0b12","language":"python","source_language":"en","source_url":"https://github.com/reagento/adaptix","tags":["serialization","conversion","dataclasses","pydantic","msgspec","sqlalchemy","model-conversion"],"install":[{"cmd":"pip install adaptix","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Optional: needed for Pydantic model support","package":"pydantic","optional":true},{"reason":"Optional: needed for msgspec model support","package":"msgspec","optional":true},{"reason":"Optional: needed for SQLAlchemy integration","package":"sqlalchemy","optional":true}],"imports":[{"wrong":"from adaptix import Recipe","symbol":"AdornedRetort","correct":"from adaptix import AdornedRetort"},{"symbol":"Loader","correct":"from adaptix import Loader"},{"symbol":"Dumper","correct":"from adaptix import Dumper"}],"quickstart":{"code":"from dataclasses import dataclass\nfrom adaptix import Recipe\nfrom adaptix.conversion import loader, dumper\n\n@dataclass\nclass User:\n    id: int\n    name: str\n\nrecipe = Recipe()\n\n# Load User from dict\ndata = {'id': 1, 'name': 'Alice'}\nload = recipe.ask(loader, User)\nuser = load(data)\nprint(user)\n\n# Dump User to dict\ndump = recipe.ask(dumper, User)\ndumped = dump(user)\nprint(dumped)","lang":"python","description":"Basic loader and dumper creation using Recipe for a dataclass."},"warnings":[{"fix":"Replace 'NoSuitableProvider' with 'ProviderNotFoundError' in your exception handlers.","message":"The '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.","severity":"deprecated","affected_versions":">=3.0.0b7"},{"fix":"Create a single Recipe at application startup and reuse it.","message":"Recipe 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.","severity":"gotcha","affected_versions":"all"},{"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.","message":"In 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.","severity":"breaking","affected_versions":">=3.0.0b9"},{"fix":"Upgrade to >=3.0.0b7 where Optional coercer redefinition is allowed.","message":"When 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.","severity":"gotcha","affected_versions":"<3.0.0b7"}],"env_vars":null,"search_vec":"'3.10':13 'activ':44 'adaptix':1 'allow':18 'base':37 'beta':45 'configur':6 'convers':9,22,51,58 'current':14 'data':7 'dataclass':27,52 'develop':46 'differ':24 'dump':20 'etc':31 'extrem':3 'flexibl':4 'frequent':48 'librari':10,41 'load':19 'model':8,25,57 'model-convers':56 'msgspec':29,54 'power':34 'provid':38 'pydant':28,53 'python':12 'recip':36 'recipe-bas':35 'releas':49 'serial':50 'sqlalchemi':30,55 'system':39 'type':26 'v3.0.0b12':16","created_at":"2026-05-09T05:50:58.194460+00:00","updated_at":"2026-05-09T05:50:58.194460+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/reagento/adaptix","docs":"https://adaptix.readthedocs.io/en/latest/","changelog":"https://adaptix.readthedocs.io/en/latest/reference/changelog.html","pypi":"https://pypi.org/project/adaptix/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["serialization","data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-08-02","install_tag":null}}