コンテンツにスキップ

pyrs-yaml

pyrs-yaml

高性能な Python YAML ライブラリ、完璧な Round-Trip サポート、Rust と PyO3 で構築されています。

クイックスタート API リファレンス GitHub で見る

  • YAML 1.2 準拠
  • ABI3 ホイール
  • Python 3.8–3.15
  • 型ヒント
  • フリースレッド対応

なぜ pyrs-yaml を選ぶべきか?

ほとんどの Python YAML ライブラリは、パフォーマンスと忠実性のどちらかを犠牲にします。pyrs-yaml は両方を提供します:

  • PyYAML (Python) — 遅く、往復解析時にコメント/アンカー/タグを失う
  • ruamel.yaml (Python) — フォーマットを保持するが、pyrs-yaml より 解析は 48–100 倍、シリアライズは 123–371 倍遅い
  • pyrs-yaml (Rust) — PyYAML より 解析は 21–43 倍、シリアライズは 55–177 倍高速、すべてを保持

主要機能

  • 超高速 — PyYAML より解析 21–43 倍、シリアライズ 55–177 倍高速、Rust ゼロコピーバックエンド駆動
  • 完璧なラウンドトリップ — コメント、アンカー、タグ、チョンピング、スカラースタイル、フロー/ブロックフォーマットを保持
  • インプレース編集 — JSONPath スタイルのパス(doc.set("$.a.b", v))または Node ツリー API で編集、フォーマットを失わない
  • YAML 1.2 準拠 — granit-parser 駆動(YAML テストスイート 99.75% 合格率、405/406)
  • PyYAML 互換safe_load / safe_dump API で直接置換可能
  • 型ヒント — PEP 561 準拠、完全な .pyi スタブファイル
  • ABI3 ホイール — 単一ホイールで Python 3.8–3.15 に対応
  • 国際化エラーset_language("ja-JP") でバイリンガルエラーレポート
  • NumPy ndarray — 任意次元の numpy.ndarray をゼロコピー Rust ディスパッチでシリアライズ

クイックスタート

インストール
pip install pyrs-yaml
クイックスタート
import pyrs_yaml

# YAML をパース
doc = pyrs_yaml.parse("key: value")
print(doc.to_yaml())  # key: value\n

# PyYAML 互換 API
data = pyrs_yaml.safe_load("key: value")
print(data)  # {'key': 'value'}

# ラウンドトリップでコメントを保持
original = "# Comment\nkey: value  # inline\n"
doc = pyrs_yaml.parse(original)
assert doc.to_yaml() == original

PyYAML との比較

操作 pyrs-yaml PyYAML 速度向上
Parse (small) 0.18 ms 3.8 ms 21×
Parse (medium) 0.56 ms 24.2 ms 43×
Parse (large) 1.5 ms 57.7 ms 38×
Serialize (small) 0.04 ms 2.2 ms 55×
Serialize (medium) 0.08 ms 12.6 ms 159×
Serialize (large) 0.17 ms 30.2 ms 177×