注意:this answer on SO无法回答我的问题。它只是重申我已经读过的内容。
这应该如何工作?我读到的所有内容typeshed
与MyPy
捆绑在一起,并包含第三方库的存根。我已经在virtualenv中安装并运行了MyPy
,并且试图用它来输入Flask
代码,但我只是没有得到它。
我在TypeScript中有背景,我一直在寻找类似的东西,但是我不明白我们应该如何在MyPy
中使用存根。例如,我具有以下功能:
def create_app(config_name="default"):
app: Flask = Flask(__name__)
app.config.from_object(Configuration)
CORS(app)
register_extensions(app)
register_blueprints(app)
@app.route("/health")
def health_check():
return json.dumps({"status": "up"})
return app
Flask的相当标准,但严格禁止任何设置,这将成为无法挽救的混乱。什么是应用程序类型?我知道typeshed
has stubs for flask,但我不知道如何实际利用这些存根。 typeshed
文档说:
如果您只是使用mypy(或pytype或PyCharm),而不是开发它,则根本不需要与已排版的存储库进行交互:已将已排版的副本与mypy捆绑在一起。
所以我假设我不需要导入类型,文档也没有提及导入它们。
例如,有一个名为app.pyi
的存根,但是如果我这样注释函数:
def create_app(config_name="default") -> app:
我收到错误name app is not defined
。如果我导入它:
from typeshed import app
我收到错误Return type becomes any due to an unfollowed import
,据我所知,这意味着没有这样的模块typeshed
或没有名为app
的成员。
那么我实际上如何访问这些typeshed
存根?我的最后一招是简单地克隆typeshed
存储库,并将mypy
指向它作为自定义键入目录,但是我真的很想用正确的方式做事。