-
Notifications
You must be signed in to change notification settings - Fork 62
/
pyproject.toml
127 lines (116 loc) · 4.67 KB
/
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
[tool.poetry]
name = "Blueking PaaS"
version = "1.0.0"
description = "Tencent Blueking PaaS platform(https://bk.tencent.com/)"
authors = ["blueking <blueking@tencent.com>"]
[tool.poetry.dependencies]
python = ">=3.11,<3.12"
[tool.poetry.group.dev.dependencies]
ruff = "^0.7.0"
[tool.ruff]
line-length = 119
# 每个规则集的具体内容请参考:https://docs.astral.sh/ruff/rules/
select = [
"E",
"F",
"W",
"C90",
"B",
"PIE",
"C4",
"PL",
"RET",
"N",
"PERF",
"G",
"TRY",
"SIM",
"PT",
"LOG",
]
# 理论上来说,ignore 规则列表中的条目越少越好。但在实际项目中,选择性地忽略某些规则常常是必须的。
# 下面收集了常见的待忽略规则集,并将其分为两类:“推荐忽略”和“谨慎忽略”。“推荐忽略”类中所包含的规
# 则,所有项目建议默认启用。“谨慎忽略”类中的规则,项目可酌情添加。
#
# 除此处列出的规则以外,不建议随意扩充忽略规则列表。
ignore = [
# === 推荐忽略 ===
# pyflakes: 忽略后,允许使用 import *,仅在个别情况下搭配 __all__ 使用
"F403",
"F405",
# pycodestyle: 忽略后,不检查行长,最大的每行长度直接由 ruff formatter 来保证
"E501",
# pycodestyle: 忽略后,不再对多行字符串的版权头信息报错, 假如将其批量调整成普通 # 号注释后可解
"E402",
# flake8-comprehensions: 忽略后,允许使用 dict() 函数来构建字典对象
"C408",
# flake8-bugbear: 忽略后,允许对字面量属性名使用 getattr/setattr 函数
"B009",
"B010",
# flake8-bugbear: 忽略后,允许在 except 语句块中使用裸的 raise 语句,不要求必须使用 raise ... from
"B904",
# pylint:忽略后,允许定义超过 5 个参数的函数
"PLR0913",
# pylint:忽略后,允许直接和 magic value 字面量做比较,因为并非所有情况都适合抽象常量
"PLR2004",
# flake8-return: 忽略后,允许在 return 前定义一个临时变量,这有时对可读性有帮助
"RET504",
# flake8-return: 忽略后,允许使用非必须的分支包裹 return/raise 语句,这有时对可读性有帮助
"RET505",
"RET506",
# pep8-naming: 忽略后,不强制 class 内的变量使用蛇形命名,因为部分情况下驼峰命名更契合上下文
"N815",
# pep8-naming: 忽略后,允许使用短名字作为导入时的别名
"N817",
# pep8-naming: 忽略后,不强制要求异常类的名字必须以 Error 结尾
"N818",
# perflint: 忽略后,不强制要求一定用推导式替代 for 循环,因为有时循环的可读性更好
"PERF401",
# perflint: 忽略后,允许在循环中使用 try except 代码块,因为这对性能影响微乎其微,有时可读性更好
"PERF203",
# tryceratops: 忽略后,允许抛出异常时,使用较长的字符串作为异常信息,可能会降低异常的可使用性
"TRY003",
# tryceratops: 忽略后,允许在 except 语句块中使用裸的 raise 语句,不要求必须使用 raise ... from
"TRY200",
# flake8-simplify: 忽略后,允许使用 exception: pass 语句,不要求必须用 contextlib.suppress 替换
"SIM105",
# flake8-simplify: 忽略后,不强制要求用三元表达式替换普通的短 if-else 语句
"SIM108",
# flake8-pytest-style:忽略后,允许 fixture 显式指定 scope="function"
"PT003",
# flake8-pytest-style:忽略后,不再关注 @pytest.fixture 无参数时是否需要加括号
"PT001",
# === 谨慎忽略 ===
# pep8-naming: 忽略后,不强制 class 必须使用驼峰命名,部分单元测试代码中用下划线起名可能更方便
"N801",
# flake8-logging-format: 忽略后,允许在打印日志时使用 .format() 方法,可能降低性能
"G001",
# flake8-logging-format: 忽略后,允许在打印日志时使用 f-string 表达式,更可读但可能降低性能
"G004",
# pylint: 忽略后,允许使用 global 关键字修改全局变量
"PLW0603",
]
# 添加需要额外忽略的目录,比如 Django 自动生成的 migrations 目录
extend-exclude = [
"*/migrations",
"*/paasng/assets",
"*/paasng/paasng/platform/mgrlegacy/data",
"*/paasng/tests/paasng/platform/mgrlegacy/assets",
]
[tool.ruff.format]
quote-style = "double"
[tool.ruff.isort]
# 总是显式制定 import section 的顺序
section-order = [
"future",
"standard-library",
"third-party",
"first-party",
"local-folder",
]
relative-imports-order = "closest-to-furthest"
# 添加那些不能被默认识别的 first party 的模块名
known-first-party = ["paas_wl", "tests", "paasng"]
[tool.ruff.lint.mccabe]
# 调大所允许的最大圈复杂度
max-complexity = 12