]> git.madduck.net Git - etc/vim.git/blob - pyproject.toml

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Max line length with bugbear (#3731)
[etc/vim.git] / pyproject.toml
1 # Example configuration for Black.
2
3 # NOTE: you have to use single-quoted strings in TOML for regular expressions.
4 # It's the equivalent of r-strings in Python.  Multiline strings are treated as
5 # verbose regular expressions by Black.  Use [ ] to denote a significant space
6 # character.
7
8 [tool.black]
9 line-length = 88
10 target-version = ['py37', 'py38']
11 include = '\.pyi?$'
12 extend-exclude = '''
13 /(
14   # The following are specific to Black, you probably don't want those.
15   | blib2to3
16   | tests/data
17   | profiling
18 )/
19 '''
20 # We use preview style for formatting Black itself. If you
21 # want stable formatting across releases, you should keep
22 # this off.
23 preview = true
24
25 # Build system information and other project-specific configuration below.
26 # NOTE: You don't need this in your own Black configuration.
27
28 [build-system]
29 requires = ["hatchling>=1.8.0", "hatch-vcs", "hatch-fancy-pypi-readme"]
30 build-backend = "hatchling.build"
31
32 [project]
33 name = "black"
34 description = "The uncompromising code formatter."
35 license = { text = "MIT" }
36 requires-python = ">=3.7"
37 authors = [
38   { name = "Łukasz Langa", email = "lukasz@langa.pl" },
39 ]
40 keywords = [
41   "automation",
42   "autopep8",
43   "formatter",
44   "gofmt",
45   "pyfmt",
46   "rustfmt",
47   "yapf",
48 ]
49 classifiers = [
50   "Development Status :: 5 - Production/Stable",
51   "Environment :: Console",
52   "Intended Audience :: Developers",
53   "License :: OSI Approved :: MIT License",
54   "Operating System :: OS Independent",
55   "Programming Language :: Python",
56   "Programming Language :: Python :: 3 :: Only",
57   "Programming Language :: Python :: 3.7",
58   "Programming Language :: Python :: 3.8",
59   "Programming Language :: Python :: 3.9",
60   "Programming Language :: Python :: 3.10",
61   "Programming Language :: Python :: 3.11",
62   "Topic :: Software Development :: Libraries :: Python Modules",
63   "Topic :: Software Development :: Quality Assurance",
64 ]
65 dependencies = [
66   "click>=8.0.0",
67   "mypy_extensions>=0.4.3",
68   "packaging>=22.0",
69   "pathspec>=0.9.0",
70   "platformdirs>=2",
71   "tomli>=1.1.0; python_version < '3.11'",
72   "typed-ast>=1.4.2; python_version < '3.8' and implementation_name == 'cpython'",
73   "typing_extensions>=3.10.0.0; python_version < '3.10'",
74 ]
75 dynamic = ["readme", "version"]
76
77 [project.optional-dependencies]
78 colorama = ["colorama>=0.4.3"]
79 uvloop = ["uvloop>=0.15.2"]
80 d = [
81   "aiohttp>=3.7.4",
82 ]
83 jupyter = [
84   "ipython>=7.8.0",
85   "tokenize-rt>=3.2.0",
86 ]
87
88 [project.scripts]
89 black = "black:patched_main"
90 blackd = "blackd:patched_main [d]"
91
92 [project.urls]
93 Changelog = "https://github.com/psf/black/blob/main/CHANGES.md"
94 Homepage = "https://github.com/psf/black"
95
96 [tool.hatch.metadata.hooks.fancy-pypi-readme]
97 content-type = "text/markdown"
98 fragments = [
99   { path = "README.md" },
100   { path = "CHANGES.md" },
101 ]
102
103 [tool.hatch.version]
104 source = "vcs"
105
106 [tool.hatch.build.hooks.vcs]
107 version-file = "src/_black_version.py"
108 template = '''
109 version = "{version}"
110 '''
111
112 [tool.hatch.build.targets.sdist]
113 exclude = ["/profiling"]
114
115 [tool.hatch.build.targets.wheel]
116 only-include = ["src"]
117 sources = ["src"]
118
119 [tool.hatch.build.targets.wheel.hooks.mypyc]
120 enable-by-default = false
121 dependencies = [
122   "hatch-mypyc>=0.13.0",
123   "mypy==0.991",
124   # Required stubs to be removed when the packages support PEP 561 themselves
125   "types-typed-ast>=1.4.2",
126 ]
127 require-runtime-dependencies = true
128 exclude = [
129   # There's no good reason for blackd to be compiled.
130   "/src/blackd",
131   # Not performance sensitive, so save bytes + compilation time:
132   "/src/blib2to3/__init__.py",
133   "/src/blib2to3/pgen2/__init__.py",
134   "/src/black/output.py",
135   "/src/black/concurrency.py",
136   "/src/black/files.py",
137   "/src/black/report.py",
138   # Breaks the test suite when compiled (and is also useless):
139   "/src/black/debug.py",
140   # Compiled modules can't be run directly and that's a problem here:
141   "/src/black/__main__.py",
142 ]
143 options = { debug_level = "0" }
144
145 [tool.cibuildwheel]
146 build-verbosity = 1
147 # So these are the environments we target:
148 # - Python: CPython 3.7+ only
149 # - Architecture (64-bit only): amd64 / x86_64, universal2, and arm64
150 # - OS: Linux (no musl), Windows, and macOS
151 build = "cp3*-*"
152 skip = ["*-manylinux_i686", "*-musllinux_*", "*-win32", "pp-*"]
153 # This is the bare minimum needed to run the test suite. Pulling in the full
154 # test_requirements.txt would download a bunch of other packages not necessary
155 # here and would slow down the testing step a fair bit.
156 test-requires = ["pytest>=6.1.1"]
157 test-command = 'pytest {project} -k "not incompatible_with_mypyc"'
158 test-extras = ["d"," jupyter"]
159 # Skip trying to test arm64 builds on Intel Macs. (so cross-compilation doesn't
160 # straight up crash)
161 test-skip = ["*-macosx_arm64", "*-macosx_universal2:arm64"]
162
163 [tool.cibuildwheel.environment]
164 HATCH_BUILD_HOOKS_ENABLE = "1"
165 MYPYC_OPT_LEVEL = "3"
166 MYPYC_DEBUG_LEVEL = "0"
167 # CPython 3.11 wheels aren't available for aiohttp and building a Cython extension
168 # from source also doesn't work.
169 AIOHTTP_NO_EXTENSIONS = "1"
170
171 [tool.cibuildwheel.linux]
172 before-build = [
173     "yum install -y clang gcc",
174 ]
175
176 [tool.cibuildwheel.linux.environment]
177 HATCH_BUILD_HOOKS_ENABLE = "1"
178 MYPYC_OPT_LEVEL = "3"
179 MYPYC_DEBUG_LEVEL = "0"
180 # Black needs Clang to compile successfully on Linux.
181 CC = "clang"
182 AIOHTTP_NO_EXTENSIONS = "1"
183
184 [tool.isort]
185 atomic = true
186 profile = "black"
187 line_length = 88
188 skip_gitignore = true
189 skip_glob = ["src/blib2to3", "tests/data", "profiling"]
190 known_first_party = ["black", "blib2to3", "blackd", "_black_version"]
191
192 [tool.pytest.ini_options]
193 # Option below requires `tests/optional.py`
194 addopts = "--strict-config --strict-markers"
195 optional-tests = [
196   "no_blackd: run when `d` extra NOT installed",
197   "no_jupyter: run when `jupyter` extra NOT installed",
198 ]
199 markers = [
200   "incompatible_with_mypyc: run when testing mypyc compiled black"
201 ]
202 xfail_strict = true
203 filterwarnings = [
204     "error",
205     # this is mitigated by a try/catch in https://github.com/psf/black/pull/2974/
206     # this ignore can be removed when support for aiohttp 3.7 is dropped.
207     '''ignore:Decorator `@unittest_run_loop` is no longer needed in aiohttp 3\.8\+:DeprecationWarning''',
208     # this is mitigated by a try/catch in https://github.com/psf/black/pull/3198/
209     # this ignore can be removed when support for aiohttp 3.x is dropped.
210     '''ignore:Middleware decorator is deprecated since 4\.0 and its behaviour is default, you can simply remove this decorator:DeprecationWarning''',
211     # this is mitigated by https://github.com/python/cpython/issues/79071 in python 3.8+
212     # this ignore can be removed when support for 3.7 is dropped.
213     '''ignore:Bare functions are deprecated, use async ones:DeprecationWarning''',
214     # aiohttp is using deprecated cgi modules - Safe to remove when fixed:
215     # https://github.com/aio-libs/aiohttp/issues/6905
216     '''ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning''',
217     # Work around https://github.com/pytest-dev/pytest/issues/10977 for Python 3.12
218     '''ignore:(Attribute s|Attribute n|ast.Str|ast.Bytes|ast.NameConstant|ast.Num) is deprecated and will be removed in Python 3.14:DeprecationWarning'''
219 ]