本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008

一图看懂 autopep8 模块:自动格式化Python代码,以使其符合PEP8规范,资料整理+笔记(大全)-LMLPHP

一图看懂 autopep8 模块:自动格式化Python代码,以使其符合PEP8规范,资料整理+笔记(大全)

🧊摘要

🧊模块图

一图看懂 autopep8 模块:自动格式化Python代码,以使其符合PEP8规范,资料整理+笔记(大全)-LMLPHP

autopep8
	◆argparse
	◆difflib
	◆locale
	◆signal
	◆token

🧊类关系图

一图看懂 autopep8 模块:自动格式化Python代码,以使其符合PEP8规范,资料整理+笔记(大全)-LMLPHP

◆object
	autopep8.Atom
	autopep8.CachedTokenizer
	autopep8.Container
		autopep8.DictOrSet
		autopep8.IfExpression
		autopep8.List
		autopep8.ListComprehension
		autopep8.Tuple
	autopep8.FixPEP8
	autopep8.LineEndingWrapper
	autopep8.ReformattedLines
	autopep8.Reindenter
	◆tuple
		autopep8.Token

🧊模块全展开

☘️【autopep8】

自动格式化Python代码以符合PEP 8风格指南。
只需要做一次的修复可以通过在这个模块中添加一个形式为"fix_<code>(source)"的函数来添加。
它们应该返回固定的源代码。这些修复由 apply_global_fixes() 获取。
依赖于 pycodestyle 的修复应该作为方法添加到 FixPEP8。
有关更多信息,请参阅类文档。

🔵统计

🔵常量

🌿int

🌿str

🌿tuple

🌿dict

🔵模块

🌿15 argparse

🌿16 codecs

🌿17 collections

🌿18 copy

🌿19 difflib

🌿20 fnmatch

🌿21 inspect

🌿22 io

🌿23 itertools

🌿24 keyword

🌿25 locale

🌿26 os

🌿27 re

🌿28 signal

🌿29 sys

🌿30 textwrap

🌿31 token

🌿32 tokenize

🌿33 warnings

🌿34 ast

🌿35 pycodestyle

🔵函数

🌿36 open_with_encoding(filename, mode=‘r’, encoding=None, limit_byte_check=-1)

返回具有特定编码的打开文件。

🌿37 detect_encoding(filename, limit_byte_check=-1)

返回文件编码。

🌿38 readlines_from_file(filename)

返回文件的内容。

🌿39 extended_blank_lines(logical_line, blank_lines, blank_before, indent_level, previous_logical)

检查类声明后是否缺少空行。

🌿40 continued_indentation(logical_line, tokens, indent_level, hang_closing, indent_char, noqa)

重写pycodestyle的函数以提供缩进信息。

🌿41 get_module_imports_on_top_of_file(source, import_line_index)

返回import 或者 从关键字位置
    举例:
      > 0: import sys
        1: import os
        2:
        3: def function():

🌿42 get_index_offset_contents(result, source)

返回 (line_index, column_offset, line_contents)

