ホームへ戻る

GitHub Repo

Graphify 0.9.67、Windowsでの再起動のリグレッションを修正、ハッシュ固定設定は維持

前版で導入されたハッシュシードを固定する処理により、4つのコマンドがWindowsのランチャー経由で再実行される際に失敗していた。新版ではPythonモジュールのエントリーポイントを使う方式に変更し、一部のインポート関係の解析誤りも修正した。

Rhododendrites · CC BY-SA 4.0 · Image source
zh-Hant

Graphifyは9月23日に0.9.67をリリースし、前日の0.9.66で導入されたWindowsのリグレッションを修正した。メンテナーの説明によると、ハッシュシードを固定するために追加された再実行処理により、コンソールの`.exe`ランチャー経由で呼び出した`update`、`extract`、`cluster-only`、`label`が正常に再起動できなくなっていた。前版にアップグレード済みのチームにとって、今回の更新はグラフ処理を再開できるかどうかに関わる。[リリース告知](https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.67)

この修正では`PYTHONHASHSEED`の設定を維持し、`argv[0]`を再実行する方式から`python -m graphify`に変更した。Pythonのドキュメントによると、整数のシードを固定すれば、ハッシュのランダム化の影響を受ける型で同じハッシュ値を繰り返し生成できる。また、`-m`は指定されたモジュールを検索して実行する。設計上、新しいエントリーポイントにより、処理の再実行時にプラットフォーム固有のランチャーパスを引き継ぐ必要がなくなる一方、ハッシュの差異を抑えるという前版の目的は維持される。[Pythonコマンドラインドキュメント](https://docs.python.org/3/using/cmdline.html)

これは、コードのグラフをエージェントのワークフローに組み込むチームに直接影響する。Graphifyはローカルで構文木を使ってコード間の関係を抽出し、アシスタントがパスや依存関係を照会できるようにする。更新や抽出のコマンドが完了していなければ、後続の処理では、どの実行時の成果物を読み込んでいるかを確認する必要がある。既存のグラフファイルが残っているだけで、更新が成功したと判断することはできない。これはツールの処理手順から導かれる運用時の確認事項であり、告知でデータ破損の発生が確認されたわけではない。[パッケージと利用手順](https://pypi.org/project/graphifyy/0.9.67/)

同版では、Pythonのパッケージディレクトリと同名のモジュールが共存する際の循環インポートの誤検出も修正し、パッケージの絶対インポートをスキャン範囲内のノードに解決するようにした。複数のディレクトリにまたがって名前が曖昧になる場合は、対象を恣意的に選択しない。こうした修正は関係グラフの内容を変えるため、アップグレード前後で差異が生じても、必ずしもソースコードが実際に変更されたことを意味しない。[関係解析の変更](https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.67)

PyPIには同日アップロードされたソースパッケージとwheelが掲載されており、正式なパッケージ名は`graphifyy`となっている。[リリース履歴](https://pypi.org/project/graphifyy/0.9.67/) Windowsユーザーは、隔離した環境でアップグレードした後、影響を受けるコマンドを再実行し、終了ステータスと成果物の更新を確認したうえで、同じ入力を使って結果を比較できる。検証ではコンソールランチャーとモジュールのエントリーポイントをそれぞれ確認し、インタープリターのバージョンとパッケージの入手元を記録する必要がある。これにより、別の仮想環境にある古いインストールが比較に混入するのを防げる。自動再構築のスケジュールを別途設定している場合は、その実行時に実際に使われる環境も確認すべきだ。

今回の確認作業ではリリース履歴とメンテナーの説明を確認したが、Windowsの各種起動方法について独立した再現検証は行っていない。ハッシュの固定だけでは、モデルが生成する内容や、バージョンをまたいだグラフの完全な一致までは保証できない。チームは引き続き、起動の互換性と出力の一貫性を別々に検証する必要がある。

出典

  1. Graphify v0.9.67 release
  2. graphifyy 0.9.67
  3. Python command line and environment