Automatic object YAML mapping for Python.
Project description
YORM
Enables automatic, bidirectional, human-friendly mappings of object attributes to YAML files.
Uses beyond typical object serialization and relational mapping include:
bidirectional conversion between basic YAML and Python types
attribute creation and type inference for new attributes
storage of content in text files optimized for version control
extensible converters to customize formatting on complex classes
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:
import yorm
from yorm.standard import String, Integer, Float
@yorm.attr(name=String, year=Integer, gpa=Float)
@yorm.sync("students/{self.school}/{self.number}.yml")
class Student:
...
Modifications to each 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 each mapped file:
$ echo "name: John Doe
> gpa: 1.8
> year: 2010
> expelled: true
" > students/GVSU/123.yml
are automatically reflected in their corresponding object:
>>> s1.gpa
1.8
>>> s1.expelled
True
Changelog
0.4 (dev)
Moved all converters into the yorm.converters package.
Rename Converter to Convertible.
Remove the context manager in mapped objects.
Fixed automatic mapping of nested attributes.
0.3.2 (2015-04-07)
Fixed object overwrite when calling utilities.update.
0.3.1 (2015-04-06)
Fixed infinite recursion with properties that rely on other mapped attributes.
0.3 (2015-03-10)
Updated mapped objects to only read from the filesystem if there are changes.
Renamed store to sync_object.
Renamed store_instances to sync_instances.
Renamed map_attr to attr.
Added sync to call sync_object or sync_instances as needed.
Added update_object and update_file to force syncrhonization.
Added update to call update_object and/or update_file as needed.
0.2.1 (2015-02-12)
Container types now extend their builtin type.
Added None<Type> extended types with None as a default.
Added AttributeDictionary with keys available as attributes.
Added SortedList that sorts when dumped.
0.2 (2014-11-30)
Allowing map_attr and store to be used together.
Allowing Dictionary containers to be used as attributes.
Fixed method resolution order for modified classes.
Added a yorm.settings.fake option to bypass the filesystem.
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.
Source Distribution
Built Distribution
File details
Details for the file YORM-0.4.dev7.tar.gz
.
File metadata
- Download URL: YORM-0.4.dev7.tar.gz
- Upload date:
- Size: 25.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 032247d94689b299f65c836d97d2792c5625f1aa1ed82e98c215d7b155b5fb30 |
|
MD5 | 9c22ff7bdfd7cbc8b147ab0c42c8c733 |
|
BLAKE2b-256 | 2ce351ac23584da6d078a62b4f8dd8fd27335c5c6725359838eca5587977d815 |
File details
Details for the file YORM-0.4.dev7-py3-none-any.whl
.
File metadata
- Download URL: YORM-0.4.dev7-py3-none-any.whl
- Upload date:
- Size: 34.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | baacb8f1df54368c4195208b6672b380253ddf1d2ec65e2ec34032e530afff4e |
|
MD5 | 4843ff74091ae128c60237a2b262d357 |
|
BLAKE2b-256 | db135c6a0d265faa47a2d70f67b3c68607efd57466b2fccd1be17b17461e6280 |