假设我们有一个这样的函数定义:
def f(*, model: Optional[Type[pydantic.BaseModel]] = None)
因此,在您将某些内容作为pydantic
传递之前,不需要安装model
。现在假设我们要将函数打包到pypi包中。我的问题是,是否有办法避免仅出于类型检查的目的将pydantic
引入程序包依赖项?
Python的typing
模块可以使用字符串类型名称以及类型本身,就像您在示例中一样。
如果您不希望在运行代码时评估类型,并且如果尚未导入模块则抛出异常,那么您可能更喜欢使用字符串名称。您的代码段将是:
def f(*, model: Optional[Type["pydantic.BaseModel"]] = None)
您的静态类型检查应该继续起作用,但是您的程序包将不再总是需要依赖pydantic
。