開発環境のセットアップ
pyrs-yaml に貢献するための環境をセットアップします。
前提条件¶
- Python ≥ 3.8 (CPython)
- Rust ≥ 1.70 (rustup 経由)
- Git
- uv(推奨)または pip
- NumPy — NumPy シリアライゼーションテストスイートの実行に必要 (
uv run --frozen pytest tests/test_numpy.py)
クローンとインストール¶
クローンしてインストール
git clone https://github.com/759401524/pyrs-yaml.git
cd pyrs-yaml
# uv を使用(推奨)
uv sync
# または pip を使用
pip install maturin
uv run --frozen maturin develop --release
インストールの確認¶
インストールの確認
# Rust テストの実行
cargo test
# Python テストの実行
uv run --frozen pytest tests/
# ベンチマークの実行
cargo bench
プロジェクト構造¶
プロジェクト構成
pyrs-yaml/
├── src/
│ ├── lib.rs # PyO3 モジュール定義
│ ├── ast.rs # カスタム AST (CustomNode)
│ ├── parser/
│ │ ├── mod.rs # granit-parser 統合
│ │ └── yaml/ # YAML 特定パース
│ │ ├── comment.rs # コメント抽出
│ │ ├── merge.rs # マージキー解決
│ │ ├── scalar.rs # スカラーパース
│ │ └── types.rs # YAML 1.2 型解決
│ └── serializer.rs # YAML シリアライゼーション
├── python/pyrs_yaml/
│ ├── __init__.py # Python パッケージ初期化
│ ├── pyrs_yaml.pyi # 型スタブ
│ └── py.typed # PEP 561 マーカー
├── tests/ # Python テストスイート
├── benches/ # Rust ベンチマーク
└── docs/ # ドキュメント (mkdocs)
ビルドコマンド¶
ビルドコマンド
# Python 拡張のビルド
uv run --frozen maturin develop --release
# wheel のビルド
uv run --frozen maturin build --release --out dist
# デバッグ情報付きビルド
cargo build
開発ワークフロー¶
- まずテストを書く (TDD)
src/で変更を実装cargo testを実行して Rust テストを確認uv run --frozen pytest tests/を実行して Python テストを確認cargo clippy -- -D warningsを実行してコード品質を確認cargo fmtを実行してコードをフォーマット