跳转到主要内容

Python文档字符串reStructuredText (RST)验证器for flake8

项目描述

Released on the Python Package Index (PyPI) Released on Conda pre-commit.ci status GitHub workflow status PyPI downloads Code style: black

简介

这是一个MIT许可的flake8插件,用于验证Python文档字符串标记为reStructuredText (RST),使用Python库docutils。它可以从Python包索引(PyPI)安装。

此插件在很大程度上基于pydocstyle(也是MIT许可),它有一个名为flake8-docstrings的flake8插件,请参阅

reStructuredText (RST)验证是通过调用docutils并通过Todd Wolfson的restructuredtext-lint代码实现的

我建议您也安装相关的 flake8-docstrings 插件(链接),该插件将 pydocstyle 检查功能集成到 flake8 中。这包括检查缺失的文档字符串和其他来自 PEP 257 文档字符串约定 的建议。

您还可能希望安装相关的 flake8 插件 flake8-rst,它可以检查您的 *.rst 文件中 Python 代码的 doctest 格式片段或您的 *.py 文件中的文档字符串。

flake8 验证代码

flake8 的早期版本假设验证代码以单个字符前缀开头,这在插件生态系统中导致冲突。自 v3.0 版本以来,flake8 支持更长的前缀,因此该插件使用 RST 作为其前缀。

我们内部使用 docutils 进行 RST 验证,这在 PEP258 中有所说明

  • Level-0,“DEBUG”:内部报告问题。对处理没有影响。Level-0 系统消息与其他消息分开处理。

  • Level-1,“INFO”:可以忽略的小问题。对处理影响很小或没有影响。通常不报告 Level-1 系统消息。

  • Level-2,“WARNING”:应该解决的问题。如果忽略,输出可能会有一些小问题。通常报告 Level-2 系统消息,但不会停止处理

  • Level-3,“ERROR”:应该解决的问题的主要问题。如果忽略,输出将包含不可预测的错误。通常报告 Level-3 系统消息,但不会停止处理

  • Level-4,“SEVERE”:必须解决的问题的严重错误。通常将 Level-4 系统消息转换为异常以停止处理。如果忽略,输出将包含严重错误。

docutils 的“DEBUG”级别消息不会报告,并且插件当前忽略“INFO”级别消息。

在每个类别中,单个消息映射到 flake8 代码,使用级别的 100 倍。例如,验证代码 RST4## 是 RST 验证的严重或关键错误,RST3## 是主要错误,RST2## 是警告,而目前尚未使用,RST1## 将仅是信息。

警告代码

代码

描述

RST201

块引用未空行结束;意外缩进。

RST202

项目符号列表未空行结束;意外缩进。

RST203

定义列表未空行结束;意外缩进。

RST204

列举列表未空行结束;意外缩进。

RST205

显式标记未空行结束;意外缩进。

RST206

字段列表未空行结束;意外缩进。

RST207

文本块未空行结束;意外缩进。

RST208

选项列表未空行结束;意外缩进。

RST210

内联强起始字符串没有结束字符串。

RST211

表后需要空白行。

RST212

标题下划线太短。

RST213

内联强调起始字符串没有结束字符串。

RST214

内联文字起始字符串没有结束字符串。

RST215

内联解释文本或短语引用起始字符串没有结束字符串。

RST216

解释文本中的角色过多(前缀和后缀都存在;只允许一个)。

RST217

不匹配:解释文本角色后缀和引用后缀。

RST218

期望文本块;没有找到。

RST219

内联替换引用起始字符串没有结束字符串。

RST299

之前未见的警告,尚未分配唯一代码。

主要错误代码

代码

描述

RST301

意外缩进。

RST302

表格格式错误。

RST303

未知指令类型“XXX”。

RST304

未知解析文本角色“XXX”。

RST305

未定义的替换引用: “XXX”。

RST306

未知的目标名称: “XXX”。

RST307

“XXX”指令中出错

RST399

之前未见的主要错误,尚未分配唯一代码。

严重或关键错误代码

代码

描述

RST401

意外的部分标题。

RST499

之前未见严重错误,尚未分配唯一代码。

以99结尾的代码,例如RST499,表示一个之前未见过的验证错误,我们尚未为其分配唯一的验证代码,在本例中为RST4##。如果您看到这些代码之一,请在我们的GitHub问题跟踪器上报告,最好提供一个我们可以用于测试的示例。

以RST9##开头的代码表示在解析Python文件以提取文档字符串或在处理内容时出现问题。

代码

描述(和注释)

RST900

无法加载文件

RST901

