我想检查一个函数的输出和另一个函数的输入之间的类型兼容性。我知道 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 项目,它似乎做了类似的事情,但我真的不愿意为我正在处理的代码使用一个小型的 3rd 方库。最干净的方法是什么?我可以直接使用标准库或 MyPy 中的任何内容吗?