MyPy-您实际上如何在注释中使用带格式的存根?

时间:2019-04-04 16:15:07

标签: python mypy

注意:this answer on SO无法回答我的问题。它只是重申我已经读过的内容。

这应该如何工作?我读到的所有内容typeshedMyPy捆绑在一起,并包含第三方库的存根。我已经在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指向它作为自定义键入目录,但是我真的很想用正确的方式做事。

0 个答案:

没有答案