Yet Another Adapter Base

https://img.shields.io/pypi/v/yaab.svg https://img.shields.io/travis/panagiks/yaab.svg Documentation Status

YAAB aims to provide a flexible base for Adapter Design Pattern implementations based on dataclasses.

Example Usage

Let’s assume that you are interfacing an API that returns a JSON object with the following structure:

{
    "weird_name": "My name",
    "oid": "3"
}

And you would like to transform it into a schema that fits the rest of your API, let’s assume:

{
    "name": "My name",
    "id": 3
}

Then you would define and use your model in the following way:

>>> from dataclasses import asdict, dataclass, field
>>>
>>> from yaab.adapter import BaseAdapter
>>>
>>> @dataclass
... class MyModel(BaseAdapter):
...     id: int = field(metadata={"transformations": ("oid", int)})
...     name: str = field(metadata={"transformations": ("weird_name", )})
...
>>> m = MyModel.from_dict({"weird_name": "My name", "oid": "3"})
>>> print(m)
MyModel(id=3, name='My name')
>>> asdict(m)
{'id': 3, 'name': 'My name'}

Features

  • TODO

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.