Automatic object YAML mapping for Python.
Project description
YORM
YORM provides functions and decorators to enable automatic, bidirectional, and human-friendly mappings of Python object attributes to YAML files.
Uses beyond typical object serialization and object mapping include:
automatic bidirectional conversion of attributes types
attribute creation and type inference for new attributes
storage of content in text files optimized for version control
custom converters to map complex classes to JSON-compatible types
Getting Started
Requirements
Python 3.3+
Installation
YORM can be installed with pip:
$ pip install YORM
Or directly from the source code:
$ git clone https://github.com/jacebrowning/yorm.git $ cd yorm $ python setup.py install
Basic Usage
Simply take an existing class:
class Student:
def __init__(self, name, school, number, year=2009):
self.name = name
self.school = school
self.number = number
self.year = year
self.gpa = 0.0
and define an attribute mapping:
from yorm import store_instances, map_attr
from yorm.standard import String, Integer, Float
@map_attr(name=String, year=Integer, gpa=Float)
@store_instances("students/{self.school}/{self.number}.yml")
class Student: ...
Modifications to an object’s mapped attributes:
>>> s1 = Student("John Doe", "GVSU", 123)
>>> s2 = Student("Jane Doe", "GVSU", 456, year=2014)
>>> s1.gpa = 3
are automatically reflected on the filesytem:
$ cat students/GVSU/123.yml
name: John Doe
gpa: 3.0
school: GVSU
year: 2009
Modifications and new content in the mapped file:
$ echo "name: John Doe
> gpa: 1.8
> year: 2010
> expelled: true
" > students/GVSU/123.yml
are automatically reflected in the objects:
>>> s1.gpa
1.8
>>> s1.expelled
True
For Contributors
Requirements
GNU Make:
Windows: http://cygwin.com/install.html
Linux: http://www.gnu.org/software/make (likely already installed)
virtualenv: https://pypi-hypernode.com/pypi/virtualenv#installation
Graphviz: http://www.graphviz.org/Download.php
Installation
Create a virtualenv:
$ make env
Run the tests:
$ make test $ make tests # includes integration tests
Build the documentation:
$ make doc
Run static analysis:
$ make pep8 $ make pep257 $ make pylint $ make check # includes all checks
Prepare a release:
$ make dist # dry run $ make upload
Changelog
0.1.1 (2014-10-20)
Fixed typos in examples.
0.1 (2014-09-29)
Initial release.
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.