mypy 配置文件(mypy configuration file)¶
Mypy 具有很高的可配置性。这在将类型引入现有代码库时尤其有用。有关该情况的具体建议,请参见 在现有代码库中使用 mypy。
Mypy 支持从文件读取配置设置,优先顺序如下:
./mypy.ini
./.mypy.ini
./pyproject.toml
./setup.cfg
$XDG_CONFIG_HOME/mypy/config
~/.config/mypy/config
~/.mypy.ini
重要的是要理解,配置文件不会合并,因为这会导致歧义。命令行标志 --config-file
具有最高优先级,必须正确;否则 mypy 将报告错误并退出。在没有命令行选项的情况下,mypy 将按上述优先顺序查找配置文件。
大多数标志与 命令行标志 密切对应,但在标志名称上存在一些差异,有些标志可能根据正在处理的模块采用不同的值。
一些标志支持用户主目录和环境变量扩展。要引用用户主目录,请在路径开头使用 ~
。要扩展环境变量,请使用 $VARNAME
或 ${VARNAME}
。
配置文件格式(Config file format)¶
配置文件格式是常见的 ini 文件 格式。它应包含方括号中的部分名称和形式为 NAME = VALUE 的标志设置。注释以 #
字符开头。
必须存在名为
[mypy]
的部分。这指定了全局标志。还可以存在名为
[mypy-PATTERN1,PATTERN2,...]
的附加部分,其中PATTERN1
、PATTERN2
等是完全限定模块名称的逗号分隔模式,某些组件可以用 '*' 字符替代(例如foo.bar
、foo.bar.*
、foo.*.baz
)。这些部分指定仅适用于模块名称匹配至少一个模式的附加标志。形式为
qualified_module_name
的模式仅匹配命名模块,而dotted_module_name.*
匹配dotted_module_name
和任何子模块(因此foo.bar.*
会匹配foo.bar
、foo.bar.baz
和foo.bar.baz.quux
)。模式也可以是“非结构化”的通配符,其中星号可以出现在名称的中间(例如
site.*.migrations.*
)。星号匹配零个或多个模块组件(因此site.*.migrations.*
可以匹配site.migrations
)。当选项冲突时,配置的优先顺序为:
在源文件中的 内联配置
具有具体模块名称的部分(
foo.bar
)具有“非结构化”通配符模式的部分(
foo.*.baz
), 在配置文件中后面的部分覆盖前面的部分。具有“结构化”通配符模式的部分(
foo.bar.*
), 更具体的部分覆盖更一般的部分。命令行选项。
顶层配置文件选项。
“结构化”模式(按特异性)和“非结构化”模式(按文件中的顺序)之间的优先级差异是不幸的,并且在未来版本中可能会改变。
备注
warn_unused_configs
标志可能对调试拼写错误的部分名称有用。
备注
配置标志在不同版本之间可能会发生变化。
单个模块和全局选项(Per-module and global options)¶
某些配置选项可以全局设置(在 [mypy]
部分)或逐模块设置(在 [mypy-foo.bar]
这样的部分)。
如果您同时为全局和特定模块设置了选项,模块配置选项将具有优先权。这使您能够设置全局默认值并在逐模块的基础上覆盖它们。如果多个模式部分与某个模块匹配,将使用最具体部分的选项,以解决不一致的地方。
一些其他选项,如其描述中所述,仅能在全局部分( [mypy]
)中设置。
反转选项值(Inverting option values)¶
取布尔值的选项可以通过在名称前加 no_
或(在适用时)将前缀从 disallow
变更为 allow
(反之亦然)来反转。
mypy.ini
示例 (Example)¶
以下是一个 mypy.ini
文件的示例。要使用此配置文件,请将其放置在您代码库的根目录下并运行 mypy。
# 全局选项:
[mypy]
warn_return_any = True
warn_unused_configs = True
# 每模块选项:
[mypy-mycode.foo.*]
disallow_untyped_defs = True
[mypy-mycode.bar]
warn_return_any = False
[mypy-somelibrary]
ignore_missing_imports = True
此配置文件在 [mypy]
部分指定了两个全局选项。这两个选项将:
在函数返回被推断为类型
Any
的值时报告错误。报告 mypy 未使用的任何配置选项。(这将帮助我们在更改配置文件时捕捉拼写错误)。
接下来,此模块指定了三个逐模块选项。前两个选项更改 mypy 对 mycode.foo.*
和 mycode.bar
中代码的类型检查,我们在这里假设这两个模块是您编写的。最后一个配置选项更改 mypy 对 somelibrary
的类型检查,我们在这里假设这是您安装并导入的某个第三方库。这些选项将:
仅在
mycode.foo
包内选择性地禁止未类型定义的函数——即仅适用于在mycode/foo
目录中定义的函数。仅在
mycode.bar
内选择性地*禁用*“函数返回任何”警告。这将覆盖我们之前设置的全局默认值。抑制在您的代码库尝试导入模块
somelibrary
时生成的任何错误消息。如果somelibrary
是缺少类型提示的某个第三方库,这将非常有用。
导入发现(Import discovery)¶
有关更多信息,请参见命令行文档的 导入发现 部分。
- mypy_path¶
- Type:
string
指定在尝试
MYPYPATH
环境变量中的路径后要使用的路径。如果您希望在代码库中保留存根以及配置文件,这非常有用。多个路径始终用:
或 , 分隔,无论平台如何。用户主目录和环境变量将被扩展。相对路径相对于 mypy 命令的工作目录处理,而不是配置文件。 使用
MYPY_CONFIG_FILE_DIR
环境变量来引用相对于配置文件的路径(例如mypy_path = $MYPY_CONFIG_FILE_DIR/src
)。此选项只能在全局部分(
[mypy]
)中设置。注意: 在 Windows 上,使用 UNC 路径以避免使用
:
(例如\\127.0.0.1\X$\MyDir
,其中X
是驱动器字母)。
- files¶
- Type:
逗号隔开的字符串列表(comma-separated list of strings)
如果在命令行上未给出,则应由 mypy 检查的路径的以逗号分隔的列表。支持使用
glob
进行递归文件匹配,其中*
(例如*.py
)匹配当前目录中的文件,而**/
(例如**/*.py
)匹配当前目录以下的任何目录中的文件。用户主目录和环境变量将被扩展。此选项只能在全局部分(
[mypy]
)中设置。
- modules¶
- Type:
逗号隔开的字符串列表(comma-separated list of strings)
如果在命令行上未给出,则应由 mypy 检查的包的以逗号分隔的列表。Mypy 将不会 递归类型检查提供模块的任何子模块。
此选项只能在全局部分(
[mypy]
)中设置。
- packages¶
- Type:
逗号隔开的字符串列表(comma-separated list of strings)
如果在命令行上未给出,则应由 mypy 检查的包的以逗号分隔的列表。Mypy 将(will) 递归类型检查提供包的任何子模块。此标志与
modules
相同,除了此行为。此选项只能在全局部分(
[mypy]
)中设置。
- exclude¶
- Type:
regular expression
匹配文件名、目录名和路径的正则表达式,mypy 应在递归发现要检查的文件时忽略这些文件。所有平台上使用正斜杠(
/
)作为目录分隔符。[mypy] exclude = (?x)( ^one\.py$ # 文件名为 "one.py" | two\.pyi$ # 或以 "two.pyi" 结尾的文件 | ^three\. # 或以 "three." 开头的文件 )
制作一个排除多个文件的单一正则表达式,同时保持可读性可能是一项挑战。上述示例演示了一种方法。
(?x)
启用后续正则表达式的VERBOSE
标志,这忽略大多数空格并支持注释
。 上述等价于:(^one\.py$|two\.pyi$|^three\.)
。有关更多详细信息,请参见
--exclude
。此选项只能在全局部分(
[mypy]
)中设置。备注
请注意,TOML 的等效项略有不同。它可以是单个字符串(包括多行字符串)——视为单个正则表达式——或一个这样的字符串数组。以下 TOML 示例等同于上述 INI 示例。
字符串数组:
[tool.mypy] exclude = [ "^one\\.py$", # TOML 的双引号字符串需要转义反斜杠 'two\.pyi$', # 但 TOML 的单引号字符串不需要 '^three\.', ]
单个多行字符串:
[tool.mypy] exclude = '''(?x)( ^one\.py$ # 文件名为 "one.py" | two\.pyi$ # 或以 "two.pyi" 结尾的文件 | ^three\. # 或以 "three." 开头的文件 )''' # TOML 的单引号字符串不需要转义反斜杠
- namespace_packages¶
- Type:
boolean
- Default:
True
启用 PEP 420 风格的命名空间包。有关更多信息,请参见相应的标志
--no-namespace-packages
。此选项只能在全局部分(
[mypy]
)中设置。
- explicit_package_bases¶
- Type:
boolean
- Default:
False
此标志告诉 mypy 顶级包将基于当前目录或
MYPYPATH
环境变量或mypy_path
配置选项中的某个成员。此选项仅在缺少 __init__.py 时有用。有关详细信息,请参见 将文件路径映射到模块。此选项只能在全局部分(
[mypy]
)中设置。
- ignore_missing_imports¶
- Type:
boolean
- Default:
False
抑制关于无法解析的导入的错误消息。
如果在逐模块部分中使用此选项,则模块名称应与*导入的*模块名称匹配,而不是包含导入语句的模块。
- follow_imports¶
- Type:
string
- Default:
normal
指定在找到以
.py
文件形式导入的模块且该模块不属于命令行提供的文件、模块和包时该怎么办。四个可能的值为
normal
、silent
、skip
和error
。有关解释,请参见--follow-imports
命令行标志的讨论。在逐模块部分中使用此选项(可能带有通配符,如本页顶部所述)是防止 mypy 检查您代码部分的好方法。
如果在逐模块部分中使用此选项,则模块名称应与*导入的*模块名称匹配,而不是包含导入语句的模块。
- follow_imports_for_stubs¶
- Type:
boolean
- Default:
False
决定是否即使对于存根(
.pyi
)文件也遵循follow_imports
设置。与
follow_imports=skip
一起使用时,这可以用于抑制对来自typeshed
的模块的导入,将其替换为Any
。与
follow_imports=error
一起使用时,这可以用于将对特定typeshed
模块的任何使用视为错误。备注
这不支持 mypy 守护进程。
- python_executable¶
- Type:
string
指定要检查的 Python 可执行文件的路径,以收集可用的 PEP 561 包 列表。用户主目录和环境变量将被扩展。默认为用于运行 mypy 的可执行文件。
此选项只能在全局部分(
[mypy]
)中设置。
- no_site_packages¶
- Type:
boolean
- Default:
False
禁用使用已安装包中的类型信息(见 PEP 561)。这还将禁用搜索可用的 Python 可执行文件。这与
--no-site-packages
命令行标志的作用相同。
平台配置(Platform configuration)¶
- python_version¶
- Type:
string
指定用于解析和检查目标程序的 Python 版本。字符串应为
MAJOR.MINOR
格式——例如2.7
。默认值为用于运行 mypy 的 Python 解释器的版本。此选项只能在全局部分(
[mypy]
)中设置。
- platform¶
- Type:
string
指定目标程序的操作系统平台,例如
darwin
或win32
(分别表示 OS X 或 Windows)。默认值为 Python 的sys.platform
变量所揭示的当前平台。此选项只能在全局部分(
[mypy]
)中设置。
- always_true¶
- Type:
字符串逗号隔开的列表(comma-separated list of strings)。
指定一组变量,mypy 将视为总是为真(compile-time constants)。
- always_false¶
- Type:
字符串逗号隔开的列表(comma-separated list of strings)。
指定一组变量,mypy 将视为总是为假(compile-time constants)。
禁止动态类型(Disallow dynamic typing)¶
有关更多信息,请参见命令行文档的 禁止动态类型 部分。
- disallow_any_unimported¶
- Type:
boolean
- Default:
False
禁止使用来自未跟踪导入的类型(来自未跟踪导入的任何内容自动被赋予类型
Any
)。
- disallow_any_expr¶
- Type:
boolean
- Default:
False
禁止模块中所有类型为
Any
的表达式。
- disallow_any_decorated¶
- Type:
boolean
- Default:
False
禁止在装饰器转换后其签名中包含
Any
的函数。
- disallow_any_explicit¶
- Type:
boolean
- Default:
False
禁止在类型位置(例如类型注解和泛型类型参数)中显式使用
Any
。
- disallow_any_generics¶
- Type:
boolean
- Default:
False
禁止使用未指定显式类型参数的泛型类型。
- disallow_subclassing_any¶
- Type:
boolean
- Default:
False
禁止对类型为
Any
的值进行子类化。
未类型定义和调用(Untyped definitions and calls)¶
有关更多信息,请参见命令行文档的 未类型定义和调用 部分。
- disallow_untyped_calls¶
- Type:
boolean
- Default:
False
禁止从具有类型注解的函数调用没有类型注解的函数。请注意,当在模块选项中使用时,它在指定的模块内启用/禁用此检查,而不是对来自该模块的函数,例如如下配置:
[mypy] disallow_untyped_calls = True [mypy-some.library.*] disallow_untyped_calls = False
将在
some.library
内禁用此检查,而不是对导入some.library
的代码。如果您想选择性地禁用对所有导入some.library
的代码的此检查,应该使用untyped_calls_exclude
,例如:[mypy] disallow_untyped_calls = True untyped_calls_exclude = some.library
- untyped_calls_exclude¶
- Type:
comma-separated list of strings
选择性地排除在特定包、模块和类中定义的函数和方法,以免触发
disallow_untyped_calls
的作用。这也适用于包的所有子模块(即给定前缀下的所有内容)。注意,此选项不支持逐文件配置,排除列表在全局范围内为您所有代码定义。
- disallow_untyped_defs¶
- Type:
boolean
- Default:
False
禁止定义没有类型注解或具有不完整类型注解的函数(是
disallow_incomplete_defs
的超集)。例如,它会对
def f(a, b)
和def f(a: int, b)
报告错误。
- disallow_incomplete_defs¶
- Type:
boolean
- Default:
False
禁止定义具有不完整类型注解的函数,同时仍然允许完全没有注解的定义。
例如,它会对
def f(a: int, b)
报告错误,但不会对def f(a, b)
报告错误。
- check_untyped_defs¶
- Type:
boolean
- Default:
False
对没有类型注解的函数内部进行类型检查。
- disallow_untyped_decorators¶
- Type:
boolean
- Default:
False
每当具有类型注解的函数被没有注解的装饰器装饰时,报告错误。
None 和 Optional 处理(None and Optional handling)¶
有关更多信息,请参见命令行文档的 None 和 Optional 处理 部分。
- implicit_optional¶
- Type:
boolean
- Default:
False
使 mypy 将具有
None
默认值的参数视为具有隐式可选类型(T | None
)。注意: 在 mypy 版本 0.980 及之前版本中,这一选项默认为 True。
- strict_optional¶
- Type:
boolean
- Default:
True
实质上禁用对可选类型和
None
值的检查。启用此选项后,mypy 通常不会检查None
值的使用——它被视为与每种类型兼容。警告
strict_optional = false
是有害的。避免使用它,并且在完全理解其作用之前,绝对不要使用它。
配置警告(Configuring warnings)¶
有关更多信息,请参见命令行文档的 配置警告 部分。
- warn_redundant_casts¶
- Type:
boolean
- Default:
False
针对将表达式转换为其推断类型的情况发出警告。
此选项仅可在全局部分(
[mypy]
)中设置。
- warn_unused_ignores¶
- Type:
boolean
- Default:
False
针对不必要的
# type: ignore
注释发出警告。
- warn_no_return¶
- Type:
boolean
- Default:
True
对某些执行路径缺少返回语句显示错误。
- warn_return_any¶
- Type:
boolean
- Default:
False
当从声明了非
Any
返回类型的函数返回类型为Any
的值时,显示警告。
- warn_unreachable¶
- Type:
boolean
- Default:
False
当遇到任何经过类型分析推断为不可达或冗余的代码时,显示警告。
抑制错误(Suppressing errors)¶
注意:这些配置选项仅在配置文件中可用。命令行选项中没有类似功能。
- ignore_errors¶
- Type:
boolean
- Default:
False
忽略所有非致命错误。
其他严格性标志(Miscellaneous strictness flags)¶
有关更多信息,请参见命令行文档的 杂项严格性标志 部分。
- allow_untyped_globals¶
- Type:
boolean
- Default:
False
使 mypy 抑制因无法完全推断全局和类变量类型而导致的错误。
- allow_redefinition¶
- Type:
boolean
- Default:
False
允许在与原始定义相同的块和嵌套级别中以任意类型重新定义变量。 这种情况下可以很有用的示例:
def process(items: list[str]) -> None: # 'items' 的类型是 list[str] items = [item.split() for item in items] # 'items' 现在的类型是 list[list[str]]
变量必须在重新定义之前使用:
def process(items: list[str]) -> None: items = "mypy" # 无效的重新定义为 str,因为变量尚未被使用 print(items) items = "100" # 有效,items 现在的类型是 str items = int(items) # 有效,items 现在的类型是 int
- local_partial_types¶
- Type:
boolean
- Default:
False
禁止从不同作用域中的两个赋值中推断
None
的变量类型。 在使用 mypy daemon 时,这总是隐式启用。
- disable_error_code¶
- Type:
comma-separated list of strings
允许全局禁用一个或多个错误代码。
- enable_error_code¶
- Type:
comma-separated list of strings
允许全局启用一个或多个错误代码。
注意:此选项将覆盖 disable_error_code 选项中的禁用错误代码。
- implicit_reexport¶
- Type:
boolean
- Default:
True
默认情况下,导入到模块的值被视为导出,并且 mypy 允许其他模块导入它们。 当为 false 时,mypy 不会重新导出,除非项目使用 from-as 导入或包含在
__all__
中。 注意,mypy 将存根文件视为始终禁用此功能。例如:# 这不会重新导出该值 from foo import bar # 这将重新导出为 bar 并允许其他模块导入它 from foo import bar as bar # 这也将重新导出 bar from foo import bar __all__ = ['bar']
- strict_concatenate¶
- Type:
boolean
- Default:
False
使通过
Concatenate
添加的参数真正只能是位置参数。
- strict_equality¶
- Type:
boolean
- Default:
False
禁止非重叠类型之间的相等检查、身份检查和容器检查。
- strict¶
- Type:
boolean
- Default:
False
启用所有可选的错误检查标志。你可以在完整的
mypy --help
输出中查看严格模式启用的标志列表。注意:由
strict
启用的确切标志列表可能会随时间变化。
配置错误消息(Configuring error messages)¶
有关更多信息,请参见命令行文档的 配置错误消息 部分。
这些选项只能在全局部分( [mypy]
)中设置。
- show_error_context¶
- Type:
boolean
- Default:
False
在每个错误前加上相关的上下文信息。
- show_column_numbers¶
- Type:
boolean
- Default:
False
在错误消息中显示列号。
- show_error_code_links¶
- Type:
boolean
- Default:
False
显示指向相应错误代码的文档链接。
- hide_error_codes¶
- Type:
boolean
- Default:
False
在错误消息中隐藏错误代码。有关更多信息,请参见 错误代码(Error codes)。
- pretty¶
- Type:
boolean
- Default:
False
在错误消息中使用视觉上更优雅的输出:使用软换行,显示源代码片段,并显示错误位置标记。
- color_output¶
- Type:
boolean
- Default:
True
显示带有颜色的错误消息。
- error_summary¶
- Type:
boolean
- Default:
True
在错误消息后显示简短的摘要行。
- show_absolute_path¶
- Type:
boolean
- Default:
False
显示文件的绝对路径。
- force_uppercase_builtins¶
- Type:
boolean
- Default:
False
在错误消息中始终使用
List
而不是list
, 即使在 Python 3.9+ 中也是如此。
- force_union_syntax¶
- Type:
boolean
- Default:
False
在错误消息中始终使用
Union[]
和Optional[]
来表示联合类型 (而不是|
操作符),即使在 Python 3.10+ 中也是如此。
增量模式(Incremental mode)¶
这些选项只能在全局部分( [mypy]
)中设置。
- cache_dir¶
- Type:
string
- Default:
.mypy_cache
指定 mypy 存储增量缓存信息的位置。 用户主目录和环境变量将被展开。 此设置将被
MYPY_CACHE_DIR
环境变量覆盖。注意,只有在启用增量模式时才会读取缓存, 但总是会写入缓存,除非值设置为
/dev/null
(UNIX)或nul
(Windows)。
- cache_fine_grained¶
- Type:
boolean
- Default:
False
为 mypy 守护进程在缓存中包含细粒度的依赖信息。
- skip_version_check¶
- Type:
boolean
- Default:
False
使 mypy 使用增量缓存数据,即使它是由不同版本的 mypy 生成的。 (默认情况下,mypy 将执行版本检查,并在缓存由旧版本的 mypy 写入时重新生成缓存。)
- skip_cache_mtime_checks¶
- Type:
boolean
- Default:
False
跳过基于 mtime 的缓存内部一致性检查。
高级选项(Advanced options)¶
这些选项只能在全局部分( [mypy]
)中设置。
- plugins¶
- Type:
comma-separated list of strings
逗号分隔的 mypy 插件列表。请参见 使用插件扩展 mypy(Extending mypy using plugins)。
- show_traceback¶
- Type:
boolean
- Default:
False
在致命错误时显示回溯信息。
- raise_exceptions¶
- Type:
boolean
- Default:
False
在致命错误时引发异常。
- custom_typeshed_dir¶
- Type:
string
指定 mypy 查找标准库 typeshed 存根的目录,而不是随 mypy 一起提供的 typeshed。 这主要旨在简化在提交变更之前测试 typeshed 变更的过程,同时也允许您使用 forked 版本的 typeshed。
用户主目录和环境变量将被展开。
注意,这不会影响第三方库的存根。要测试第三方存根, 例如尝试
MYPYPATH=stubs/six mypy ...
。
- warn_incomplete_stub¶
- Type:
boolean
- Default:
False
发出缺少类型注解的警告,仅在与
disallow_untyped_defs
或disallow_incomplete_defs
结合使用时相关。
报告生成(Report generation)¶
如果设置了这些选项,mypy 将会在指定的目录中生成指定格式的报告。
警告
生成报告会禁用增量模式,并可能显著降低您的工作流程效率。建议仅在特定运行时(例如在 CI 中)启用报告。
- any_exprs_report¶
- Type:
string
使 mypy 生成一份文本文件报告,记录您代码库中存在多少类型为
Any
的表达式。
- cobertura_xml_report¶
- Type:
string
使 mypy 生成一份 Cobertura XML 类型检查覆盖报告。
要生成此报告,您必须手动安装 lxml 库或使用 setuptools 附加选项
mypy[reports]
指定 mypy 安装。
- html_report / xslt_html_report¶
- Type:
string
使 mypy 生成一份 HTML 类型检查覆盖报告。
要生成此报告,您必须手动安装 lxml 库或使用 setuptools 附加选项
mypy[reports]
指定 mypy 安装。
- linecount_report¶
- Type:
string
使 mypy 生成一份文本文件报告,记录您代码库中已类型注解和未类型注解的函数及行数。
- linecoverage_report¶
- Type:
string
使 mypy 生成一份 JSON 文件,将每个源文件的绝对文件名映射到属于该文件中已类型注解函数的行号列表。
- lineprecision_report¶
- Type:
string
使 mypy 生成一份平面文本文件报告,包含每个模块的统计信息,例如经过类型检查的行数等。
其他(Miscellaneous)¶
这些选项只能在全局部分( [mypy]
)中设置。
- junit_xml¶
- Type:
string
使 mypy 生成一份包含类型检查结果的 JUnit XML 测试结果文档。这可以使 mypy 更容易与持续集成(CI)工具集成。
- scripts_are_modules¶
- Type:
boolean
- Default:
False
使脚本
x
成为模块x
,而不是__main__
。这在单次运行中检查多个脚本时非常有用。
- warn_unused_configs¶
- Type:
boolean
- Default:
False
警告配置文件中与调用 mypy 时处理的文件不匹配的每个模块部分。 (这需要使用
incremental = False
关闭增量模式。)
- verbosity¶
- Type:
integer
- Default:
0
控制将生成多少调试输出。数字越高,输出越详细。
使用 pyproject.toml 文件(Using a pyproject.toml file)¶
可以使用 pyproject.toml
文件(如 PEP 518 所指定),而不是使用 mypy.ini
文件。以下是一些注意事项:
[mypy]
部分应在其名称前加上tool.
:即,
[mypy]
应变为[tool.mypy]
模块特定部分应移动到
[[tool.mypy.overrides]]
部分中:例如,
[mypy-packagename]
应变为:
[[tool.mypy.overrides]]
module = 'packagename'
...
多模块特定部分可以移动到单个
[[tool.mypy.overrides]]
部分,模块属性设置为模块数组:例如,
[mypy-packagename,packagename2]
应变为:
[[tool.mypy.overrides]]
module = [
'packagename',
'packagename2'
]
...
与
ini
文件相比,在pyproject.toml
文件中对值应注意以下几点:字符串必须用双引号括起来,如果字符串包含特殊字符,则可以用单引号
布尔值应全部为小写
有关 toml
文件中允许的内容的更多详细信息,请参阅 TOML Documentation 。有关 pyproject.toml
文件布局和结构的更多信息,请参阅 PEP 518 。
pyproject.toml 示例(Example)¶
以下是一个 pyproject.toml
文件的示例。要使用此配置文件,请将其放置在您的仓库根目录(或附加到现有 pyproject.toml
文件的末尾)并运行 mypy。
# mypy 全局选项:
[tool.mypy]
python_version = "2.7"
warn_return_any = true
warn_unused_configs = true
exclude = [
'^file1\.py$', # TOML 字面字符串(单引号,无需转义)
"^file2\\.py$", # TOML 基本字符串(双引号,反斜杠和其他字符需要转义)
]
# mypy 每模块选项:
[[tool.mypy.overrides]]
module = "mycode.foo.*"
disallow_untyped_defs = true
[[tool.mypy.overrides]]
module = "mycode.bar"
warn_return_any = false
[[tool.mypy.overrides]]
module = [
"somelibrary",
"some_other_library"
]
ignore_missing_imports = true