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_dumpAPI で直接置換可能 - 型ヒント — 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× |