YAMLOrderedDictLoader

0.4.2 · deprecated · verified Thu Apr 16

This module provides a loader and a dumper for PyYAML, enabling the preservation of key order when loading YAML files into `collections.OrderedDict` objects and managing `OrderedDict` objects when dumping to YAML. It is built upon PyYAML and is currently marked as deprecated by its maintainers in favor of `Phynix/yamlloader`.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to load a YAML string into a `collections.OrderedDict` using `SafeLoader` and dump a `collections.OrderedDict` back to a YAML string using `SafeDumper`, preserving key order in both operations.

import yaml
from collections import OrderedDict
from yamlordereddictloader import SafeLoader, SafeDumper

# Create a YAML string with a specific order
ordered_data_str = """
key_c: 3
key_a: 1
key_b: 2
inner_dict:
  inner_b: 'val_b'
  inner_a: 'val_a'
"""

# --- Loading YAML with preserved order ---
# Using SafeLoader for security
loaded_data = yaml.load(ordered_data_str, Loader=SafeLoader)

print("Loaded data (type: ", type(loaded_data), "):")
for key, value in loaded_data.items():
    print(f"  {key}: {value}")

assert isinstance(loaded_data, OrderedDict)
assert list(loaded_data.keys()) == ['key_c', 'key_a', 'key_b', 'inner_dict']
assert list(loaded_data['inner_dict'].keys()) == ['inner_b', 'inner_a']

print("\n--- Dumping data with preserved order ---")
# Create an OrderedDict to dump
data_to_dump = OrderedDict([
    ('name', 'Alice'),
    ('age', 30),
    ('details', OrderedDict([
        ('city', 'New York'),
        ('occupation', 'Engineer')
    ]))
])

# Using SafeDumper for security and default_flow_style=False for block style
dumped_yaml = yaml.dump(data_to_dump, Dumper=SafeDumper, default_flow_style=False)
print(dumped_yaml)

# Verify order after dumping and re-loading (optional, for testing)
re_loaded_data = yaml.load(dumped_yaml, Loader=SafeLoader)
assert list(re_loaded_data.keys()) == ['name', 'age', 'details']
assert list(re_loaded_data['details'].keys()) == ['city', 'occupation']

view raw JSON →