🌿43 get_fixed_long_line(target, previous_line, original, indent_word=’ ', max_line_length=79, aggressive=False, experimental=False, verbose=False)

分割长行并返回结果。
    为此,可以生成多个重新格式化的候选项,然后对候选项进行排序,以启发式地选择最佳选项。

🌿44 longest_line_length(code)

返回最长行的长度。

🌿45 join_logical_line(logical_line)

根据逻辑行输入返回单行。

🌿46 untokenize_without_newlines(tokens)

基于令牌返回源代码。

🌿47 _find_logical(source_lines)

🌿48 _get_logical(source_lines, result, logical_start, logical_end)

返回与结果对应的逻辑行。假设输入已经是E702-clean。

🌿49 get_item(items, index, default=None)

🌿50 reindent(source, indent_size, leave_tabs=False)

重新缩进所有行。

🌿51 code_almost_equal(a, b)

如果代码相似则返回True。在比较特定行时忽略空白。

🌿52 split_and_strip_non_empty_lines(text)

返回以换行符分隔的行。忽略空行。

🌿53 refactor(source, fixer_names, ignore=None, filename=‘’)

使用lib2to3返回重构的代码。如果在重构的代码中产生忽略字符串,则跳过。

🌿54 code_to_2to3(select, ignore, where=‘’, verbose=False)

🌿55 fix_2to3(source, aggressive=True, select=None, ignore=None, filename=‘’, where=‘global’, verbose=False)

修复各种不推荐的代码(通过lib2to3)。

🌿56 find_newline(source)

返回源中使用的换行符类型。输入是一个行列表。

🌿57 _get_indentword(source)

返回缩进类型。

🌿58 _get_indentation(line)

返回前导空格。

🌿59 get_diff_text(old, new, filename)

返回统一的新旧差异文本。

🌿60 _priority_key(pep8_result)

排序PEP8结果的关键字。
应该首先进行全局修复。这对于缩进很重要。

🌿61 shorten_line(tokens, source, indentation, indent_word, max_line_length, aggressive=False, experimental=False, previous_line=‘’)

在OPERATOR处单独行。将产生多名候选。

🌿62 _shorten_line(tokens, source, indentation, indent_word, aggressive=False, previous_line=‘’)

在OPERATOR处单独行。
除了多行字符串内部和末尾,输入应该没有换行符。将产生多名候选人。

🌿63 _is_binary_operator(token_type, text)

🌿64 _parse_container(tokens, index, for_or_if=None)

解析高级容器,如列表、元组等。

🌿65 _parse_tokens(tokens)

解析令牌。
这将令牌转换成一种更容易操作的形式。

🌿66 _reflow_lines(parsed_tokens, indentation, max_line_length, start_on_prefix_line)

重新绘制线条,使其看起来更漂亮。

🌿67 _shorten_line_at_tokens_new(tokens, source, indentation, max_line_length)

考虑到线的长度,缩短线。
    除了多行字符串内部和末尾,输入应该没有换行符。

🌿68 _shorten_line_at_tokens(tokens, source, indentation, indent_word, key_token_strings, aggressive)

通过在键令牌字符串中截断令牌来分隔行。
    除了多行字符串内部和末尾,输入应该没有换行符。

🌿69 token_offsets(tokens)

产生令牌和偏移量。

🌿70 normalize_multiline(line)

规范化会导致语法错误的多行相关代码。这是为了检查语法。

🌿71 fix_whitespace(line, offset, replacement)

替换偏移处的空白并返回固定行。

🌿72 _execute_pep8(pep8_options, source)

通过python方法调用执行pycodestyle。

🌿73 _remove_leading_and_normalize(line, with_rstrip=True)

🌿74 _reindent_stats(tokens)

返回(lineno, indentlevel)对的列表。
    每个stmt和注释行对应一个。对于注释行,Indentlevel为-1,作为tokenize不知道如何处理它们的信号;的确,他们让我们头疼!

🌿75 _leading_space_count(line)

返回行中前导空格的数目。

🌿76 refactor_with_2to3(source_text, fixer_names, filename=‘’)

使用lib2to3重构源代码。返回重构的源代码。

🌿77 check_syntax(code)

如果语法正确,返回True。

🌿78 find_with_line_numbers(pattern, contents)

're.finditer'的包装器,用于查找行号。返回在内容中找到模式的行号列表。

🌿79 get_disabled_ranges(source)

返回表示禁用范围的元组列表。如果禁用且没有重新启用,则将禁用文件的其余部分。

🌿80 filter_disabled_results(result, disabled_ranges)

根据禁用范围的元组过滤出报告。

🌿81 filter_results(source, results, aggressive)

从pycodestyle中过滤掉虚假报告。如果aggressive为True,我们允许可能不安全的修复(E711, E712)。

🌿82 multiline_string_lines(source, include_docstrings=False)

返回多行字符串中的行号。行号以1为索引。文档字符串将被忽略。

🌿83 commented_out_code_lines(source)

返回可能是代码的注释行号。
    注释掉的代码是不好的做法,但是修改它只会增加更多的混乱。

🌿84 shorten_comment(line, max_line_length, last_comment=False)

返回经过修剪或分割的长注释行。
    如果后面没有注释,则进行文本换行。对所有注释进行这种换行通常会导致注释文本参差不齐。

🌿85 normalize_line_endings(lines, newline)

返回固定行结尾。所有行将被修改为使用最常用的行结束。

🌿86 mutual_startswith(a, b)

🌿87 code_match(code, select, ignore)

🌿88 fix_code(source, options=None, encoding=None, apply_config=False)

返回固定的源代码。如果"source"是字节串,"encoding"将用于解码"source"。
"```
### 🌿89 _get_options(raw_options, apply_config)
> _get_options(raw_options, apply_config), module=autopep8, line:3509 at site-packages\autopep8.py

返回解析后的选项。

### 🌿90 fix_lines(source_lines, options, filename='')
> fix_lines(source_lines, options, filename=''), module=autopep8, line:3533 at site-packages\autopep8.py

返回固定的源代码。

### 🌿91 fix_file(filename, options=None, output=None, apply_config=False)
> fix_file(filename, options=None, output=None, apply_config=False), module=autopep8, line:3575 at site-packages\autopep8.py
### 🌿92 global_fixes()
> global_fixes(), module=autopep8, line:3622 at site-packages\autopep8.py

产生多个(代码,函数)元组。

### 🌿93 _get_parameters(function)
> _get_parameters(function), module=autopep8, line:3635 at site-packages\autopep8.py
### 🌿94 apply_global_fixes(source, options, where='global', filename='', codes=None)
> apply_global_fixes(source, options, where='global', filename='', codes=None), module=autopep8, line:3649 at site-packages\autopep8.py

在源代码上运行全局修复程序。
这些修复只需要做一次(不像FixPEP8中的那些,它依赖于pycodestyle)。

### 🌿95 extract_code_from_function(function)
> extract_code_from_function(function), module=autopep8, line:3691 at site-packages\autopep8.py

由函数处理的返回代码。

### 🌿96 _get_package_version()
> _get_package_version(), module=autopep8, line:3708 at site-packages\autopep8.py
### 🌿97 create_parser()
> create_parser(), module=autopep8, line:3713 at site-packages\autopep8.py

返回命令行解析器。

### 🌿98 _expand_codes(codes, ignore_codes)
> _expand_codes(codes, ignore_codes), module=autopep8, line:3786 at site-packages\autopep8.py

扩展到单独的E/W代码

### 🌿99 parse_args(arguments, apply_config=False)
> parse_args(arguments, apply_config=False), module=autopep8, line:3824 at site-packages\autopep8.py

解析命令行选项。

### 🌿100 _get_normalize_options(args, config, section, option_list)
> _get_normalize_options(args, config, section, option_list), module=autopep8, line:3958 at site-packages\autopep8.py
### 🌿101 read_config(args, parser)
> read_config(args, parser), module=autopep8, line:3978 at site-packages\autopep8.py

读取用户配置和本地配置。

### 🌿102 read_pyproject_toml(args, parser)
> read_pyproject_toml(args, parser), module=autopep8, line:4029 at site-packages\autopep8.py

读 pyproject.toml 和加载配置。

### 🌿103 _split_comma_separated(string)
> _split_comma_separated(string), module=autopep8, line:4086 at site-packages\autopep8.py

返回一组字符串。

### 🌿104 decode_filename(filename)
> decode_filename(filename), module=autopep8, line:4091 at site-packages\autopep8.py

返回Unicode文件名。

### 🌿105 supported_fixes()
> supported_fixes(), module=autopep8, line:4099 at site-packages\autopep8.py

产生autopep8修复的pep8错误代码。我们生成的每一项都是一个代码元组,后面跟着它的描述。

### 🌿106 docstring_summary(docstring)
> docstring_summary(docstring), module=autopep8, line:4127 at site-packages\autopep8.py

返回文档字符串的摘要。

### 🌿107 line_shortening_rank(candidate, indent_word, max_line_length, experimental=False)
> line_shortening_rank(candidate, indent_word, max_line_length, experimental=False), module=autopep8, line:4132 at site-packages\autopep8.py

返回候选人的级别。这是用来排序候选人的。
"```

🌿108 standard_deviation(numbers)

返回标准差。

🌿109 has_arithmetic_operator(line)

如果行包含任何算术运算符则返回True。

🌿110 count_unbalanced_brackets(line)

返回不匹配的开/闭括号的个数。

🌿111 split_at_offsets(line, offsets)

在偏移量处分割行。返回字符串列表。
"```
### 🌿112 match_file(filename, exclude)
> match_file(filename, exclude), module=autopep8, line:4347 at site-packages\autopep8.py

如果文件可以修改/递归,返回True。

### 🌿113 find_files(filenames, recursive, exclude)
> find_files(filenames, recursive, exclude), module=autopep8, line:4366 at site-packages\autopep8.py

Yield文件名。

### 🌿114 _fix_file(parameters)
> _fix_file(parameters), module=autopep8, line:4388 at site-packages\autopep8.py

用于可选地并行运行fix_file()的辅助函数。

### 🌿115 fix_multiple_files(filenames, options, output=None)
> fix_multiple_files(filenames, options, output=None), module=autopep8, line:4399 at site-packages\autopep8.py

修复文件列表。可选地递归修复文件。
"```

🌿116 is_python_file(filename)

如果filename是Python文件返回True。

🌿117 is_probably_part_of_multiline(line)

如果line可能是多行字符串的一部分,则返回True。当涉及到多行字符串时,pep8将错误报告为位于多行字符串的开头,这对我们来说不起作用。

🌿118 wrap_output(output, encoding)

返回带有指定编码的输出。

🌿119 get_encoding()

返回首选编码。

🌿120 main(argv=None, apply_config=True)

命令行条目。

🔵类

🌿121 configparser.ConfigParser

ConfigParser实现插值。

method

在配置中创建一个新部分。RawConfigParser.add_section 延伸,通过验证节名是否为字符串来添加节。
"```
> #### 2	set(self, section, option, value=None)
> kind=method	class=ConfigParser	objtype=function	line:1194 at ...\configparser.py

设置一个选项。RawConfigParser.set 延伸,通过验证值的类型和插值语法来设置。
"```

🌿122 configparser.Error

ConfigParser异常的基类。

🌿123 autopep8.FixPEP8

修复无效代码。
    Fixer方法的前缀是"fix_"。_fix_source()方法会自动查找这些错误。
    fixer方法可以接受一个或两个参数(除了self)。第一个参数是"result",它是pycodestyle中的错误信息。
    第二个参数“logical”仅用于逻辑行修复。
    fixer方法可以返回修改行列表或None。空列表意味着没有做任何更改。
    没有表示只修改了pycodestyle错误中报告的行。
    注意,返回的修改后的行号以1为索引。
    这通常与pycodestyle错误信息中报告的行号相对应。
    [固定方法列表]
        - e111,e114,e115,e116
        - e121,e122,e123,e124,e125,e126,e127,e128,e129
        - e201,e202,e203
        - e211
        - e221,e222,e223,e224,e225
        - e231
        - e251,e252
        - e261,e262
        - e271,e272,e273,e274,e275
        - e301,e302,e303,e304,e305,e306
        - e401,e402
        - e502
        - e701,e702,e703,e704
        - e711,e712,e713,e714
        - e722
        - e731
        - w291
        - w503,504

method

返回修复了PEP 8违规的源代码版本。
修复缩进不足的注释。
修复意外缩进。
修复过度缩进的注释。
修复over-indented。
修复与下一个逻辑行不区分的缩进。
修复与下一个逻辑行不区分的缩进。
删除多余的空白。
删除操作符周围多余的空白。
修复了操作符周围缺失的空白。
添加缺失的空白。
删除参数'='符号周围的空白。
修复内联注释散列后的空格。
修复块注释散列后的空格。
修复了过多的块注释哈希。
修复关键字周围多余的空白。
添加缺失的空行。
添加缺失的2个空白行。
删除多余的空行。
删除函数装饰器后面的空白行。
在函数或类结束后添加缺失的2个空行。
将导入放到单独的行上。
删除多余的换行符。
将冒号分隔的复合语句放在单独的行上。
将分号分隔的复合语句放在单独的行上。
修复一行定义中的多条语句
修复与None的比较。
修复与布尔值的比较(微不足道的情况)。
修复非成员性检查的问题。
修复对象标识应该是'is not'的情况。
修复裸除
修复了不分配lambda表达式检查的问题。
尽量使行适合 --max-line-length 字符。
尽量使行适合 --max-line-length 字符。
删除尾随空格。
删除尾随的空行。

🌿124 autopep8.Token

Token(token_type, token_string, spos, epos, line)

property

🌿125 autopep8.ReformattedLines

原子的回流线。
    这条线的每一部分都表示为一个“原子”。可以在需要时移动它们以获得最佳格式。

method

当前行的大小减去缩进。
返回前一个非空白项。

🌿126 autopep8.Atom

可以回流的最小的牢不可破的单元。

property

method

🌿127 autopep8.Container

所有容器类型的基类。

property

method

🌿128 autopep8.Tuple

元组的高级表示。

property

🌿129 autopep8.List

列表的高级表示形式。

property

🌿130 autopep8.DictOrSet

字典或集合的高级表示形式。

property

🌿131 autopep8.ListComprehension

列表推导式的高级表示形式。

property

🌿132 autopep8.IfExpression

if表达式的高级表示形式。

🌿133 autopep8.Reindenter

重新缩进严重缩进的代码,统一使用四个空格缩进。由Tim Peters于2000年10月3日发布到公共领域。
"```
#### method
> #### 1	getline(self)
> kind=method	class=Reindenter	objtype=function	line:3103 at ...\lib\site-packages\autopep8.py

用于标记的行getter。

> #### 2	run(self, indent_size=DEFAULT_INDENT_SIZE)
> kind=method	class=Reindenter	objtype=function	line:3021 at ...\lib\site-packages\autopep8.py

修复缩进并返回修改后的行号。行号以1为索引。
"```

🌿134 autopep8.LineEndingWrapper

将行尾替换为sys.stdout。似乎……无论平台如何,标准输出只期望'\n'作为行结尾。否则,我们会得到重复的行尾。

method

🌿135 autopep8.CachedTokenizer

围绕 tokenize.generate_tokens() 的单元素缓存。
原始代码由Ned Batchelder编写,在coverage.py中。

method

tokenize.generate_tokens() 标准输入。

🔵私有或局部

🔵剩余

☘️【argparse】

☘️【codecs】

☘️【collections】

☘️【copy】

☘️【difflib】

☘️【fnmatch】

☘️【inspect】

☘️【io】

☘️【itertools】

☘️【keyword】

☘️【locale】

☘️【os】

☘️【re】

☘️【signal】

☘️【sys】

☘️【textwrap】

☘️【token】

☘️【tokenize】

☘️【warnings】

☘️【ast】

☘️【pycodestyle】

05-30 09:59