Skip to main content

Parsing mixin which converts ``data class instance``, ``dict object``, ``json string`` and ``yaml string`` each other.

Project description

pypi Build Status Test Coverage Code Climate versions license

Parsing mixin which converts data class instance, dict object, json string and yaml string each other.

Motivation

Have you ever wanted to write robust code in Python? This library will make such your wishes come true.

Define your data class which is extend OwlMixin, you can use some useful methods which help your codes robust. See following Example and API sections.

Example

You don’t need to use typing necessarily, but I recommend to use this to make your codes more robust. See PEP 484 – Type Hints.

from typing import Text, Optional
from owlmixin import OwlMixin

class Food(OwlMixin):
    def __init__(self, id, name, color=None):
        self.id = id  # type: Text
        self.name = name  # type: Text
        self.color = color  # type: Optional[Text]

class Human(OwlMixin):
    def __init__(self, id, name, favorite):
        self.id = id  # type: Text
        self.name = name  # type: Text
        self.favorite = Food.from_dict2list(favorite)  # type: TList[Food]

jiro = Human.from_dict({
    "id": 10,
    "name": "jiro",
    "favorite": [
        {"id": 1, "name": "apple"},
        {"id": 2, "name": "orange", "color": "white"}
    ]
})

>>> jiro.id
10
>>> jiro.name
'jiro'
>>> print(jiro.favorite[0].to_pretty_json())
{
    "color": null,
    "id": 1,
    "name": "apple"
}
>>> print(jiro.to_dict())
{'favorite': [{'color': None, 'id': 1, 'name': 'apple'}, {'color': 'white', 'id': 2, 'name': 'orange'}], 'id': 10, 'name': 'jiro'}
>>> print(jiro.to_dict(ignore_none=True))
{'favorite': [{'id': 1, 'name': 'apple'}, {'color': 'white', 'id': 2, 'name': 'orange'}], 'id': 10, 'name': 'jiro'}

API

From instance to another

  • to_dict
    • instance => dict

    • TDict[instance] => dict

  • to_dicts
    • TList[instance] => List[dict]

  • to_json
    • instance => json string

  • to_pretty_json
    • instance => json string (has indent and line break)

  • to_yaml
    • instance => yaml string

From something to instance

  • from_dict [1] [2]
    • dict => instance

  • from_optional_dict [1] [2]
    • Optional[dict] => Optional[instance]

  • from_dicts [1] [2]
    • dict => TList[instance]

  • from_optional_dicts [1] [2]
    • Optional[dict] => Optional[instance]

  • from_dicts_by_key [1] [2]
    • dict => TDict[instance]

  • from_optional_dicts_by_key [1] [2]
    • Optional[dict] => Optional[instance]

  • from_json [1] [2]
    • json string => instance

  • from_json_url [1] [2]
    • url (which returns json) => instance

  • from_yaml [1] [2]
    • yaml string or file => instance

  • from_csv [1] [2] [3]
    • csv file => TList[instance]

Installation

pip install owlmixin

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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

owlmixin-1.0.0b6-py2.py3-none-any.whl (7.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page