效用函数

Flake8 有一些内部使用的实用函数。

警告

正如文件中所暗示的,这些都是 内部的 效用函数。它们的签名和返回类型可能在不同版本之间更改,恕不另行通知。

报告了这些错误 内部的 功能将立即关闭。

如果插件开发人员需要函数,那么可以在bug tracker中请求它们,并在仔细考虑之后 may 添加到 文件化的 稳定的API。

flake8.utils.parse_comma_separated_list(value, regexp=re.compile('[,\\s]'))[源代码]

分析逗号分隔的列表。

参数
  • value -- 要分析和规范化的字符串。

  • regexp (_sre.SRE_Pattern) -- 当值是字符串时,用于拆分该值的已编译正则表达式。

返回

删除空白的值列表。

返回类型

list

parse_comma_separated_list() 取一个字符串

"E121,W123,F904"
"E121,\nW123,\nF804"
" E121,\n\tW123,\n\tF804 "
" E121\n\tW123 \n\tF804"

并将其转换为如下所示的列表

["E121", "W123", "F904"]

此函数有助于规范化任何类型的逗号分隔输入或 Flake8 可能会收到。这在利用 Flake8 的附加参数 Option .

flake8.utils.normalize_path(path, parent='.')[源代码]

规范化单个路径。

返回

规范化路径。

返回类型

str

此实用程序接受表示路径的字符串,如果字符串具有 / 在里面。它还删除了尾随 / S

flake8.utils.normalize_paths(paths, parent='.')[源代码]

规范化相对于父目录的路径列表。

返回

规范化路径。

返回类型

[str]

此函数利用 normalize_path() 规范化一系列路径。看到了吗 normalize_path() 用于定义规范化路径的内容。

flake8.utils.stdin_get_value()[源代码]

获取并缓存它,以便插件可以使用它。

此函数用于检索和缓存上提供的值 sys.stdin . 这允许插件使用它来检索 stdin 如有必要。

flake8.utils.is_windows()[源代码]

确定我们是否在Windows上运行。

返回

如果在Windows上运行,则为True,否则为False

返回类型

bool

这提供了一个方便且显式命名的函数,用于检查当前是否在Windows(或 nt )操作系统。

flake8.utils.is_using_stdin(paths)[源代码]

确定我们是否要读stdin。

参数

paths (list) -- 我们要检查的路径。

返回

如果stdin(-)在路径中,则为True,否则为False

返回类型

bool

另一个很有用的函数,它只被命名为显式的,它是一个非常简单的检查,它检查用户是否指定了 - 在他们对 Flake8 以表明我们应该读stdin。

flake8.utils.filenames_from(arg, predicate=None)[源代码]

从参数生成文件名。

参数
  • arg (str) -- 命令行中的参数。

  • predicate (callable) -- 用于筛选文件名的谓词。如果谓词返回 True 我们将排除文件名,否则我们将返回它。默认情况下,我们包含生成的每个文件名。

返回

路径生成器

当提供一个论据给 Flake8 ,我们需要能够以方便的方式遍历目录。例如,如果有人跑了

$ flake8 flake8/

然后他们要我们检查目录中的所有文件 flake8/ . 此函数将处理此问题,同时也处理指定文件的情况,例如:

$ flake8 flake8/__init__.py
flake8.utils.fnmatch(filename, patterns)[源代码]

包裹 fnmatch.fnmatch() 添加一些功能。

参数
  • filename (str) -- 我们要匹配的文件的名称。

  • patterns (list) -- 我们用来匹配文件名的模式。

  • default (bool) -- 模式为空时的默认值

返回

如果模式与文件名匹配,则为True;如果不匹配,则为False。 default 如果模式为空。

标准类库 fnmatch.fnmatch() 非常擅长判断文件名是否与单一模式匹配。然而,在我们的用例中,我们通常有一个模式列表,并想知道文件名是否与其中任何一个匹配。这个函数用一点额外的逻辑抽象出那个逻辑。

flake8.utils.parameters_for(plugin)[源代码]

返回插件的参数。

这将检查插件,如果插件是函数,则返回函数参数或的参数 __init__ 之后 self 如果插件是类。

参数

plugin (flake8.plugins.manager.Plugin) -- 内部插件对象。

返回

将参数名映射到是否需要参数名的字典(也称为位置字典/没有默认值)。

返回类型

dict([(str, bool)])

Flake8 分析插件的参数,以确定它们期望的输入。插件可能会出现以下情况之一:

  • physical_line 接收文件中显示的行

  • logical_line 接收逻辑行(与文件中显示的不同)

  • tree 接收文件的抽象语法树(AST)

我们还分析了其余的参数,以便为插件提供更多细节。此函数将以一致的方式返回Python版本中的参数,并处理用作插件的类和函数。此外,如果插件是一个类,它将剥离 self 参数,以便我们可以一致地检查插件的参数。

flake8.utils.parse_unified_diff(diff=None)[源代码]

解析传递给stdin的统一diff。

返回

将文件名映射到行号集的字典

返回类型

dict

处理…的用法 flake8 --diffFlake8 需要能够解析diff中的文件名以及指示已更改部分的范围。此函数要么接受diff作为参数,要么从中的标准中读取diff。然后它返回一个字典,其中文件名作为键,行号集作为值。