実行時のオーバーヘッドを最小限に抑え、関数・クラス・変数にPEP準拠の型ヒントを適用する純粋なPython製ランタイム型チェッカー。
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
PyPIからパッケージをインストールする
pip install typeguard - 2
実行時に値を検証するには、check_typeを使用します
使う前に知っておきたいこと
- READMEにライセンスの記載はありません。メタデータにはNOASSERTIONと記載されているため、使用前にライセンスファイルを確認してください。
- コードの計装には、計装対象モジュールの元のソースコードにアクセスできる必要があります。
- インポートフックが他のインポートフックと競合する場合があります。
収録されている特集
トピック
よくある質問
- 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 の数値は毎日更新されます。
関連プロジェクト
Pythonを実行せずに、PEP 484の型ヒントを使ったコードの型エラーを検出する静的型チェッカー。
大規模なコードベース向けに設計された、コマンドラインツールとVisual Studio Code拡張機能を備える、標準に準拠したPython静的型チェッカーです。
pytestのテスト実行中に、ソースファイルへmypyの静的型チェックを行うpytestプラグインです。
実行せずにPHPコードのバグを見つける静的解析ツール。
純粋なTypeScript型を、実行時バリデーター、JSONシリアライザー、Protocol Bufferコーデック、ランダムデータ生成器にコンパイルするTypeScriptトランスフォーマー。