Skip to main content

Ordered YAML loader and dumper for PyYAML.

Project description

https://github.com/Phynix/yamlloader/actions/workflows/ci.yml/badge.svg https://img.shields.io/pypi/pyversions/yamlloader.svg https://badge.fury.io/py/yamlloader.svg https://coveralls.io/repos/github/Phynix/yamlloader/badge.svg

yamlloader

This module provides loaders and dumpers for PyYAML. Currently, an OrderedDict loader/dumper is implemented, allowing to keep items order when loading resp. dumping a file from/to an OrderedDict (Python 3.8+: Also regular dicts are supported and are the default items to be loaded to. As of Python 3.7 preservation of insertion order is a language feature of regular dicts.)

This project was originally mirrored from yamlordereddict Many thanks to the original author François Ménabé! The library contains several improvements including automated testing and the much faster C-versions of the Loaders/Dumpers.

API Documentation

Install

There is a pip and a conda version available

$ pip install yamlloader

or

$ conda install yamlloader -c conda-forge

But does [your special case here] also work?

Tests are run continuously using randomly generated yaml files. Also, there are no fails to be expected.

Still, if you are concerned that your special case may breaks in the future, please add your own tests as test_ext_anyname.py under tests/ or let us know about your needs. This guarantees that no code will be added that breaks your case.

C vs non-C version

A significant speedup can be reached by replacing the Loader* and Dumper* classes by CLoader* and CDumper*. The package hereby relies on the implementations from PyYAML. If they have not been compiled, yamlloader automatically falls back to the non-C versions.

Therefore using the C-version is safe: if it is not available, the pure Python version is automatically used.

Usage examples

Loader usage

import yaml
import yamlloader

with open('myfile.yml') as yaml_file:
    data = yaml.load(yaml_file,
                     Loader=yamlloader.ordereddict.CLoader)
                     # CLoader is faster than Loader

Note: For using the safe loader (which takes standard YAML tags and does not construct arbitrary Python objects), replace yamlloader.ordereddict.CLoader by yamlloader.ordereddict.CSafeLoader.

Dumper usage

import yaml
import yamlloader
from collections import OrderedDict

data = OrderedDict([('key1', 'val1'),
                    ('key2', OrderedDict([('key21', 'val21'),
                                          ('key22', 'val22')]))])

with open('myfile.yaml', 'w') as yaml_file:
    yaml.dump(data, yaml_file,
              Dumper=yamlloader.ordereddict.CDumper)

Note: For using the safe dumper (which produce standard YAML tags and does not represent arbitrary Python objects), replace yamlloader.ordereddict.CDumper by yamlloader.ordereddict.CSafeDumper.

FAQ

C version not working

If the C version is not working (it falls back by default to a non-C version), check if yaml.cyaml exists. If not, the cyaml module was not compiled during the installation of yaml (pyyaml). Make sure that cython is installed (pip install Cython) and the yaml.h file is there (apt: libyaml-dev).

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

yamlloader-1.6.0.tar.gz (77.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yamlloader-1.6.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file yamlloader-1.6.0.tar.gz.

File metadata

  • Download URL: yamlloader-1.6.0.tar.gz
  • Upload date:
  • Size: 77.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yamlloader-1.6.0.tar.gz
Algorithm Hash digest
SHA256 918232976c9910d079ef74b3266ff9ef674228609aa56e67718b3992940a823f
MD5 5cbbd0a65723cad5021713a2d7da91a0
BLAKE2b-256 e7e681677e777ca8a3588012f74e215050e3001e39d253076beb1c3306fc9460

See more details on using hashes here.

Provenance

The following attestation bundles were made for yamlloader-1.6.0.tar.gz:

Publisher: cd.yml on Phynix/yamlloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yamlloader-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: yamlloader-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yamlloader-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d9ea9948759732eab65e1dbcea510f1582b9c096aab33c893bf55ae9d58783e8
MD5 cae4efe0a61eabb38f13aa67d53c1f62
BLAKE2b-256 d28a132113ebc0f5ef3e893c4c75b058f70206b80a8a69ba46fbaeb5d409eb32

See more details on using hashes here.

Provenance

The following attestation bundles were made for yamlloader-1.6.0-py3-none-any.whl:

Publisher: cd.yml on Phynix/yamlloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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