skip to navigation
skip to content

lion 0.1.1

Fast and flexible object mapping (serialization, marshalling)

.. sourcecode :: python

Lion is a very flexible yet fast library for mapping objects to
dictionaries. It uses a declarative API and supports a query language
similar to GraphQL. Unlike other serialization libraries it also
allows to skip entire fields instead of having a ``null`` value
in the dictionary.

It is inspired by libraries like serpy_, marshmallow_,
`Django REST Framework`_ and Kim_.


import lion

class UserMapper(lion.Mapper):
id = lion.UUIDField()
email = lion.StrField(condition=lion.skip_empty)
first_name = lion.StrField()
last_name = lion.StrField()

user = User(

# Dump all fields to a dictionary
assert UserMapper().dump(user) == {
'id': 'ad94d0e8-2526-4d9b-ad76-0fbffcf41033',
'email': '',
'first_name': 'John',
'last_name': 'Doe'

# Dump a subset of fields
assert UserMapper('{id,email}').dump(user) == {
'id': 'ad94d0e8-2526-4d9b-ad76-0fbffcf41033',
'email': ''

The query language also supports subfields::


The performance is somewhat slower than serpy_ but still far ahead of
marshmallow_ and `Django REST Framework`_

Right now only ``dumping`` (aka. serialization, marshalling) is supported
but future versions will also introduce ``loading`` (aka. deserialization,
unmarshalling) of data.

.. _serpy:
.. _marshmallow:
.. _Kim:
.. _`Django REST Framework`:
File Type Py Version Uploaded on Size
lion-0.1.1-py3-none-any.whl (md5) Python Wheel 3.6 2017-11-14 7KB
lion-0.1.1.tar.gz (md5) Source 2017-11-14 5KB