]> git.madduck.net Git - etc/vim.git/blobdiff - 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:

Port & upstream mypyc wheel build workflow (#3197)
[etc/vim.git] / pyproject.toml
index 6ed44998e6999902a51a4598b5f5a43fee6d6111..813e86b2e930a658dae49b9b406527d7fb4279f8 100644 (file)
 
 [tool.black]
 line-length = 88
-py36 = true
+target-version = ['py36', 'py37', 'py38']
 include = '\.pyi?$'
-exclude = '''
+extend-exclude = '''
 /(
-    \.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
+
+# 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"
 
-# Poetry package information below.
+[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.poetry]
-name = "black"
-version = "18.6b2"
-description = "The uncompromising code formatter."
-readme = "README.md"
-# FIXME: use proper Unicode below when new `pip` comes out with a fix for
-# https://github.com/pypa/pip/pull/5482.
-authors = ["Lukasz Langa <lukasz@langa.pl>"]
-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",
+[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"
+
+[tool.cibuildwheel.linux]
+before-build = [
+    "pip install -r .github/mypyc-requirements.txt",
+    "yum install -y clang",
 ]
-# include = ["blib2to3/**/*.py", "blib2to3/*.txt", "blib2to3/LICENSE"]
+# Newer images break the builds, not sure why. We'll need to investigate more later.
+manylinux-x86_64-image = "quay.io/pypa/manylinux2014_x86_64:2021-11-20-f410d11"
+
+[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"
 
-[tool.poetry.scripts]
-black = "black:main"
+[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.dependencies]
-python = "^3.6"
-attrs = "^17.4"
-click = "^6.5"
-toml = "^0.9.4"
-appdirs = "^1.4"
+[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.600"
-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 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''',
+]