Repolode
agronholm

agronholm/typeguard

Pythonの実行時型チェッカー。関数、任意のオブジェクト、ローカル変数に付けたPEP 484アノテーションを検証します。

スター
1,793
フォーク
154
未解決の Issue
59
最終コミット
10 日前

これは何?

Typeguardはプログラムの実行中にPythonの型アノテーションをチェックし、mypyなどの静的チェッカーでは検出できない違反を見つけます。任意の型ヒントを理解する強化版のisinstance()として、または値を実際に検証するcast()の代替として使えます。

自動チェックには、Typeguardが2種類の計測方法を用意しています。@typecheckedデコレーターは個々の関数を再コンパイルし、引数、戻り値、型アノテーション付きのローカル変数への代入、ジェネレーターのyield値とsend値をチェックする処理を挿入します。install_import_hook()で導入するインポートフックは、ソースコードを変更せず、対象モジュールのインポート時に計測します。ただし、対象モジュールが読み込まれる前にインストールする必要があります。

また、より軽量でデバッガーとの相性がよい方法として、check_argument_types()とcheck_return_type()も用意されています。ただし、ネストした関数内のものなど、動的に定義される型ヒントには対応の信頼性が低くなります。計測には、モジュールの元のソースコードにアクセスできる必要があります。

主な機能

  • 01実行時に関数の引数と戻り値をPEP 484アノテーションと照合します。
  • 02任意の型アノテーションに対応し、isinstance()やcast()の高機能な代替として使えます。
  • 03@typecheckedデコレーターで個々の関数を計測します。
  • 04ソースコードを変更せず、対象モジュールをチェックするインポートフックを提供します。
  • 05通常のジェネレーターと非同期ジェネレーターのyield値とsend値をチェックします。

ユースケース

  • 静的型チェッカーと併用して、Pythonコードの型安全性をさらに高める。
  • アノテーションだけでは正しい型が保証されない境界でデータを検証する。
  • 実行時にのみ発生する型の不一致をデバッグする。
  • テストスイートやステージング環境で型ヒントを強制する。

クイックスタート

  1. 1

    PyPIからパッケージをインストールする

    pip install typeguard
  2. 2

    実行時に値を検証するには、check_typeを使用します

使う前に知っておきたいこと

  • READMEにライセンスの記載はありません。メタデータにはNOASSERTIONと記載されているため、使用前にライセンスファイルを確認してください。
  • コードの計装には、計装対象モジュールの元のソースコードにアクセスできる必要があります。
  • インポートフックが他のインポートフックと競合する場合があります。

収録されている特集

トピック

#python#type-checking#type-hints#pep-484#runtime-validation#testing

よくある質問

typeguard とは?
Pythonの実行時型チェッカー。関数、任意のオブジェクト、ローカル変数に付けたPEP 484アノテーションを検証します。 Typeguardはプログラムの実行中にPythonの型アノテーションをチェックし、mypyなどの静的チェッカーでは検出できない違反を見つけます。任意の型ヒントを理解する強化版のisinstance()として、または値を実際に検証するcast()の代替として使えます。
typeguard は無料で使えますか?ライセンスは?
typeguard は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
typeguard は今もメンテナンスされていますか?
活発にメンテナンス中。typeguard の最終コミットは 2026年10月29日 です。
typeguard は何に使えますか?
静的型チェッカーと併用して、Pythonコードの型安全性をさらに高める。 アノテーションだけでは正しい型が保証されない境界でデータを検証する。 実行時にのみ発生する型の不一致をデバッグする。 テストスイートやステージング環境で型ヒントを強制する。
typeguard のインストール方法は?
PyPIからパッケージをインストールする: pip install typeguard 実行時に値を検証するには、check_typeを使用します
typeguard はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/agronholm/typeguard

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト