JavaScript Resource Notation for Python
Project description
A JSON based notation for resources that can be easily converted into object graphs.
Highlights
Class based declarative style
Support for all JSON primitive types (including JavaScript Date)
Fields for building composite resources
Field and Resource level validation
Easy extension to support custom fields
Python 2.7+ and Python 3.3+ supported
Quick links
Upcoming features
In development
Customisable generation of documentation of resources (for integration into Sphinx)
Complete documentation (around 70-80% complete for current features)
Planning
Integration with other libraries (ie Django Models/Forms)
Requires
six
Optional
jinja2 >= 2.7 - For documentation generation
simplejson - Performance improvements
Example
With definition:
import jsrn class Author(jsrn.Resource): name = jsrn.StringField() class Publisher(jsrn.Resource): name = jsrn.StringField() class Book(jsrn.Resource): title = jsrn.StringField() authors = jsrn.ArrayOf(Author) publisher = jsrn.ObjectAs(Publisher) genre = jsrn.StringField() num_pages = jsrn.IntegerField()
>>> b = Book( title="Consider Phlebas", genre="Space Opera", publisher=Publisher(name="Macmillan"), num_pages=471 ) >>> b.authors.append(Author(name="Iain M. Banks")) >>> jsrn.dumps(b, pretty_print=True) { "$": "Book", "authors": [ { "$": "Author", "name": "Iain M. Banks" } ], "genre": "Space Opera", "num_pages": 471, "publisher": { "$": "Publisher", "name": "Macmillan" }, "title": "Consider Phlebas" }
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.