beartype
> Beartypeは、オープンソースの純粋なPython PEP準拠のニアリアルタイムハイブリッドランタイム静的第三世代タイプチェッカーです。効率性、使いやすさ、根拠のない専門用語、そしてスリリングなダジャレを重視しています。
> Beartypeは、2行の実行時コードでアプリ全体に型ヒントを適用し、実行時のオーバーヘッドはありません。百聞は一見にしかずというなら、この2つを実行する準備をしよう。
特徴
静的型チェック(
mypyなど)は、静的コード解析を行って型チェックを行う
beartypeは、実行時に型チェックを行う
想定外のデータ型を静的型チェックですべて検出するのは難しいが、実行時型チェックなら検出しやすい
一部の関数だけチェック出来る
pythonfrom beartype import beartype
@beartype
def print_str_list(lines: list[str]):
print("\n".join(lines))
print_str_list(["hello", "world"]) # OK
print_str_list(["hello", 42]) # raise TypeError exception
pythonTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<@beartype(__main__.print_str_list) at 0x211ce189300>", line 42, in print_str_list
File "<stdin>", line 3, in print_str_list
TypeError: sequence item 1: expected str instance, int found
コード全体に適用するには、 __init__.py
に仕込む。
__init__.pyfrom beartype.claw import beartype_this_package
beartype_this_package()
これを実行した以降は、全てのコードが「実行時型チェック」される。