
Bumps cibuildwheel from 2.8.1 to 2.10.0 which has 3.11 building enabled by default. Unfortunately mypyc errors out on 3.11: src/black/files.py:29:9: error: Name "tomllib" already defined (by an import) [no-redef] ... so we have to also hide the fallback import of tomli on older 3.11 alphas from mypy[c].
120 lines
4.5 KiB
TOML
120 lines
4.5 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 = ['py36', 'py37', 'py38']
|
|
include = '\.pyi?$'
|
|
extend-exclude = '''
|
|
/(
|
|
# The following are specific to Black, you probably don't want those.
|
|
| blib2to3
|
|
| tests/data
|
|
| profiling
|
|
)/
|
|
'''
|
|
# We use preview style for formatting Black itself. If you
|
|
# want stable formatting across releases, you should keep
|
|
# this off.
|
|
preview = true
|
|
|
|
# Build system information and other project-specific configuration below.
|
|
# NOTE: You don't need this in your own Black configuration.
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=45.0", "setuptools_scm[toml]>=6.3.1", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.cibuildwheel]
|
|
build-verbosity = 1
|
|
# So these are the environments we target:
|
|
# - Python: CPython 3.6+ only
|
|
# - Architecture (64-bit only): amd64 / x86_64, universal2, and arm64
|
|
# - OS: Linux (no musl), Windows, and macOS
|
|
build = "cp3*-*"
|
|
skip = ["*-manylinux_i686", "*-musllinux_*", "*-win32", "pp-*"]
|
|
before-build = ["pip install -r .github/mypyc-requirements.txt"]
|
|
# This is the bare minimum needed to run the test suite. Pulling in the full
|
|
# test_requirements.txt would download a bunch of other packages not necessary
|
|
# here and would slow down the testing step a fair bit.
|
|
test-requires = ["pytest>=6.1.1"]
|
|
test-command = 'pytest {project} -k "not incompatible_with_mypyc"'
|
|
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]
|
|
BLACK_USE_MYPYC = "1"
|
|
MYPYC_OPT_LEVEL = "3"
|
|
MYPYC_DEBUG_LEVEL = "0"
|
|
# The dependencies required to build wheels with mypyc aren't specified in
|
|
# [build-system].requires so we'll have to manage the build environment ourselves.
|
|
PIP_NO_BUILD_ISOLATION = "no"
|
|
# CPython 3.11 wheels aren't available for aiohttp and building a Cython extension
|
|
# from source also doesn't work.
|
|
AIOHTTP_NO_EXTENSIONS = "1"
|
|
|
|
[tool.cibuildwheel.linux]
|
|
before-build = [
|
|
"pip install -r .github/mypyc-requirements.txt",
|
|
"yum install -y clang gcc",
|
|
]
|
|
|
|
[tool.cibuildwheel.linux.environment]
|
|
BLACK_USE_MYPYC = "1"
|
|
MYPYC_OPT_LEVEL = "3"
|
|
MYPYC_DEBUG_LEVEL = "0"
|
|
PIP_NO_BUILD_ISOLATION = "no"
|
|
# Black needs Clang to compile successfully on Linux.
|
|
CC = "clang"
|
|
AIOHTTP_NO_EXTENSIONS = "1"
|
|
|
|
[tool.cibuildwheel.windows]
|
|
# For some reason, (compiled) mypyc is failing to start up with "ImportError: DLL load
|
|
# failed: A dynamic link library (DLL) initialization routine failed." on Windows for
|
|
# at least 3.6. Let's just use interpreted mypy[c].
|
|
# See also: https://github.com/mypyc/mypyc/issues/819.
|
|
before-build = [
|
|
"pip install -r .github/mypyc-requirements.txt --no-binary mypy"
|
|
]
|
|
|
|
[tool.isort]
|
|
atomic = true
|
|
profile = "black"
|
|
line_length = 88
|
|
skip_gitignore = true
|
|
skip_glob = ["src/blib2to3", "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",
|
|
# this is mitigated by a try/catch in https://github.com/psf/black/pull/2974/
|
|
# this ignore can be removed when support for aiohttp 3.7 is dropped.
|
|
'''ignore:Decorator `@unittest_run_loop` is no longer needed in aiohttp 3\.8\+:DeprecationWarning''',
|
|
# this is mitigated by a try/catch in https://github.com/psf/black/pull/3198/
|
|
# this ignore can be removed when support for aiohttp 3.x is dropped.
|
|
'''ignore:Middleware decorator is deprecated since 4\.0 and its behaviour is default, you can simply remove this decorator:DeprecationWarning''',
|
|
# this is mitigated by https://github.com/python/cpython/issues/79071 in python 3.8+
|
|
# this ignore can be removed when support for 3.7 is dropped.
|
|
'''ignore:Bare functions are deprecated, use async ones:DeprecationWarning''',
|
|
# aiohttp is using deprecated cgi modules - Safe to remove when fixed:
|
|
# https://github.com/aio-libs/aiohttp/issues/6905
|
|
'''ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning''',
|
|
]
|