Metadata-Version: 1.1
Name: jsonapi-orm
Version: 0.1.7
Summary: Quick and dirty ORM that maps JSON:API responses to object attributes.
Home-page: https://github.com/mislavcimpersak/jsonapi-orm
Author: Mislav Cimperšak
Author-email: mislav.cimpersak@gmail.com
License: BSD license
Description: ============
        JSON:API ORM
        ============
        
        
        .. image:: https://img.shields.io/pypi/v/jsonapi_orm.svg
                :target: https://pypi.python.org/pypi/jsonapi_orm
        
        .. image:: https://img.shields.io/travis/mislavcimpersak/jsonapi_orm.svg
                :target: https://travis-ci.org/mislavcimpersak/jsonapi_orm
        
        .. image:: https://readthedocs.org/projects/jsonapi-orm/badge/?version=latest
                :target: https://jsonapi-orm.readthedocs.io/en/latest/?badge=latest
                :alt: Documentation Status
        
        
        
        
        Quick and dirty ORM that maps JSON:API responses to object attributes.
        
        
        * Free software: BSD license
        * Documentation: https://jsonapi-orm.readthedocs.io.
        
        
        How To
        ------
        
        Use Requests_ or (if you are a masochist) Python's built-in urllib modules to make the request to your JSON:API service and from there pass the response to JSON:API ORM.
        
        So, first install requests and this lib:
        
        .. code-block:: bash
        
            pip install requests
            pip install jsonapi-orm
        
        Switch to your Python code and use the magic!
        
        .. code-block:: python
        
            import requests
            from jsonapi_orm import response_to_obj
        
        
            # list of items
            r = requests.get('https://raw.githubusercontent.com/mislavcimpersak/jsonapi-orm/master/tests/responses/example_list.json')
            obj = response_to_obj(r.json())
        
            print('LIST OF ITEMS:')
            for item in obj.data:
                print(item.title)
                # author is defined as a relationship
                print(item.author.twitter)
        
        
            # single item
            r = requests.get('https://raw.githubusercontent.com/mislavcimpersak/jsonapi-orm/master/tests/responses/example_single.json')
            obj = response_to_obj(r.json())
        
            print('SINGLE ITEM')
            print(obj.data.title)
            # author is defined as a relationship
            print(obj.data.author.id)
            print(obj.data.author.twitter)
        
        
        Caveats
        -------
        
        * Since Python object attribute names `have certain rules`__ like not starting with a number or not containing "-" char, all such attributes can be accessed using ``.get()`` method. Ie. ``obj.data.author.get('first-name')``.
        
        * If relationship is not described in more detail in the ``included`` part of the response matching fails silently.
        
        * For now, this lib does not lazily follow relationship links or anything like that. You can of course make a new request to the given link and pass that response to JSON:API ORM.
        
        * For now, there is no check if response is a valid JSON:API response. But you'll probably get that you are trying to parse an invalid response when things start to break.
        
        * And last, this lib requires Python 3.5 or newer.
        
        
        .. _Requests: http://docs.python-requests.org
        .. _rules: https://docs.python.org/3/reference/lexical_analysis.html#identifiers
        
        __ rules_
        
        
        =======
        History
        =======
        
        0.1.7 (2018-03-25)
        ------------------
        
        * Fixed pip install.
        
        0.1.6 (2018-03-25)
        ------------------
        
        * Readme fix for pypi.
        
        0.1.5 (2018-03-25)
        ------------------
        
        * Readme fix for pypi.
        
        0.1.4 (2018-03-25)
        ------------------
        
        * Readme examples using slighty modified examples from jsonapi.org which are located in this repo.
        
        0.1.3 (2018-03-25)
        ------------------
        
        * Fixed a bug when child data is non-existent.
        
        0.1.2 (2018-03-25)
        ------------------
        
        * Fixed a bug when included is not present in response.
        
        0.1.0 (2018-03-24)
        ------------------
        
        * First release on PyPI.
        
Keywords: jsonapi-orm
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
