JSON API driven by aiohttp
Project description
=======================================
`JSON API`_ implementation for aiohttp_
=======================================
.. image:: https://img.shields.io/pypi/v/aiohttp_json_api.svg
:target: https://pypi.python.org/pypi/aiohttp_json_api
.. image:: https://img.shields.io/travis/vovanbo/aiohttp_json_api.svg
:target: https://travis-ci.org/vovanbo/aiohttp_json_api
.. image:: https://readthedocs.org/projects/aiohttp-json-api/badge/?version=latest
:target: https://aiohttp-json-api.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/shield.svg
:target: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/
:alt: Updates
Introduction
------------
This project heavily inspired by py-jsonapi_ (author is `Benedikt Schmitt`_).
Some parts of this project is improved and refactored dev-schema_ branch
of **py-jsonapi**. At beginning of aiohttp-json-api_ this branch
was a great, but not finished implementation of JSON API with
*schema controllers*. Also, py-jsonapi_ is not asynchronous and use inside
self-implemented Request/Response classes.
Some of base entities of **py-jsonapi** was replaced with **aiohttp**
server's objects, some of it was divided into new separate entities
(e.g. :class:`.context.RequestContext` or :class:`.registry.Registry`).
* Free software: MIT license
* Documentation: https://aiohttp-json-api.readthedocs.io
Requirements
------------
* **Python 3.5** or newer
* aiohttp_
* inflection_
* jsonpointer_
* dateutil_
* trafaret_
Todo
----
* Documentation
* Tests
* Example application
* Features description
* Customizable payload keys inflection (default is `dasherize` <-> `underscore`)
* Support for JSON API extensions (bulk creation etc.)
Credits
-------
This package was created with Cookiecutter_ and the
`cookiecutter-pypackage`_ project template.
.. _aiohttp-json-api: https://github.com/vovanbo/aiohttp_json_api
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage
.. _JSON API: http://jsonapi.org
.. _aiohttp: http://aiohttp.readthedocs.io/en/stable/
.. _py-jsonapi: https://github.com/benediktschmitt/py-jsonapi
.. _dev-schema: https://github.com/benediktschmitt/py-jsonapi/tree/dev-schema
.. _`Benedikt Schmitt`: https://github.com/benediktschmitt
.. _inflection: https://inflection.readthedocs.io/en/latest/
.. _jsonpointer: https://python-json-pointer.readthedocs.io/en/latest/index.html
.. _dateutil: https://dateutil.readthedocs.io/en/stable/
.. _trafaret: http://trafaret.readthedocs.io/en/latest/
=======
History
=======
0.10.0 (2017-07-10)
-------------------
* Mass refactoring of schema, fields, validation and decorators
* Generic approach to setup Schema decorators is used (inspired by Marshmallow)
* Fields are used only for encode/decode now (with pre/post validation). Additional validators for fields must be created on schema level
* Custom JSON encoder with support JSONPointer serialization
* Remove boltons from requirements
* No more remap input data dictionary with key names to underscores conversion.
* Add helpers "first" and "make_sentinel" (cherry-picked from boltons)
* Fix enumeration (choices) support in String field
0.9.3 (2017-07-06)
------------------
* Setup content-type validation on mutation API methods (application/vnd.api+json is required)
* Properly get and encode relationships fields
* Update docs and typing for ensure_identifier Registry's method
0.9.2 (2017-07-06)
------------------
* Fix bugs related to Python 3.5
* Generation of documentation on RTD is fixed
0.9.1 (2017-07-06)
------------------
* Python 3.5 compatibility changes
0.9.0 (2017-07-06)
------------------
* Handle aiohttp-json-api exceptions and errors in middleware. If exceptions is not related to JSON API errors, then exception is reraised
* Huge refactoring of RequestContext
* No more use of boltons cachedproperties, instead use parsing static methods related to each request context' entity
* Update docs for RequestContext methods
* Add typings to RequestContext
0.8.2 (2017-07-05)
------------------
* Properly handle error with wrong relation name (raise HTTP 400)
0.8.1 (2017-07-05)
------------------
* Fix bdist_wheel python tag to support Python 3.5
0.8.0 (2017-07-05)
------------------
* Python 3.5 support (avoid usage of Python 3.6 format strings)
* Registry is plain object now
* Custom Registry support (`registry_class` parameter in ``aiohttp_json_api.setup_jsonapi`` method)
* Log debugging information at start about registered resources, methods and routes
* Use OrderedDict inside SchemaMeta
0.7.2 (2017-07-04)
------------------
* Fix bug with JSONPointer when part passed via __truediv__ is integer
* Validate relationship object before adding relationship in ToMany field
0.7.1 (2017-07-04)
------------------
* Fix bugs with validation of resource identifier in relationships fields
* Add typings for base fields
0.7.0 (2017-07-03)
------------------
* Setup of JSON API must be imported from package directly
* Fix bugs with decode fields and allow None values
0.6.2 (2017-06-29)
------------------
* Update HISTORY
0.6.1 (2017-06-29)
------------------
* Fix bug with Enum choices of String field
0.6.0 (2017-06-29)
------------------
* Return resource in update method of Schema class. This will be helpful in inherit classes of Schemas.
0.5.5 (2017-06-15)
------------------
* Setup auto-deploy to PyPI in Travis CI
0.5.4 (2017-06-15)
------------------
* Initial release on PyPI
0.5.3 (2017-06-14)
------------------
* Improve documentation
0.5.0 (2017-06-14)
------------------
* Don't use attrs_ package anymore
* Refactor requirements (move it into `setup.py`)
0.4.0 (2017-06-13)
------------------
* Schema imports refactoring (e.g. don't use ``aiohttp_json_api.schema.schema.Schema`` anymore)
0.3.0 (2017-06-13)
------------------
* Upgrade requirements
0.2.0 (2017-05-26)
------------------
* Fix setup.py
* Add test for Decimal trafaret field
0.1.1 (2017-05-26)
------------------
* Dirty initial version
.. _attrs: http://www.attrs.org/en/stable/
`JSON API`_ implementation for aiohttp_
=======================================
.. image:: https://img.shields.io/pypi/v/aiohttp_json_api.svg
:target: https://pypi.python.org/pypi/aiohttp_json_api
.. image:: https://img.shields.io/travis/vovanbo/aiohttp_json_api.svg
:target: https://travis-ci.org/vovanbo/aiohttp_json_api
.. image:: https://readthedocs.org/projects/aiohttp-json-api/badge/?version=latest
:target: https://aiohttp-json-api.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/shield.svg
:target: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/
:alt: Updates
Introduction
------------
This project heavily inspired by py-jsonapi_ (author is `Benedikt Schmitt`_).
Some parts of this project is improved and refactored dev-schema_ branch
of **py-jsonapi**. At beginning of aiohttp-json-api_ this branch
was a great, but not finished implementation of JSON API with
*schema controllers*. Also, py-jsonapi_ is not asynchronous and use inside
self-implemented Request/Response classes.
Some of base entities of **py-jsonapi** was replaced with **aiohttp**
server's objects, some of it was divided into new separate entities
(e.g. :class:`.context.RequestContext` or :class:`.registry.Registry`).
* Free software: MIT license
* Documentation: https://aiohttp-json-api.readthedocs.io
Requirements
------------
* **Python 3.5** or newer
* aiohttp_
* inflection_
* jsonpointer_
* dateutil_
* trafaret_
Todo
----
* Documentation
* Tests
* Example application
* Features description
* Customizable payload keys inflection (default is `dasherize` <-> `underscore`)
* Support for JSON API extensions (bulk creation etc.)
Credits
-------
This package was created with Cookiecutter_ and the
`cookiecutter-pypackage`_ project template.
.. _aiohttp-json-api: https://github.com/vovanbo/aiohttp_json_api
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage
.. _JSON API: http://jsonapi.org
.. _aiohttp: http://aiohttp.readthedocs.io/en/stable/
.. _py-jsonapi: https://github.com/benediktschmitt/py-jsonapi
.. _dev-schema: https://github.com/benediktschmitt/py-jsonapi/tree/dev-schema
.. _`Benedikt Schmitt`: https://github.com/benediktschmitt
.. _inflection: https://inflection.readthedocs.io/en/latest/
.. _jsonpointer: https://python-json-pointer.readthedocs.io/en/latest/index.html
.. _dateutil: https://dateutil.readthedocs.io/en/stable/
.. _trafaret: http://trafaret.readthedocs.io/en/latest/
=======
History
=======
0.10.0 (2017-07-10)
-------------------
* Mass refactoring of schema, fields, validation and decorators
* Generic approach to setup Schema decorators is used (inspired by Marshmallow)
* Fields are used only for encode/decode now (with pre/post validation). Additional validators for fields must be created on schema level
* Custom JSON encoder with support JSONPointer serialization
* Remove boltons from requirements
* No more remap input data dictionary with key names to underscores conversion.
* Add helpers "first" and "make_sentinel" (cherry-picked from boltons)
* Fix enumeration (choices) support in String field
0.9.3 (2017-07-06)
------------------
* Setup content-type validation on mutation API methods (application/vnd.api+json is required)
* Properly get and encode relationships fields
* Update docs and typing for ensure_identifier Registry's method
0.9.2 (2017-07-06)
------------------
* Fix bugs related to Python 3.5
* Generation of documentation on RTD is fixed
0.9.1 (2017-07-06)
------------------
* Python 3.5 compatibility changes
0.9.0 (2017-07-06)
------------------
* Handle aiohttp-json-api exceptions and errors in middleware. If exceptions is not related to JSON API errors, then exception is reraised
* Huge refactoring of RequestContext
* No more use of boltons cachedproperties, instead use parsing static methods related to each request context' entity
* Update docs for RequestContext methods
* Add typings to RequestContext
0.8.2 (2017-07-05)
------------------
* Properly handle error with wrong relation name (raise HTTP 400)
0.8.1 (2017-07-05)
------------------
* Fix bdist_wheel python tag to support Python 3.5
0.8.0 (2017-07-05)
------------------
* Python 3.5 support (avoid usage of Python 3.6 format strings)
* Registry is plain object now
* Custom Registry support (`registry_class` parameter in ``aiohttp_json_api.setup_jsonapi`` method)
* Log debugging information at start about registered resources, methods and routes
* Use OrderedDict inside SchemaMeta
0.7.2 (2017-07-04)
------------------
* Fix bug with JSONPointer when part passed via __truediv__ is integer
* Validate relationship object before adding relationship in ToMany field
0.7.1 (2017-07-04)
------------------
* Fix bugs with validation of resource identifier in relationships fields
* Add typings for base fields
0.7.0 (2017-07-03)
------------------
* Setup of JSON API must be imported from package directly
* Fix bugs with decode fields and allow None values
0.6.2 (2017-06-29)
------------------
* Update HISTORY
0.6.1 (2017-06-29)
------------------
* Fix bug with Enum choices of String field
0.6.0 (2017-06-29)
------------------
* Return resource in update method of Schema class. This will be helpful in inherit classes of Schemas.
0.5.5 (2017-06-15)
------------------
* Setup auto-deploy to PyPI in Travis CI
0.5.4 (2017-06-15)
------------------
* Initial release on PyPI
0.5.3 (2017-06-14)
------------------
* Improve documentation
0.5.0 (2017-06-14)
------------------
* Don't use attrs_ package anymore
* Refactor requirements (move it into `setup.py`)
0.4.0 (2017-06-13)
------------------
* Schema imports refactoring (e.g. don't use ``aiohttp_json_api.schema.schema.Schema`` anymore)
0.3.0 (2017-06-13)
------------------
* Upgrade requirements
0.2.0 (2017-05-26)
------------------
* Fix setup.py
* Add test for Decimal trafaret field
0.1.1 (2017-05-26)
------------------
* Dirty initial version
.. _attrs: http://www.attrs.org/en/stable/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiohttp_json_api-0.10.0.tar.gz
(47.9 kB
view details)
Built Distribution
File details
Details for the file aiohttp_json_api-0.10.0.tar.gz
.
File metadata
- Download URL: aiohttp_json_api-0.10.0.tar.gz
- Upload date:
- Size: 47.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c18930b6d6c7e84a95d9bbe722c70afe632c8d69e6eb16df9edf31b4f34c495 |
|
MD5 | f2540f8fbaa2dd0da0856c54ab7b1142 |
|
BLAKE2b-256 | b60fad2a0e614f9ae00a0d75f8be4e24112c44d8fc1c354aa0fe04be8412528a |
File details
Details for the file aiohttp_json_api-0.10.0-py35.py36-none-any.whl
.
File metadata
- Download URL: aiohttp_json_api-0.10.0-py35.py36-none-any.whl
- Upload date:
- Size: 47.0 kB
- Tags: Python 3.5, Python 3.6
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47a05e2001d4f2cd72ccc7ad5cf88047c9cc9bab0daeb277c8fd0014f27cc5c5 |
|
MD5 | a880bd765968cd3a4f74b0e7c092c876 |
|
BLAKE2b-256 | ee088d184c144dc2f526ac3b8e2d16c8a3508e6bab341828f33cdc44b9741cbf |