Skip to content
/ ciri Public

Python Object Serialization

License

Notifications You must be signed in to change notification settings

ericb/ciri

Folders and files

NameName
Last commit message
Last commit date
Feb 11, 2021
May 22, 2020
May 21, 2020
Feb 11, 2021
May 22, 2020
Feb 11, 2021
Mar 1, 2018
Mar 2, 2018
May 22, 2020
May 22, 2020
May 22, 2020
May 22, 2020

Repository files navigation

Ciri

Ciri helps you build schema definitions for your application; giving you a foundation to perform validation, serialization and encoding.

Features

  • Python 3/2 support
  • Serialize data to basic Python types
  • Deserialize data back to schema objects
  • Schema encoding
  • Polymorphic schemas
  • Composable Fields
  • Controllable error handling
  • Pre/post processors available on fields
  • Simple API

Install

$ pip install ciri

Documentation

Documentation can be found at http://ciri.hellouser.net/ .

Example

import datetime

from ciri import fields, Schema, ValidationError


class Actor(Schema):

    first_name = fields.String()
    last_name = fields.String()


class Movie(Schema):

    title = fields.String()
    released = fields.Date()
    cast = fields.List(Actor())


movie = Movie()
output = movie.serialize({'title': 'Good Will Hunting',
                           'released': datetime.date(1998, 1, 9),
                           'cast': [
                               {'first_name': 'Matt', 'last_name': 'Damon'},
                               {'first_name': 'Ben', 'last_name': 'Affleck'},
                               {'first_name': 'Robin', 'last_name': 'Williams'}
                           ]})

# output:
# {'cast': [{'last_name': 'Damon', 'first_name': 'Matt'},
#           {'last_name': 'Affleck', 'first_name': 'Ben'},
#           {'last_name': 'Williams', 'first_name': 'Robin'}],
#  'released': '1998-01-09',
#  'title': 'Good Will Hunting'}