X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/55121195ce526aed2130c4df142b87e066744179..4b4680a0a9e06ae926abfbf0d209725de44860a8:/pyproject.toml?ds=sidebyside diff --git a/pyproject.toml b/pyproject.toml index fca5055..122a49e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,85 +7,113 @@ [tool.black] line-length = 88 -py36 = true +target-version = ['py36', 'py37', 'py38'] include = '\.pyi?$' -exclude = ''' +extend-exclude = ''' /( - \.eggs - | \.git - | \.hg - | \.mypy_cache - | \.tox - | \.venv - | _build - | buck-out - | build - | dist - # 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 - -# Poetry package information below. +# Build system information and other project-specific configuration below. # NOTE: You don't need this in your own Black configuration. -[tool.poetry] -name = "black" -version = "18.9b0" -description = "The uncompromising code formatter." -readme = "README.md" -authors = [ - "Łukasz Langa ", - "Carol Willing ", - "Carl Meyer ", - "Jelle Zijlstra ", - "Mika Naylor ", - "Zsolt Dollenstein ", -] -homepage = "https://github.com/ambv/black/" -documentation = "https://black.readthedocs.io/en/stable/" -license = "MIT" -keywords = ["automation", "formatter", "yapf", "autopep8", "gofmt"] -classifiers=[ - "Development Status :: 4 - Beta", - "Environment :: Console", - "Intended Audience :: Developers", - "Operating System :: OS Independent", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Software Development :: Quality Assurance", -] +[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"] -packages = [ - {include = "black.py"}, - {include = "blib2to3"} +[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.poetry.scripts] -black = "black:main" -# blackd = "blackd:main" # TODO: how to make this only appear on `poetry install -E d`? +[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.poetry.dependencies] -python = "^3.6" -attrs = "^18.1" -click = "^6.5" -toml = "^0.9.4" -appdirs = "^1.4" -aiohttp = { version = "^3.4", optional = true } +[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.poetry.extras] -d = ["aiohttp"] +[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.poetry.dev-dependencies] -Sphinx = "^1.7" -pre-commit = "^1.10" -coverage = "^4.5" -flake8 = "^3.5" -flake8-bugbear = "^18.2" -flake8-mypy = "^17.8" -mypy = "^0.620" -readme_renderer = "^21.0" -recommonmark = "^0.4.0" +[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''', +]