コンテンツにスキップ

開発環境と検証

SOPRANのコードやドキュメントを変更するための環境の作り方と、変更後に通すべき検証をまとめます。 利用者としてのインストールはインストールを参照してください。

環境を作る

git clone https://github.com/Nkzono99/sopran.git
cd sopran
python -m venv .venv
.venv/bin/python -m pip install -e ".[dev,full,docs]"     # Windows は .venv\Scripts\python.exe

pip install -e .は、Rust拡張sopran._nativeもビルドしてソースツリーに置きます。 Rustのコードだけを変えたときは、次のコマンドで拡張を作り直せます。

python -m maturin develop --release
python -c "import sopran._native as native; print(native.__file__)"

ビルドに必要なツールはsopran-env-check --nativeで確かめられます。 maturin developはソースツリーの中の拡張を置き換えるため、同じソースツリーで長時間のジョブが動いているときは、 別のコピーと別の仮想環境で作業してください。

検証のコマンド

リポジトリのルートで、仮想環境のpythonを使って実行します。変更した範囲に関係するものを選んでください。

対象 コマンド
関連するテスト / 全体 python -m pytest -q tests/test_omni.py / python -m pytest -q
構文・lint・型 python -m compileall -q src / python -m ruff check src tests / python -m mypy src
Rust cargo test -p sopran-native / cargo fmt --all --check
スキーマを変えたとき python -m sopran.schema_docs --check docs/ja/reference/schemas.md / python -m sopran.schema_docs --language en --check docs/en/reference/schemas.md
ドキュメントを変えたとき python -m mkdocs build --strict
外部の配布元への接続 python -m pytest -m network / sopran-env-check --sources

テストは合成データとfixtureを中心にしています。IDLの実行環境は前提にせず、SPEDASの挙動との比較は 参照仕様・合成データ・既存の実データで行います。

通常のテストは外部と通信しません。tests/conftest.pyがループバック以外への接続を止め、取得の経路はurlopenなどを差し替えて確かめます。 外部へ通信するテストには@pytest.mark.networkを付けます。これは既定では選ばれず、-m networkを指定したときだけ実行されます。

CI

ワークフロー 内容
.github/workflows/ci.yml [dev,kaguya,moon,viz,docs,experimental]を入れて、pytest、compileall、スキーマのページの確認、ruff、mypyを実行する
.github/workflows/sources.yml 毎週月曜と手動実行で、sopran-env-check --sourcesにより外部の配布元への接続を確かめる
.github/workflows/docs.yml mkdocs build --strictでドキュメントを作り、mainブランチではGitHub Pagesへ公開する
.github/workflows/publish.yml v*タグで、sdistと各OS・CPython 3.11〜3.14のwheelを作り、PyPIへ公開する(リリース)

スーパーコンピューター

京都大学のスーパーコンピューターでの環境構築とジョブの雛形はscripts/hpc/kyoto/にあります。 使い方はER全期間バッチを参照してください。