Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/panagiks/yaab
Yet Another Adapter Base
https://github.com/panagiks/yaab
adapter-pattern dataclasses development mixins python3
Last synced: 4 months ago
JSON representation
Yet Another Adapter Base
- Host: GitHub
- URL: https://github.com/panagiks/yaab
- Owner: panagiks
- License: mit
- Created: 2020-01-20T23:05:22.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-26T21:00:44.000Z (about 2 years ago)
- Last Synced: 2024-10-06T13:17:50.389Z (4 months ago)
- Topics: adapter-pattern, dataclasses, development, mixins, python3
- Language: Python
- Size: 37.1 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.rst
- Changelog: HISTORY.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE
Awesome Lists containing this project
README
========================
Yet Another Adapter Base
========================.. image:: https://img.shields.io/pypi/v/yaab.svg
:target: https://pypi.python.org/pypi/yaab.. image:: https://img.shields.io/travis/panagiks/yaab.svg
:target: https://travis-ci.org/panagiks/yaab.. image:: https://pepy.tech/badge/yaab
:target: https://pepy.tech/project/yaab.. image:: https://readthedocs.org/projects/yaab/badge/?version=latest
:target: https://yaab.readthedocs.io/en/latest/?badge=latest
:alt: Documentation StatusYAAB aims to provide a flexible base for Adapter Design Pattern implementations based on dataclasses.
* Free software: MIT license
* Documentation: https://yaab.readthedocs.io.Example Usage
-------------Let's assume that you are interfacing an API that returns a `JSON` object with the following structure:
.. code-block:: json
{
"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:
.. code-block:: json
{
"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.
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage