22build-backend = " hatchling.build"
33requires = [
44 " hatch-vcs>=0.3" ,
5- " hatchling>=1.14 " ,
5+ " hatchling>=1.17.1 " ,
66]
77
88[project ]
@@ -24,8 +24,13 @@ classifiers = [
2424 " Operating System :: MacOS :: MacOS X" ,
2525 " Operating System :: Microsoft :: Windows" ,
2626 " Operating System :: POSIX" ,
27- " Programming Language :: Python :: 3" ,
2827 " Programming Language :: Python :: 3 :: Only" ,
28+ " Programming Language :: Python :: 3.7" ,
29+ " Programming Language :: Python :: 3.8" ,
30+ " Programming Language :: Python :: 3.9" ,
31+ " Programming Language :: Python :: 3.10" ,
32+ " Programming Language :: Python :: 3.11" ,
33+ " Programming Language :: Python :: 3.12" ,
2934 " Programming Language :: Python :: Implementation :: CPython" ,
3035 " Programming Language :: Python :: Implementation :: PyPy" ,
3136 " Topic :: Software Development :: Libraries" ,
@@ -37,31 +42,31 @@ dynamic = [
3742]
3843dependencies = [
3944 " distlib<1,>=0.3.6" ,
40- " filelock<4,>=3.11 " ,
41- ' importlib-metadata>=6.4.1 ; python_version < "3.8"' ,
42- " platformdirs<4,>=3.2 " ,
45+ " filelock<4,>=3.12 " ,
46+ ' importlib-metadata>=6.6 ; python_version < "3.8"' ,
47+ " platformdirs<4,>=3.5.1 " ,
4348]
4449optional-dependencies.docs = [
45- " furo>=2023.3.27 " ,
50+ " furo>=2023.5.20 " ,
4651 " proselint>=0.13" ,
47- " sphinx>=6.1.3 " ,
52+ " sphinx>=7.0.1 " ,
4853 " sphinx-argparse>=0.4" ,
4954 " sphinxcontrib-towncrier>=0.2.1a0" ,
50- " towncrier>=22.12 " ,
55+ " towncrier>=23.6 " ,
5156]
5257optional-dependencies.test = [
5358 " covdefaults>=2.3" ,
54- " coverage>=7.2.3 " ,
59+ " coverage>=7.2.7 " ,
5560 " coverage-enable-subprocess>=1" ,
5661 " flaky>=3.7" ,
5762 " packaging>=23.1" ,
5863 " pytest>=7.3.1" ,
5964 " pytest-env>=0.8.1" ,
60- ' pytest-freezer>=0.4.2 ; platform_python_implementation == "PyPy"' ,
65+ ' pytest-freezer>=0.4.6 ; platform_python_implementation == "PyPy"' ,
6166 " pytest-mock>=3.10" ,
6267 " pytest-randomly>=3.12" ,
6368 " pytest-timeout>=2.1" ,
64- " setuptools>=67.7.1 " ,
69+ " setuptools>=67.8 " ,
6570 ' time-machine>=2.9; platform_python_implementation == "CPython"' ,
6671]
6772urls.Documentation = " https://virtualenv.pypa.io"
@@ -98,23 +103,6 @@ version.source = "vcs"
98103[tool .black ]
99104line-length = 120
100105
101- [tool .isort ]
102- profile = " black"
103- known_first_party = [" virtualenv" ]
104- add_imports = [" from __future__ import annotations" ]
105-
106- [tool .flake8 ]
107- max-complexity = 22
108- max-line-length = 120
109- unused-arguments-ignore-abstract-functions = true
110- noqa-require-code = true
111- dictionaries = [" en_US" , " python" , " technical" , " django" ]
112- ignore = [
113- " E203" , # whitespace before ':'
114- " C901" , # is too complex
115- " W503" , # line break before binary operator
116- ]
117-
118106[tool .pytest .ini_options ]
119107markers = [" slow" ]
120108timeout = 600
@@ -139,13 +127,35 @@ run.parallel = true
139127run.plugins = [" covdefaults" ]
140128run.relative_files = true
141129
142- [tool .pep8 ]
143- max-line-length = " 120"
144-
145130[tool .towncrier ]
146131name = " tox"
147132filename = " docs/changelog.rst"
148133directory = " docs/changelog"
149134title_format = false
150135issue_format = " :issue:`{issue}`"
151136template = " docs/changelog/template.jinja2"
137+
138+ [tool .ruff ]
139+ select = [" ALL" ]
140+ line-length = 120
141+ target-version = " py37"
142+ isort = {known-first-party = [" virtualenv" ], required-imports = [" from __future__ import annotations" ]}
143+ ignore = [
144+ " ANN" , # no type checking added yet
145+ " D10" , # no docstrings
146+ " D40" , # no imperative mode for docstrings
147+ " PTH" , # no pathlib, <=39 has problems on Windows with absolute/resolve, can revisit once we no longer need 39
148+ " INP001" , # ignore implicit namespace packages
149+ " D203" , # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible
150+ " D212" , # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible
151+ " S104" , # Possible binding to all interface
152+ ]
153+ [tool .ruff .per-file-ignores ]
154+ "tests/**/*.py" = [
155+ " S101" , # asserts allowed in tests...
156+ " FBT" , # don"t care about booleans as positional arguments in tests
157+ " INP001" , # no implicit namespace
158+ " D" , # don"t care about documentation in tests
159+ " S603" , # `subprocess` call: check for execution of untrusted input
160+ " PLR2004" , # Magic value used in comparison, consider replacing with a constant variable
161+ ]
0 commit comments