d0aab9212a
test release tool / test-release-tool (macOS-latest, 3.12) (push) Waiting to run
test release tool / test-release-tool (macOS-latest, 3.13) (push) Waiting to run
test release tool / test-release-tool (macOS-latest, 3.14) (push) Waiting to run
test release tool / test-release-tool (macOS-latest, 3.15) (push) Waiting to run
docker / build (linux/arm64) (push) Waiting to run
docker / push (push) Blocked by required conditions
docs / docs (windows-latest) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.12) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.13) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.14) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.15) (push) Waiting to run
test / test (macOS-latest, 3.10) (push) Waiting to run
test / test (macOS-latest, 3.11) (push) Waiting to run
test / test (macOS-latest, 3.12.10) (push) Waiting to run
test / test (macOS-latest, 3.13) (push) Waiting to run
test / test (macOS-latest, 3.14) (push) Waiting to run
test / test (macOS-latest, 3.15) (push) Waiting to run
test / test (macOS-latest, pypy3.11-v7.3.22) (push) Waiting to run
test / test (windows-11-arm, 3.11) (push) Waiting to run
test / test (windows-11-arm, 3.12.10) (push) Waiting to run
test / test (windows-11-arm, 3.13) (push) Waiting to run
test / test (windows-11-arm, 3.14) (push) Waiting to run
test / test (windows-11-arm, 3.15) (push) Waiting to run
test / test (windows-latest, 3.10) (push) Waiting to run
test / test (windows-latest, 3.11) (push) Waiting to run
test / test (windows-latest, 3.12.10) (push) Waiting to run
test / test (windows-latest, 3.13) (push) Waiting to run
test / test (windows-latest, 3.14) (push) Waiting to run
test / test (windows-latest, 3.15) (push) Waiting to run
test / test (windows-latest, pypy3.11-v7.3.22) (push) Waiting to run
test / coveralls-finish (push) Blocked by required conditions
test / uvloop (macOS-latest) (push) Waiting to run
test / uvloop (windows-11-arm) (push) Waiting to run
test / uvloop (windows-latest) (push) Waiting to run
fuzz / fuzz (3.11) (push) Failing after 1s
fuzz / fuzz (3.12) (push) Failing after 1s
build and publish / sdist + pure wheel (push) Failing after 0s
diff-shades / analysis / base / ${{ matrix.mode }} (push) Has been skipped
diff-shades / compare / ${{ matrix.mode }} (push) Waiting to run
docs / docs (ubuntu-latest) (push) Failing after 2s
fuzz / fuzz (3.10) (push) Failing after 1s
fuzz / fuzz (3.14) (push) Failing after 0s
lint and format / lint (push) Failing after 1s
build and publish / publish-mypyc (push) Waiting to run
diff-shades / configure (push) Failing after 1s
docker / build (linux/amd64) (push) Has been skipped
diff-shades / analysis / target / ${{ matrix.mode }} (push) Has been skipped
fuzz / fuzz (3.13) (push) Failing after 0s
fuzz / create-issue (push) Waiting to run
build and publish / generate wheels matrix (push) Failing after 0s
test release tool / test-release-tool (ubuntu-latest, 3.13) (push) Failing after 1s
build and publish / mypyc wheels ${{ matrix.only }} (push) Has been skipped
build and publish / publish-hatch (push) Waiting to run
test / test (ubuntu-latest, 3.10) (push) Failing after 0s
test / test (ubuntu-latest, 3.11) (push) Failing after 1s
test / test (ubuntu-latest, 3.13) (push) Failing after 0s
test / test (ubuntu-latest, pypy3.11-v7.3.22) (push) Failing after 1s
test / test (ubuntu-latest, 3.15) (push) Failing after 1s
test release tool / test-release-tool (ubuntu-latest, 3.15) (push) Failing after 0s
zizmor / zizmor (push) Failing after 0s
test release tool / test-release-tool (ubuntu-latest, 3.12) (push) Failing after 4s
test release tool / test-release-tool (ubuntu-latest, 3.14) (push) Failing after 3s
test / uvloop (ubuntu-latest) (push) Failing after 1s
test / test (ubuntu-latest, 3.14) (push) Failing after 1s
test / test (ubuntu-latest, 3.12.10) (push) Failing after 5s
247 lines
7.4 KiB
TOML
247 lines
7.4 KiB
TOML
# Example configuration for Black.
|
|
|
|
# NOTE: you have to use single-quoted strings in TOML for regular expressions.
|
|
# It's the equivalent of r-strings in Python.
|
|
# Multiline strings are treated as verbose regular expressions by Black.
|
|
# Use [ ] to denote a significant space character.
|
|
|
|
[tool.black]
|
|
line-length = 88
|
|
target-version = ["py310"]
|
|
include = '\.pyi?$'
|
|
extend-exclude = '''
|
|
/(
|
|
# The following are specific to Black, you probably don't want those.
|
|
tests/data/
|
|
| profiling/
|
|
)
|
|
'''
|
|
# We use the unstable style for formatting Black itself. If you
|
|
# want bug-free formatting, you should keep this off. If you want
|
|
# stable formatting across releases, you should also keep `preview = true`
|
|
# (which is implied by this flag) off.
|
|
unstable = true
|
|
|
|
# Build system information and other project-specific configuration below.
|
|
# NOTE: You don't need this in your own Black configuration.
|
|
|
|
[build-system]
|
|
requires = ["hatch-fancy-pypi-readme", "hatch-vcs>=0.3.0", "hatchling>=1.27.0"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "black"
|
|
description = "The uncompromising code formatter."
|
|
license = "MIT"
|
|
license-files = ["LICENSE"]
|
|
requires-python = ">=3.10"
|
|
authors = [{ name = "Łukasz Langa", email = "lukasz@langa.pl" }]
|
|
keywords = ["automation", "autopep8", "formatter", "gofmt", "pyfmt", "rustfmt", "yapf"]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Environment :: Console",
|
|
"Intended Audience :: Developers",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3 :: Only",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Python :: 3.14",
|
|
"Programming Language :: Python :: 3.15",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Software Development :: Quality Assurance",
|
|
]
|
|
dependencies = [
|
|
"click>=8.0.0",
|
|
"mypy-extensions>=0.4.3",
|
|
"packaging>=22.0",
|
|
"pathspec>=1.0.0",
|
|
"platformdirs>=2",
|
|
"pytokens~=0.4.0",
|
|
"tomli>=1.1.0; python_version<'3.11'",
|
|
"typing-extensions>=4.0.1; python_version<'3.11'",
|
|
]
|
|
dynamic = ["readme", "version"]
|
|
|
|
[project.optional-dependencies]
|
|
colorama = ["colorama>=0.4.3"]
|
|
uvloop = [
|
|
"uvloop>=0.15.2; sys_platform != 'win32'",
|
|
"winloop>=0.5.0; sys_platform == 'win32'"
|
|
]
|
|
d = ["aiohttp>=3.10"]
|
|
jupyter = ["ipython>=7.8.0", "tokenize-rt>=3.2.0"]
|
|
|
|
[dependency-groups]
|
|
hatch = ["hatch==1.15.1", "hatch-fancy-pypi-readme", "hatch-vcs", "virtualenv<21.0.0"]
|
|
cibw = ["cibuildwheel==3.4.0", "pypyp"]
|
|
pyinstaller = ["pyinstaller"]
|
|
|
|
dev = [{ include-group = "cov-tests" }, { include-group = "tox" }, "pre-commit"]
|
|
cov-tests = [
|
|
{ include-group = "coverage" },
|
|
{ include-group = "tests" },
|
|
"pytest-cov>=4.1.0",
|
|
]
|
|
docs = [
|
|
"docutils==0.22.4",
|
|
"furo==2025.12.19",
|
|
"myst-parser==5.0.0",
|
|
"sphinx-copybutton==0.5.2",
|
|
"sphinx==9.1.0",
|
|
"sphinxcontrib-programoutput==0.20",
|
|
]
|
|
|
|
tox = ["tox>=4.22"]
|
|
tests = ["pytest>=7", "pytest-xdist>=3.0.2"]
|
|
coverage = ["coverage>=5.3"]
|
|
|
|
fuzz = [{ include-group = "coverage" }, "hypothesis", "hypothesmith"]
|
|
diff-shades = [
|
|
"diff-shades @ https://github.com/ichard26/diff-shades/archive/stable.zip",
|
|
]
|
|
diff-shades-comment = ["click>=8.1.7", "packaging>=22.0", "urllib3"]
|
|
|
|
width-table = ["wcwidth==0.2.14"]
|
|
|
|
[project.scripts]
|
|
black = "black:patched_main"
|
|
blackd = "blackd:patched_main [d]"
|
|
|
|
[project.entry-points."validate_pyproject.tool_schema"]
|
|
black = "black.schema:get_schema"
|
|
|
|
[project.urls]
|
|
Documentation = "https://black.readthedocs.io/"
|
|
Changelog = "https://github.com/psf/black/blob/main/CHANGES.md"
|
|
Repository = "https://github.com/psf/black"
|
|
Issues = "https://github.com/psf/black/issues"
|
|
|
|
[tool.hatch.metadata.hooks.fancy-pypi-readme]
|
|
content-type = "text/markdown"
|
|
fragments = [{ path = "README.md" }, { path = "CHANGES.md" }]
|
|
|
|
[tool.hatch.version]
|
|
source = "vcs"
|
|
|
|
[tool.hatch.build.hooks.vcs]
|
|
version-file = "src/_black_version.py"
|
|
template = """
|
|
version = "{version}"
|
|
"""
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
exclude = ["/profiling"]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
only-include = ["src"]
|
|
sources = ["src"]
|
|
# Note that we change the behaviour of this flag below
|
|
macos-max-compat = true
|
|
|
|
[tool.hatch.build.targets.wheel.hooks.mypyc]
|
|
enable-by-default = false
|
|
dependencies = ["hatch-mypyc>=0.16.0", "mypy==1.20.2"]
|
|
require-runtime-dependencies = true
|
|
exclude = [
|
|
# There's no good reason for blackd to be compiled.
|
|
"/src/blackd",
|
|
# Not performance sensitive, so save bytes + compilation time:
|
|
"/src/blib2to3/__init__.py",
|
|
"/src/blib2to3/pgen2/__init__.py",
|
|
"/src/black/output.py",
|
|
"/src/black/concurrency.py",
|
|
"/src/black/files.py",
|
|
"/src/black/report.py",
|
|
# Breaks the test suite when compiled (and is also useless):
|
|
"/src/black/debug.py",
|
|
# Compiled modules can't be run directly and that's a problem here:
|
|
"/src/black/__main__.py",
|
|
]
|
|
mypy-args = ["--ignore-missing-imports"]
|
|
options = { debug_level = "0" }
|
|
|
|
[tool.cibuildwheel]
|
|
build-verbosity = 1
|
|
|
|
# So these are the environments we target:
|
|
# - Python: CPython 3.10+ only
|
|
# - Architecture (64-bit only): amd64 / x86_64, universal2, and arm64
|
|
# - OS: Linux (no musl), Windows, and macOS
|
|
build = "cp31*"
|
|
skip = [
|
|
"*-manylinux_i686",
|
|
"*-musllinux_*",
|
|
"*-win32",
|
|
"pp*",
|
|
"cp31?t-*", # mypyc doesn't have great support for free threaded builds
|
|
]
|
|
|
|
test-groups = ["tests"]
|
|
test-command = 'pytest {project} -k "not incompatible_with_mypyc" -n auto'
|
|
test-extras = ["d", " jupyter"]
|
|
# Skip trying to test arm64 builds on Intel Macs. (so cross-compilation doesn't
|
|
# straight up crash)
|
|
test-skip = ["*-macosx_arm64", "*-macosx_universal2:arm64"]
|
|
|
|
[tool.cibuildwheel.environment]
|
|
HATCH_BUILD_HOOKS_ENABLE = "1"
|
|
MYPYC_OPT_LEVEL = "3"
|
|
MYPYC_DEBUG_LEVEL = "0"
|
|
CC = "clang"
|
|
|
|
[tool.cibuildwheel.linux]
|
|
manylinux-x86_64-image = "manylinux_2_28"
|
|
before-build = ["yum install -y clang"]
|
|
|
|
[tool.isort]
|
|
atomic = true
|
|
profile = "black"
|
|
line_length = 88
|
|
skip_gitignore = true
|
|
skip_glob = ["tests/data", "profiling"]
|
|
known_first_party = ["black", "blib2to3", "blackd", "_black_version"]
|
|
|
|
[tool.pytest.ini_options]
|
|
# Option below requires `tests/optional.py`
|
|
addopts = "--strict-config --strict-markers"
|
|
optional-tests = [
|
|
"no_blackd: run when `d` extra NOT installed",
|
|
"no_jupyter: run when `jupyter` extra NOT installed",
|
|
]
|
|
markers = ["incompatible_with_mypyc: run when testing mypyc compiled black"]
|
|
xfail_strict = true
|
|
filterwarnings = ["error"]
|
|
[tool.coverage.report]
|
|
omit = ["src/blib2to3/*", "tests/data/*", "*/site-packages/*", ".tox/*"]
|
|
[tool.coverage.run]
|
|
relative_files = true
|
|
branch = true
|
|
|
|
[tool.mypy]
|
|
# Specify the target platform details in config, so your developers are
|
|
# free to run mypy on Windows, Linux, or macOS and get consistent
|
|
# results.
|
|
python_version = "3.10"
|
|
mypy_path = "src"
|
|
strict = true
|
|
strict_bytes = true
|
|
local_partial_types = true
|
|
# Unreachable blocks have been an issue when compiling mypyc, let's try to avoid 'em in the first place.
|
|
warn_unreachable = true
|
|
implicit_reexport = true
|
|
show_error_codes = true
|
|
show_column_numbers = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = ["pathspec.*", "IPython.*", "colorama.*", "tokenize_rt.*", "uvloop.*"]
|
|
ignore_missing_imports = true
|
|
|
|
# CI only checks src/, but in case users are running LSP or similar we explicitly ignore
|
|
# errors in test data files.
|
|
[[tool.mypy.overrides]]
|
|
module = ["tests.data.*"]
|
|
ignore_errors = true
|