YAMLBase class with saving loading and version support
Project description
YAMLBase class with saving, delayed loading and optional version support
The YAMLBase class is initiated with a pathlib.Path or string based filename of a document containing a single YAML file. This file needs to exists unless the create_ok parameter is supplied, in which case an instance of the argument to that parameter is created (typically a list or dict like object) as the root of the data structure. If the argument is True an empty ruamel.yaml.CommentedMap() instance is created as the root.
Access to the root object is made via the .data attribute, if an existing file was specified, it is read in on the first access to .data.
from ruamel.yaml.base import YAMLBase file_name = '/data0/talks/meta.yaml' base = YAMLBase(file_name, create_ok=True) base.data['PyCon 2006'] = dict(location='Dallas, TX, USA', title='Extending the life of CVS with Python') base.data['EuroPython 2016'] = dict(location='Bilbao, Spain', title='Beyond scraping') base.changed = True base.save() print(open(file_name).read())
Which prints:
PyCon 2006: location: Dallas, TX, USA title: Extending the life of CVS with Python EuroPython 2016: location: Bilbao, Spain title: Beyond scraping
The document is normally loaded using ruamel.yaml’s default round-trip mode. If the initial access to an existing document is done via .fast_data, the loading is done via the faster C loader (which is not fully YAML 1.2) compatible. In that case you should not save the resulting file.
The save will not actually dump out the YAML document file, unless .changed has been set to True. Saving to file sets .changed back to False. Using the force=True will write to file independent of changed. You can also add an extra out argument, e.g. instead of the last two lines in the example above, you could do:
import sys base.save(out=sys.stdout) # not changing `.changed` base.save()
internal progress
The initialisation has an optional verbose argument which can be set to a positive integer to get some information on what is going on internally.
Project details
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
Hashes for ruamel.yaml.base-0.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f93013fd4cb12a5c9fc7b9e60b85319ba8b93fff67904e9ab3db73ae0e02ece |
|
MD5 | 267538c43210ae582dd3212c62b6dd84 |
|
BLAKE2b-256 | 0281d0e9d4cf963ef3bfb5bf0a782b547047e39d4ddd0618618b7afb6bfa8a70 |