Skip to content

v0.8.0 — Unlock the AST

Choose a tag to compare

@759401524 759401524 released this 31 Jul 05:05
· 182 commits to main since this release
02eec70

v0.8.0 — Unlock the AST

Breaking Changes

  • YAML() instance API: New YAML() class replaces module-level parsing for configuration. pyrs_yaml.parse() still works as shorthand.
  • Python Node API: New Node(doc) class exposes AST with ind(), walk(), ilter(), parent, children, o_yaml().
  • MergedView: doc.merged() returns a read-only dict-like view with merge keys resolved.
  • Lifecycle warnings: Node.release() marks stale nodes; accessing released nodes emits RuntimeWarning and raises YamlDocumentError.
  • Document metadata: doc.version() returns the YAML spec version.

✨ Features

  • Python Node API with JSONPath-like query language in Node.find()
  • MergedView — read-only anchor merge view
  • Node.release() + RuntimeWarning lifecycle warnings
  • doc.version() metadata
  • pytest parametrize refactoring across 5 test files (498→322 lines)

🔧 Bug Fixes

  • Node.to_yaml(): rom_dict() returns str, not YamlDocument — fixed branching logic
  • MergedView: handle sequence-root documents
  • _parse_jsonpath: deep scan (..) and wildcard (\$..*) detection order
  • Removed duplicate pytest_collection_modifyitems in conftest.py

🧪 Testing

  • 3 new test files: test_yaml_instance.py, test_node_api.py, test_merged_view.py
  • 52 new test cases across all v0.8.0 features
  • 460 Python tests + 106 Rust tests all passing