aistairc / aiaccel

A hyperparameter optimization library for the ABCI.
https://aistairc.github.io/aiaccel/
MIT License
23 stars 4 forks source link

Add mypy.ini #357

Closed aramoto99 closed 2 months ago

aramoto99 commented 4 months ago

mypy.ini の追加

設定項目のコンセプト 型安全性・開発効率・メンテナンス性をバランスよく確保

項目 説明 選択理由 参考
cache_dir .mypy_cache mypyのキャッシュを保存するディレクトリを指定 aiaccel で numpyを使用しているため.型情報が複雑なため、専用プラグインによる厳密な型チェックがが必要と判断 pytorch
allow_redefinition True 同一スコープ内での変数の再定義を許可 ハイパパラメータの探索など、動的に型が変わる可能性がある場面で柔軟性を確保 pytorch
warn_redundant_casts True 型キャストが冗長である場合に警告 コードの正確性を確保し、不要な型変換によるパフォーマンスの低下を防ぐ pytorch
show_error_codes True エラーメッセージにエラーコードを表示 エラーコードにより、問題の特定と解決策の検索が容易になり、開発効率が向上 pytorch
show_column_numbers True エラーメッセージに列番号を表示 エラーの正確な位置を迅速に特定し、開発者が問題を素早く修正できるようにする pytorch
check_untyped_defs True 型注釈がない関数でも型チェックを実施 コード全体の型安全性を高め、隠れたバグを事前に検出 pytorch
follow_imports silent インポートされたモジュールの型チェック時にメッセージを表示しない 依存関係に関する不必要な警告や情報を抑制し、型チェックの出力を集中して問題解決に役立てるため pytorch
disallow_untyped_defs True 型注釈のない関数の定義を禁止 明確な型注釈によりコードの可読性とメンテナンス性を向上させ、長期的なプロジェクトの健全性を保つため -
strict_optional True Noneと他の型を厳密に区別 Noneの誤用を防ぎ、オプショナルな値の扱いに関するバグを減らすため -
strict_equality True 異なる型間での等価性チェックを禁止 型の誤った比較によるバグを防ぎ、より明確なコードを促進 -
disallow_subclassing_any True Any型からのサブクラス化を禁止 型システムの不確実性を減らし、より安全な継承パターンを促すため -
warn_unreachable True 到達不可能なコードに対して警告 コードのデッドパスを特定し、削除することで、コードベースのクリーンアップとメンテナンス性を向上 -
no_implicit_optional True 型注釈でOptionalを明示的に指定 Noneが許容される場合は明示的に示すことで、型の扱いにおいて誤解を防ぐ -
disallow_incomplete_defs True 関数やクラスの定義に型を明示することを強制 型が明確に指定されていない場合に警告を発生させ、コードの品質を向上 v1
strict_concatenate True 文字列と数値の連結時に、暗黙的な型変換を禁止 文字列と数値の連結時に意図しない挙動が起きるのを防ぎ、コードの安全性を向上 v1
python_version 3.11 サポートするPythonのバージョンを3.11に設定 - pytorch
yoshipon commented 4 months ago

選定ありがとうございます。

下記のmypy pluginの設定も加えて頂いても良いでしょうか。 https://numpy.org/doc/stable/reference/typing.html

よろしくお願いします。

aramoto99 commented 3 months ago

補足

設定項目の参考元

基本はpytorchmypy設定を引用.ただし,aiaccel向けに独自追加した項目もあり.

  1. pytorchmypyファイルは次の通り

    • mypy.ini
    • mypy-inductor.ini
    • mypy-strich.ini
  2. pytorchmypy ファイルから引用した設定項目 (aiaccel向けに設定した値はPRコメントトップを参照)

    項目 mypy.ini mypy-inductor.ini mypy-strict.ini
    allow_redefinition True True True
    warn_unused_configs True True True
    warn_redundant_casts True True True
    show_error_codes True True True
    show_column_numbers True True True
    check_untyped_defs True, False True True
    follow_imports silent normal, skip normal, skip
    disallow_untyped_calls True - True
    disallow_untyped_defs True - True
    strict_optional True - True
    ignore_missing_imports True True True
    python_version 3.10 3.11 3.8
    strict_equality True - True
    disallow_subclassing_any True - True
    no_implicit_optional - - True
    disallow_incomplete_defs - - True
  3. aiaccel 向けに独自追加した項目

    項目 mypy.ini mypy-inductor.ini mypy-strict.ini
    warn_unreachable - - -
    strict_concatenate - - -

未引継ぎ項目

pytorchのmypy設定から未引継ぎの項目