gpt4 book ai didi

Python 类型提示 : How do I enforce that project wide?

转载 作者:行者123 更新时间:2023-12-05 01:40:45 27 4
gpt4 key购买 nike

我的整个团队都相信 Python 中的类型提示将帮助我们构建更易于维护的代码。每个人都支持在我们的整个项目中实现类型提示。

使用 mypy 一周后,我们意识到 mypy 并没有真正提醒您实现类型提示。如果您忘记实现类型提示,mypy 不会发出警告。理想情况下,我们需要类似于 flake8 的东西,它可以在出现不良行为时对开发人员进行检查和警告。

您的组织如何强制(尽可能)跨 Python 项目进行类型提示?

如果重要的话,我们会使用带有 Python 扩展的 Visual Studio。

最佳答案

Mypy 自带 command line options让您配置它对代码进行类型检查的严格程度。这些命令行选项也可以用 config file 表示。如果存在,mypy 将自动读取。

例如,如果您希望 mypy 在某些函数没有类型时报告警告,您需要使用 --disallow-untyped-defs 命令行标志。或者,使用 --strict 标志,它可以启用此标志以及其他几个有用的标志。 (运行 mypy --help 以获取有关 --strict 启用内容的最新描述)。

为了确保您组织中的每个人都以相同的方式对代码进行类型检查,我建议将包含您要使用的设置的 mypy.ini 配置文件提交到您的存储库。例如,这是我希望 mypy 尽可能多疑地对代码进行类型检查时使用的配置文件:

[mypy]
# Disallow dynamic typing
disallow_any_unimported = True
disallow_any_expr = True
disallow_any_decorated = True
disallow_any_generics = True
disallow_any_explicit = True
disallow_subclassing_any = True

# Disallow untyped definitions and calls
disallow_untyped_calls = True
disallow_untyped_defs = True
disallow_incomplete_defs = True
check_untyped_defs = True
disallow_untyped_decorators = True

# None and optional handling
no_implicit_optional = True

# Configuring warnings
warn_unused_ignores = True
warn_no_return = True
warn_return_any = True
warn_redundant_casts = True

# Misc things
strict_equality = True

# Config file
warn_unused_configs = True

此配置对于实际生产使用几乎肯定过于激进。特别是,您可能希望在全局或每个模块的基础上禁用某些“禁用动态类型”选项,尤其是当您的代码库需要广泛使用未类型化的第三方库时。

您可能还想找到一些方法来确定您的开发人员正在使用的 mypy 的确切版本 -- mypy 文档 recommend setting up some sort of runner script做这些事情。

关于Python 类型提示 : How do I enforce that project wide?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55944201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com