ある関数の出力と別の関数の入力の間の型の互換性を確認したいと思います。mypy が静的な型チェックを行うことは知っていますが、python から実行しても何も見つかりませんでした。これが私がやろうとしていることの例です:
from typing import Union, Callable
import inspect
def gt_4(num: Union[int, float]) -> bool:
return num > 4
def add_2(num: Union[int, float]) -> float:
return num + 2.0
def types_are_compatible(type1, type2):
""" return True if types are compatible, else False """
# how to do this in a clean way?
# some kind of MyPy API would be nice here to not reinvent the wheel
# get annotations for output of func1 and input of func2
out_annotation = inspect.signature(gt_4).return_annotation
in_annotation = inspect.signature(add_2).parameters.get('num').annotation
# check if types are compatible,
types_are_compatible(out_annotation, in_annotation)
typegaurdと呼ばれる小さな github プロジェクトを見つけましたが、これは似たようなことをしているように見えますが、作業中のコードに小さなサードパーティ ライブラリを使用するのは本当に気が進まないのです。これを行う最もクリーンな方法は何ですか? 標準ライブラリまたは MyPy に組み込まれていて、直接使用できるものはありますか?