无法解析文件(不再使用

RST902

无法解析__all__条目(不再使用

RST903

无法验证文档字符串

安装和使用

现在需要Python 3.7或更高版本。早期版本支持Python 2.7,如果需要请使用v0.0.14。

我们建议使用pip安装插件,它处理依赖项。

$ pip install flake8-rst-docstrings

或者,如果您使用Anaconda打包系统,以下命令将安装插件及其依赖项

$ conda install -c conda-forge flake8-rst-docstrings

开发者可以从git仓库安装插件,包括可选依赖项

$ pip install -e .[develop]

当使用flake8时,新验证器应自动包括在内,它可能现在会报告以RST开头(如上所述)的附加验证代码。例如

$ flake8 example.py

您可以使用以下命令仅显示RST代码

$ flake8 --select RST example.py

同样,您可以将特定的RST验证代码添加到flake8配置文件的select或ignore列表中。

注意,除了单独的RST前缀外,您还可以使用部分代码,如RST2,表示RST200、RST201、……等等。

通常flake8违规是对特定的行列。不幸的是,docutils只提供行号,偶尔这仅指向段落的开始,而不是问题所在的精确行。

配置

我们假设您熟悉flake8配置

如果您使用Sphinx或其他reStructuredText扩展,您将想要定义您使用的任何附加指令或角色,以避免虚假的RST303、RST304和RST305违规。您可能还需要在Sphinx指令中使用参数时忽略RST307。

如果您愿意,可以在命令行中设置这些

$ flake8 --rst-roles class,func,ref --rst-directives envvar,exception ...

我们建议将此设置记录在您的flake8配置中,例如在您的.flake8setup.cfgtox.ini文件中,例如

[flake8]
rst-roles =
    class,
    func,
    ref,
rst-directives =
    envvar,
    exception,
rst-substitutions =
    version,
extend-ignore =
    RST307,
    # ...

请注意,flake8允许在多行上拆分逗号分隔的列表,并允许包括哈希注释行。

如果您使用Google Python Style,您有时会从这个插件中获得不想要的警告,尤其是在参数描述中——因为它不使用严格的RST。因此,我们目前建议忽略一些违规代码。

[flake8]
extend-ignore =
    # Google Python style is not RST until after processed by Napoleon
    # See https://github.com/peterjc/flake8-rst-docstrings/issues/17
    RST201,RST203,RST301,

版本历史

版本

发布

更改

v0.3.0

2022-11-16

  • pyproject.toml替换了setup.py

v0.2.7

2022-07-15

  • 修复在文档字符串正文中发生函数签名的地方。

v0.2.6

2022-06-07

  • 配置选项以定义用于 RST305 的附加替换(例如,来自 Sphinx)。

  • 需要 Python 3.7 或更高版本。

v0.2.5

2021-12-10

  • 忽略文档字符串开头的函数签名行。

v0.2.4

2021-12-09

  • 修复在 Python 3.7 或更老版本下的罕见行号问题。

  • 更新测试框架以使用 pytest

  • 需要 Python 3.6 或更高版本。

v0.2.3

2021-05-03

  • 修复了一行文档字符串文件中的行号断言问题。

v0.2.2

2021-04-30

  • 修复了 Python 3.8 或更高版本下的行号问题。

  • 纠正了模块文档字符串中的偏移量错误行号。

v0.2.1

2021-04-23

  • 进行了小的内部样式更改。

v0.2.0

2021-04-23

  • 使用 flake8 的 AST,而不是使用 pydocstyle 重新解析。

  • 删除了 RST901(解析器内部问题)。

  • 删除了 RST902(检查任何 __all__ 条目)。

v0.1.2

2021-04-16

  • 删除了未使用的日志模块导入。

  • 扩展了测试覆盖率。

v0.1.1

2021-04-15

  • 明确声明对任何代码块都依赖 pygments

v0.1.0

2021-04-15

  • 直接从 pydocstyle 导入解析器。

  • 需要 Python 3(删除了对 Python 2 的支持)。

v0.0.14

2020-09-22

  • 添加了 RST307 用于指令错误(例如无效的参数)。

v0.0.13

2019-12-26

  • 添加了 RST218RST219

v0.0.12

2019-11-18

  • RST213 添加到 RST217

v0.0.11

2019-08-07

  • 配置选项以定义用于 RST303RST304 的附加指令和角色(例如,来自 Sphinx)。

v0.0.10

2019-06-17

  • 修复了 flake8 “builtins” 参数警告(来自 Ruben Opdebeeck 的贡献)。

v0.0.9

2019-04-22

  • 在测试框架中检查正例和反例。

  • 添加了 RST212RST305RST306(来自 Brian Skinn 的贡献)。

v0.0.8

2017-10-09

  • 为未知指令和 Sphinx-Needs 扩展中使用的解释文本角色添加了 RST303RST304

v0.0.7

2017-08-25

  • 在 linting 之前删除三重引号,这会导致报告错误:RST条目在文档字符串末尾没有空白行结束(为问题 #1 修复的 bug)。

v0.0.6

2017-08-18

  • 支持哈希符号行后的 PEP263 风格编码(修复问题 #2 的 bug)。

v0.0.5

2017-06-19

  • 支持 Python 2 下的 PEP263 风格编码声明。

  • 在无法打开文件时引入了 RST900

v0.0.4

2017-06-19

  • 捕获文档字符串 linting 失败,报告为 RST903

v0.0.3

2017-06-16

  • 确保插件代码和 RST 文件本身是有效的。

  • 删除了未使用的 six 模块导入。

  • 使用 TravisCI 进行基本持续集成检查。

v0.0.2

2017-06-16

  • 明确依赖于 flake8 v3.0.0 或更高版本。

  • 改进了文档。

v0.0.1

2017-06-16

  • 首次公开发布。

开发者

此插件位于 GitHub 上 https://github.com/peterjc/flake8-rst-docstrings

一旦在本地和 TravisCI 上测试,则发布新版本。

$ git tag vX.Y.Z
$ python -m build
$ git push origin master --tags
$ twine upload dist/flake8?rst?docstrings-X.Y.Z*

PyPI 上传应触发自动拉取请求,更新 flake8-rst-docstrings conda-forge 脚本

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

flake8-rst-docstrings-0.3.0.tar.gz (19.9 kB 查看哈希值)

上传时间 源代码

构建分发

flake8_rst_docstrings-0.3.0-py3-none-any.whl (10.9 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面