Skip to main content

pyyaml-core - YAML 1.2 Core Schema Support for PyYAML

This module can be used on top of PyYAML to load YAML 1.2 files. It depends on PyYAML and inherits from it, it's not a fork.

Currently it supports enabling all YAML 1.2 Core Schema tags on top of the PyYAML BaseLoader. It does not (yet) support other tags like the << merge key. You can add custom constructors, though.

For more information see the comparison of 1.1 and 1.2 schemas.

Examples

import yaml
from yamlcore import CoreLoader
from yamlcore import CoreDumper

y = """
---
1.1: # strings
- yes
- no # norway problem anymore
- 1__0
- 10:20
- +0b100
- 0x4_2

core:
- true
- 0o10
- 0x42
- ~
- .inf
"""

d = yaml.load(y, Loader=CoreLoader)
out = yaml.dump(d, Dumper=CoreDumper)

You can also use CCoreLoader and CCoreDumper for using the libyaml based parser and emitter.

Why?

At the time of this writing, there is a pending pull request that adds YAML 1.2 Core Schema Support for PyYAML.

It's blocked because there is a plan to redesign the API, and no new things shall be added using the old API at this point.

So as long as PyYAML doesn't merge this, you can use this module as an alternative.

Differences

There are other differences in behaviour to PyYAML.

Duplicate keys are not allowed

The YAML spec forbids duplicate keys. PyYAML allows them, which leads to accidentally added duplicate keys in YAML files, eventually.

I can't see a good use case that people would want to allow duplicate keys in a typical YAML loading process. For the use cases I see you would want your own constructor anyway.

If this is breaking anyone's use case, please let me know.

Metadata

Release files for yamlcore 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yamlcore 0.0.4
File Size Uploaded
yamlcore-0.0.4.tar.gz 10.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yamlcore 0.0.4
File Interpreter ABI Platform
yamlcore-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 16.4 kB

Release files / yamlcore-0.0.4.tar.gz

Download URL yamlcore-0.0.4.tar.gz
Size 10.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c2b1a08dd117cf76a70ee124e936b3c568b0b5c4e5131e69b513f4a877a44881
BLAKE2b-256 checksum
How to use checksums
ebd4113dfc4c85f945de13b045a20eca50be5f6efa33342d9a9bd6162d26b288
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.5

Release files / yamlcore-0.0.4-py3-none-any.whl

Download URL yamlcore-0.0.4-py3-none-any.whl
Size 6.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f82a7f7d16baf6531a8c3266b0b63ece251ee2abaf2b9eee040a2f64c8fc618d
BLAKE2b-256 checksum
How to use checksums
b147632498fd9a3fe4f175e5de71162dd8cd9b2141180a98f0bef6af293aeaa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.5

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page