-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
163 lines (148 loc) · 5.56 KB
/
pyproject.toml
File metadata and controls
163 lines (148 loc) · 5.56 KB
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# This file may be generated from template.
# If you want to customize it, then place custom content between
# special markers `START_SKIP_AREA`, `END_SKIP_AREA`.
[build-system]
requires = ['setuptools']
build-backend = 'setuptools.build_meta'
[project]
# START_SKIP_AREA
name = 'pyqt-settings'
description = "Descriptors for QSettings with GUI generating."
dependencies = [
'boltons',
]
# END_SKIP_AREA
authors = [{name = 'ostr00000'}]
version = '0.5.0'
requires-python = '>=3.12'
[tool.black]
skip-string-normalization = true
[tool.mypy]
files = './src/'
warn_unused_configs = true
check_untyped_defs = true
warn_unused_ignores = true
[tool.pyright]
venvPath = ".."
venv = "manager_standalone_env"
reportIncompatibleMethodOverride = false
[tool.pyright.defineConstant]
# to correctly detect QT in `qtpy`
PYQT5 = true
PYQT6 = false
PYSIDE2 = false
PYSIDE6 = false
[tool.ruff]
# https://docs.astral.sh/ruff/configuration/
target-version = "py312"
unsafe-fixes = true
[tool.ruff.lint]
select = [
'AIR', # Airflow
'ERA', # eradicate
'FAST', # FastAPI
'YTT', # flake8-2020
# 'ANN', # flake8-annotations # SKIP: annotations are optional
'ASYNC', # flake8-async
'S', # flake8-bandit
'BLE', # flake8-blind-except
# 'FBT', # flake8-boolean-trap # SKIP: we recommend this, but not force. Qt often expect positional args.
'B', # flake8-bugbear
'A', # flake8-builtins
# 'COM', # flake8-commas # SKIP: we use formatter which can add a comma if needed.
'C4', # flake8-comprehensions
# 'CPY', # flake8-copyright # SKIP: we believe the copyright should be added once, in file
'DTZ', # flake8-datetimez
'T10', # flake8-debugger
'DJ', # flake8-django
'EM', # flake8-errmsg
'EXE', # flake8-executable
'FIX', # flake8-fix me
'FA', # flake8-future-annotations
'INT', # flake8-gettext # NOTE: does not work for Qt `tr` methods
'ISC', # flake8-implicit-str-concat
'ICN', # flake8-import-conventions
'LOG', # flake8-logging
# 'G', # flake8-logging-format # SKIP: we do not aggregate logs, so there may be f-strings, also in future we may convert to t-strings
'INP', # flake8-no-pep420
'PIE', # flake8-pie
'T20', # flake8-print
'PYI', # flake8-pyi
'PT', # flake8-pytest-style
# 'Q', # flake8-quotes # SKIP: we have rule: single for programmer, double for user
'RSE', # flake8-raise
'RET', # flake8-return
'SLF', # flake8-self
'SIM', # flake8-simplify
'SLOT', # flake8-slots
'TID', # flake8-tidy-imports # NOTE: in some dynamic packages, we may want to ignore TID252
'TD', # flake8-todos
'TC', # flake8-type-checking
# 'ARG', # flake8-unused-arguments # SKIP: this may be part of API, overridden in subclass
'PTH', # flake8-use-pathlib
'FLY', # flynt
'I', # isort
'C90', # mccabe
'NPY', # NumPy-specific rules
'PD', # pandas-vet
'N', # pep8-naming # NOTE: sometimes we use camelCase style
'PERF', # Perflint
'E', 'W', # pycodestyle
# 'DOC', # pydoclint # SKIP: this has no effect when ruff preview is not enabled
# 'D', # pydocstyle # SKIP: we use another docsting formatter, moreover ruff do not support sphinx format
'F', # Pyflakes
'PGH', # pygrep-hooks
'PL', # Pylint
'PLE', # Error
'PLR', # Refactor
'PLW', # Warning
'UP', # pyupgrade
'FURB', # refurb
'RUF', # Ruff-specific rules
'TRY', # tryceratops
]
unfixable = [
'B', # flake8-bugbear
'F841', # remove unused variable
'ERA001', # commented-out-code
'SIM118', # in-dict-keys # SKIP: not all `keys()` method is on the `dict`
'RUF100', # unused-noqa # SKIP: better check manually why the `noqa` marker was placed
'E711', # Comparison to `None` # SKIP: sqlalchemy should be manually replaced with method
]
ignore = [
'S603', # subprocess call: check for execution of untrusted input
# SKIP: there is no way to fix this, only ignore can be used
'S606', # Start process with no shell # SKIP: This is the safest way to start process.
'PLE1205', # Too many arguments for `logging` format string # SKIP: we have extended logger class
'PERF203', # try-except-in-loop # SKIP: small impact on performance + improved in python 3.11
'PLW1509', # `preexec_fn` argument is unsafe when using threads
# SKIP: there is no real replacement at this moment
# code based on: https://stackoverflow.com/a/43152455
# python issue: https://github.com/python/cpython/issues/86902
'FIX002', # line-contains-to do
# SKIP: We allow commit these markers,
# but issue/bug should be reported.
# You can use `FIX ME` markers if you do not want to pass checks.
# SKIP: we use camelCase styles, this rule is enabled, because other rules are useful
'N802', # invalid-function-name # Example: def myFunction():
'N803', # invalid-argument-name # Example: def my_unction(myArg):
'N806', # non-lowercase-variable-in-function # Example: myVariable
'N812', # lowercase-imported-as-non-lowercase # Example: import decorator as decoratorLib
'N813', # camelcase-imported-as-lowercase # Example: from mod import myLongObjectName as ml
'N815', # mixed-case-variable-in-class-scope # Example: myVariable
'N816', # mixed-case-variable-in-global-scope # Example: myVariable
'N817', # camelcase-imported-as-acronym # Example:from example import MyClassName as MCN
]
external = [
"F841", # SKIP: this is code used in vulture
]
[tool.ruff.lint.pydocstyle]
convention = "pep257"
[tool.ruff.lint.pylint]
max-args = 8
[tool.vulture]
# ignore_names = []
make_whitelist = true
min_confidence = 80
paths = ["src"]
sort_by_size = true