Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mypy.ini #357

Merged
merged 13 commits into from
Apr 7, 2024
Merged

Add mypy.ini #357

merged 13 commits into from
Apr 7, 2024

Conversation

aramoto99
Copy link
Collaborator

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
Copy link
Collaborator

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

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

よろしくお願いします。

@aramoto99
Copy link
Collaborator Author

補足

設定項目の参考元

基本は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設定から未引継ぎの項目

  • mypy.ini から未引継ぎの項目

    • warn_unused_ignores
  • mypy-inductor.ini から未引継ぎの項目

    • ignore_missing_imports
  • mypy-strict.ini から未引継ぎの項目

    • allow_redefinition
    • strict_optional
    • show_error_codes
    • show_column_numbers
    • warn_no_return
    • disallow_any_unimported
    • disallow_any_generics
    • disallow_untyped_decorators
    • warn_return_any
    • implicit_reexport

mypy.ini Outdated Show resolved Hide resolved
.github/workflows/type_check.yaml Outdated Show resolved Hide resolved
@yoshipon yoshipon merged commit 45b3e81 into develop/v2 Apr 7, 2024
6 checks passed
@yoshipon yoshipon deleted the feature/mypy.ini branch April 7, 2024 15:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants