Skip to main content

YAMLBase class with saving loading and version support

Project description

https://sourceforge.net/p/ruamel-yaml-base/code/ci/default/tree/_doc/_static/license.svg?format=raw https://sourceforge.net/p/ruamel-yaml-base/code/ci/default/tree/_doc/_static/pypi.svg?format=raw https://sourceforge.net/p/oitnb/code/ci/default/tree/_doc/_static/oitnb.svg?format=raw https://sourceforge.net/p/ryd/code/ci/default/tree/_doc/_static/ryd.svg?format=raw

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()

automatic saving

If YAMLBase is initialised with auto_save=True, and .changed has been set the YAML file will be dumped when the object goes out of scope.

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.

alternative initialisation

When you subclass YAMLBase, you can pre set the create_ok and auto_save values by setting attributes before calling super():

class X(YAMLBase):
    def __init__(self, path):
        self._create_ok = True
        self._auto_save = True
        super().__init__(path=path)

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

ruamel.yaml.base-0.3.2.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

ruamel.yaml.base-0.3.2-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file ruamel.yaml.base-0.3.2.tar.gz.

File metadata

  • Download URL: ruamel.yaml.base-0.3.2.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for ruamel.yaml.base-0.3.2.tar.gz
Algorithm Hash digest
SHA256 88b6edc8ace60c12d98f05fda22e5d9d69ba9a4b531cf54783142151145b0372
MD5 420a8b48b2c4f4cbcc190fe7131080e8
BLAKE2b-256 4348a9857909c0c2982c79e7ace20b9e63455b457f62aae0b18f94d5f6ccdbaf

See more details on using hashes here.

File details

Details for the file ruamel.yaml.base-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ruamel.yaml.base-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c3dbd29a507579863a492e58f556e2d922b13dee1846b93a0b8fb6b76d98f440
MD5 66faa622f4a3516fa660f5a7783bcd54
BLAKE2b-256 161b0c255d7e70b4c0178719f6f74457c54a3b120483c9041a8bbf331617da64

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page