yarutsk¶
AI-authored
This library — design, implementation, tests, and documentation — was written by Claude Code (Anthropic) under human direction.
A Python YAML library that round-trips documents while preserving comments, insertion order, scalar styles, tags, anchors and aliases, blank lines, and explicit document markers.
Most YAML libraries silently drop comments on load. yarutsk keeps them attached to their keys — both inline (key: value # like this) and block-level (# above a key) — so a load → modify → dump cycle leaves the rest of the file intact.
import io
import yarutsk
doc = yarutsk.load(io.StringIO("""
# database config
host: localhost # primary
port: 5432
"""))
doc["port"] = 5433
out = io.StringIO()
yarutsk.dump(doc, out)
print(out.getvalue())
# # database config
# host: localhost # primary
# port: 5433
YamlMapping is a subclass of dict and YamlSequence is a subclass of list, so they work everywhere a dict or list is expected — including json.dumps, isinstance(x, dict), and any library that accepts plain mappings or sequences.
What's preserved¶
- Scalar styles — plain,
'single-quoted',"double-quoted", literal block|, folded block> - Non-canonical scalars —
yes/no/on/off,~,Null,True/False,0xFF,0o77— reproduced as written, not re-canonicalised - YAML tags —
!!str,!!python/tuple, and any custom tag are emitted back verbatim - Anchors and aliases —
&nameon the anchor node and*namefor references; the Python layer returns the resolved value transparently - Blank lines between mapping entries and sequence items
- Explicit document markers —
---and...
Where to go next¶
- Installation —
pip install yarutskand from-source builds - API reference — the full public surface on a single page
- Library integrations — pydantic, msgspec, cattrs
- Round-trip fidelity — exactly what reproduces byte-for-byte
- Error handling — the exception hierarchy
- Thread safety — what's safe to share across threads