From e9c5899cffbd4f163a90f183ed5b123133430f92 Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Fri, 19 Aug 2022 17:25:12 -0400 Subject: [PATCH 1/5] Switch build backend to Hatchling --- .github/mypyc-requirements.txt | 14 -- .github/workflows/diff_shades.yml | 13 +- .github/workflows/fuzz.yml | 2 +- .github/workflows/test.yml | 2 +- CHANGES.md | 1 + MANIFEST.in | 1 - docs/usage_and_configuration/the_basics.md | 7 +- pyproject.toml | 136 +++++++++++++++++--- setup.cfg | 3 - setup.py | 141 --------------------- tox.ini | 5 +- 11 files changed, 132 insertions(+), 193 deletions(-) delete mode 100644 .github/mypyc-requirements.txt delete mode 100644 MANIFEST.in delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/.github/mypyc-requirements.txt b/.github/mypyc-requirements.txt deleted file mode 100644 index 352d36c0070..00000000000 --- a/.github/mypyc-requirements.txt +++ /dev/null @@ -1,14 +0,0 @@ -mypy == 0.971 - -# A bunch of packages for type information -mypy-extensions >= 0.4.3 -tomli >= 0.10.2 -types-typed-ast >= 1.4.2 -types-dataclasses >= 0.1.3 -typing-extensions > 3.10.0.1 -click >= 8.0.0 -platformdirs >= 2.1.0 - -# And because build isolation is disabled, we'll need to pull this too -setuptools-scm[toml] >= 6.3.1 -wheel diff --git a/.github/workflows/diff_shades.yml b/.github/workflows/diff_shades.yml index fef9637c92f..b0cca94d344 100644 --- a/.github/workflows/diff_shades.yml +++ b/.github/workflows/diff_shades.yml @@ -3,10 +3,10 @@ name: diff-shades on: push: branches: [main] - paths: ["src/**", "setup.*", "pyproject.toml", ".github/workflows/*"] + paths: ["src/**", "pyproject.toml", ".github/workflows/*"] pull_request: - paths: ["src/**", "setup.*", "pyproject.toml", ".github/workflows/*"] + paths: ["src/**", "pyproject.toml", ".github/workflows/*"] concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} @@ -64,7 +64,6 @@ jobs: run: | python -m pip install https://github.com/ichard26/diff-shades/archive/stable.zip python -m pip install click packaging urllib3 - python -m pip install -r .github/mypyc-requirements.txt # After checking out old revisions, this might not exist so we'll use a copy. cat scripts/diff_shades_gha_helper.py > helper.py git config user.name "diff-shades-gha" @@ -81,10 +80,10 @@ jobs: if: steps.baseline-cache.outputs.cache-hit != 'true' env: GITHUB_TOKEN: ${{ github.token }} + HATCH_BUILD_HOOKS_ENABLE: "1" run: > ${{ matrix.baseline-setup-cmd }} - && python setup.py --use-mypyc bdist_wheel - && python -m pip install dist/*.whl && rm build dist -r + && python -m pip install . && rm dist -r - name: Analyze baseline revision if: steps.baseline-cache.outputs.cache-hit != 'true' @@ -95,10 +94,10 @@ jobs: - name: Build and install target revision env: GITHUB_TOKEN: ${{ github.token }} + HATCH_BUILD_HOOKS_ENABLE: "1" run: > ${{ matrix.target-setup-cmd }} - && python setup.py --use-mypyc bdist_wheel - && python -m pip install dist/*.whl + && python -m pip install . - name: Analyze target revision run: > diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index a2810e25f77..ebb8a9fda9e 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"] + python-version: ["3.7", "3.8", "3.9", "3.10"] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7cc55d1bf76..372d1fd5d38 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,7 +31,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "pypy-3.7", "pypy-3.8"] + python-version: ["3.7", "3.8", "3.9", "3.10", "pypy-3.7", "pypy-3.8"] os: [ubuntu-latest, macOS-latest, windows-latest] steps: diff --git a/CHANGES.md b/CHANGES.md index 34c54710775..47b4c2df991 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -74,6 +74,7 @@ - Python 3.11 is now supported, except for `blackd` (#3234) +- Hatchling is now used as the build backend. (#3233) ### Parser diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 5e53af336e2..00000000000 --- a/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -prune profiling diff --git a/docs/usage_and_configuration/the_basics.md b/docs/usage_and_configuration/the_basics.md index 4c358742674..58e6c76de76 100644 --- a/docs/usage_and_configuration/the_basics.md +++ b/docs/usage_and_configuration/the_basics.md @@ -204,9 +204,10 @@ code in compliance with many other _Black_ formatted projects. [PEP 518](https://www.python.org/dev/peps/pep-0518/) defines `pyproject.toml` as a configuration file to store build system requirements for Python projects. With the help -of tools like [Poetry](https://python-poetry.org/) or -[Flit](https://flit.readthedocs.io/en/latest/) it can fully replace the need for -`setup.py` and `setup.cfg` files. +of tools like [Poetry](https://python-poetry.org/), +[Flit](https://flit.readthedocs.io/en/latest/), or +[Hatch](https://hatch.pypa.io/latest/) it can fully replace the need for `setup.py` and +`setup.cfg` files. ### Where _Black_ looks for the file diff --git a/pyproject.toml b/pyproject.toml index 813e86b2e93..6211e44469c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ [tool.black] line-length = 88 -target-version = ['py36', 'py37', 'py38'] +target-version = ['py37', 'py38'] include = '\.pyi?$' extend-exclude = ''' /( @@ -26,8 +26,119 @@ preview = true # 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" +requires = ["hatchling>=1.8.0", "hatch-vcs", "hatch-fancy-pypi-readme"] +build-backend = "hatchling.build" + +[project] +name = "black" +description = "The uncompromising code formatter." +license = "MIT" +requires-python = ">=3.7" +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", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Software Development :: Quality Assurance", +] +dependencies = [ + "click>=8.0.0", + "mypy_extensions>=0.4.3", + "pathspec>=0.9.0", + "platformdirs>=2", + "tomli>=1.1.0; python_full_version < '3.11.0a7'", + "typed-ast>=1.4.2; python_version < '3.8' and implementation_name == 'cpython'", + "typing_extensions>=3.10.0.0; python_version < '3.10'", +] +dynamic = ["readme", "version"] + +[project.optional-dependencies] +colorama = [ + "colorama>=0.4.3", +] +d = [ + "aiohttp>=3.7.4", +] +jupyter = [ + "ipython>=7.8.0", + "tokenize-rt>=3.2.0", +] +uvloop = [ + "uvloop>=0.15.2", +] + +[project.scripts] +black = "black:patched_main" +blackd = "blackd:patched_main [d]" + +[project.urls] +Changelog = "https://github.com/psf/black/blob/main/CHANGES.md" +Homepage = "https://github.com/psf/black" + +[tool.hatch.metadata.hooks.fancy-pypi-readme] +content-type = "text/markdown" + +[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]] +path = "README.md" + +[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]] +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.wheel] +only-include = ["src"] +sources = ["src"] + +[tool.hatch.build.targets.wheel.hooks.mypyc] +enable-by-default = false +dependencies = [ + "hatch-mypyc>=0.13.0", + # Required stubs to be removed when the packages support PEP 561 themselves + "types-typed-ast>=1.4.2", +] +require-runtime-dependencies = true +exclude = [ + # 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", +] +options = { debug_level = "0" } [tool.cibuildwheel] build-verbosity = 1 @@ -37,7 +148,6 @@ build-verbosity = 1 # - 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. @@ -49,38 +159,24 @@ test-extras = ["d"," jupyter"] test-skip = ["*-macosx_arm64", "*-macosx_universal2:arm64"] [tool.cibuildwheel.environment] -BLACK_USE_MYPYC = "1" +HATCH_BUILD_HOOKS_ENABLE = "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", ] # 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" +HATCH_BUILD_HOOKS_ENABLE = "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.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" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 1a0a217eb91..00000000000 --- a/setup.cfg +++ /dev/null @@ -1,3 +0,0 @@ -[options] -setup_requires = - setuptools_scm[toml]>=6.3.1 diff --git a/setup.py b/setup.py deleted file mode 100644 index 2cf455573c9..00000000000 --- a/setup.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (C) 2020 Łukasz Langa -import os -import sys - -from setuptools import find_packages, setup - -assert sys.version_info >= (3, 6, 2), "black requires Python 3.6.2+" -from pathlib import Path # noqa E402 -from typing import List # noqa: E402 - -CURRENT_DIR = Path(__file__).parent -sys.path.insert(0, str(CURRENT_DIR)) # for setuptools.build_meta - - -def get_long_description() -> str: - return ( - (CURRENT_DIR / "README.md").read_text(encoding="utf8") - + "\n\n" - + (CURRENT_DIR / "CHANGES.md").read_text(encoding="utf8") - ) - - -def find_python_files(base: Path) -> List[Path]: - files = [] - for entry in base.iterdir(): - if entry.is_file() and entry.suffix == ".py": - files.append(entry) - elif entry.is_dir(): - files.extend(find_python_files(entry)) - - return files - - -USE_MYPYC = False -# To compile with mypyc, a mypyc checkout must be present on the PYTHONPATH -if len(sys.argv) > 1 and sys.argv[1] == "--use-mypyc": - sys.argv.pop(1) - USE_MYPYC = True -if os.getenv("BLACK_USE_MYPYC", None) == "1": - USE_MYPYC = True - -if USE_MYPYC: - from mypyc.build import mypycify - - src = CURRENT_DIR / "src" - # TIP: filepaths are normalized to use forward slashes and are relative to ./src/ - # before being checked against. - blocklist = [ - # Not performance sensitive, so save bytes + compilation time: - "blib2to3/__init__.py", - "blib2to3/pgen2/__init__.py", - "black/output.py", - "black/concurrency.py", - "black/files.py", - "black/report.py", - # Breaks the test suite when compiled (and is also useless): - "black/debug.py", - # Compiled modules can't be run directly and that's a problem here: - "black/__main__.py", - ] - discovered = [] - # There's no good reason for blackd to be compiled. - discovered.extend(find_python_files(src / "black")) - discovered.extend(find_python_files(src / "blib2to3")) - mypyc_targets = [ - str(p) for p in discovered if p.relative_to(src).as_posix() not in blocklist - ] - - opt_level = os.getenv("MYPYC_OPT_LEVEL", "3") - debug_level = os.getenv("MYPYC_DEBUG_LEVEL", "3") - ext_modules = mypycify( - mypyc_targets, opt_level=opt_level, debug_level=debug_level, verbose=True - ) -else: - ext_modules = [] - -setup( - name="black", - use_scm_version={ - "write_to": "src/_black_version.py", - "write_to_template": 'version = "{version}"\n', - }, - description="The uncompromising code formatter.", - long_description=get_long_description(), - long_description_content_type="text/markdown", - keywords="automation formatter yapf autopep8 pyfmt gofmt rustfmt", - author="Łukasz Langa", - author_email="lukasz@langa.pl", - url="https://github.com/psf/black", - project_urls={"Changelog": "https://github.com/psf/black/blob/main/CHANGES.md"}, - license="MIT", - py_modules=["_black_version"], - ext_modules=ext_modules, - packages=find_packages(where="src"), - package_dir={"": "src"}, - package_data={ - "blib2to3": ["*.txt"], - "black": ["py.typed"], - }, - python_requires=">=3.6.2", - zip_safe=False, - install_requires=[ - "click>=8.0.0", - "platformdirs>=2", - "tomli>=1.1.0; python_full_version < '3.11.0a7'", - "typed-ast>=1.4.2; python_version < '3.8' and implementation_name == 'cpython'", - "pathspec>=0.9.0", - "dataclasses>=0.6; python_version < '3.7'", - "typing_extensions>=3.10.0.0; python_version < '3.10'", - "mypy_extensions>=0.4.3", - ], - extras_require={ - "d": ["aiohttp>=3.7.4"], - "colorama": ["colorama>=0.4.3"], - "uvloop": ["uvloop>=0.15.2"], - "jupyter": ["ipython>=7.8.0", "tokenize-rt>=3.2.0"], - }, - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Environment :: Console", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3 :: Only", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Software Development :: Quality Assurance", - ], - entry_points={ - "console_scripts": [ - "black=black:patched_main", - "blackd=blackd:patched_main [d]", - ] - }, -) diff --git a/tox.ini b/tox.ini index 5f3874c23b4..63793d0262d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,6 @@ [tox] -envlist = {,ci-}py{36,37,38,39,310,311,py3},fuzz,run_self +isolated_build = true +envlist = {,ci-}py{37,38,39,310,311,py3},fuzz,run_self [testenv] setenv = PYTHONPATH = {toxinidir}/src @@ -92,4 +93,4 @@ setenv = PYTHONPATH = {toxinidir}/src skip_install = True commands = pip install -e .[d] - black --check {toxinidir}/src {toxinidir}/tests {toxinidir}/setup.py + black --check {toxinidir}/src {toxinidir}/tests From cb0e5ef9260641b488e3d641a92f9ad5cc3c92eb Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Fri, 19 Aug 2022 22:03:22 -0400 Subject: [PATCH 2/5] address review --- .github/workflows/diff_shades.yml | 5 ++--- CHANGES.md | 3 ++- pyproject.toml | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/diff_shades.yml b/.github/workflows/diff_shades.yml index b0cca94d344..a126756f102 100644 --- a/.github/workflows/diff_shades.yml +++ b/.github/workflows/diff_shades.yml @@ -41,6 +41,7 @@ jobs: needs: configure runs-on: ubuntu-latest env: + HATCH_BUILD_HOOKS_ENABLE: "1" # Clang is less picky with the C code it's given than gcc (and may # generate faster binaries too). CC: clang-12 @@ -80,10 +81,9 @@ jobs: if: steps.baseline-cache.outputs.cache-hit != 'true' env: GITHUB_TOKEN: ${{ github.token }} - HATCH_BUILD_HOOKS_ENABLE: "1" run: > ${{ matrix.baseline-setup-cmd }} - && python -m pip install . && rm dist -r + && python -m pip install . - name: Analyze baseline revision if: steps.baseline-cache.outputs.cache-hit != 'true' @@ -94,7 +94,6 @@ jobs: - name: Build and install target revision env: GITHUB_TOKEN: ${{ github.token }} - HATCH_BUILD_HOOKS_ENABLE: "1" run: > ${{ matrix.target-setup-cmd }} && python -m pip install . diff --git a/CHANGES.md b/CHANGES.md index 47b4c2df991..e14acd18d64 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -74,7 +74,8 @@ - Python 3.11 is now supported, except for `blackd` (#3234) -- Hatchling is now used as the build backend. (#3233) +- Hatchling is now used as the build backend. This will not have any effect for users + who install Black with its wheels from PyPI. (#3233) ### Parser diff --git a/pyproject.toml b/pyproject.toml index 6211e44469c..83d634621b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,12 +97,10 @@ Homepage = "https://github.com/psf/black" [tool.hatch.metadata.hooks.fancy-pypi-readme] content-type = "text/markdown" - -[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]] -path = "README.md" - -[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]] -path = "CHANGES.md" +fragments = [ + { path = "README.md" }, + { path = "CHANGES.md" }, +] [tool.hatch.version] source = "vcs" @@ -126,6 +124,8 @@ dependencies = [ ] 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", From ec55ad78fd471aa0c46b36a63adccaea2010c714 Mon Sep 17 00:00:00 2001 From: Richard Si <63936253+ichard26@users.noreply.github.com> Date: Mon, 5 Sep 2022 22:24:19 -0400 Subject: [PATCH 3/5] Add changelog entry about removal of 3.6 + other tweaks --- .github/workflows/pypi_upload.yml | 2 -- CHANGES.md | 3 +++ pyproject.toml | 10 +++------- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/pypi_upload.yml b/.github/workflows/pypi_upload.yml index d52f41a4939..556a47400f0 100644 --- a/.github/workflows/pypi_upload.yml +++ b/.github/workflows/pypi_upload.yml @@ -61,8 +61,6 @@ jobs: uses: pypa/cibuildwheel@v2.8.1 env: CIBW_ARCHS_MACOS: "${{ matrix.macos_arch }}" - # This isn't supported in pyproject.toml which makes sense (but is annoying). - CIBW_PROJECT_REQUIRES_PYTHON: ">=3.6.2" - name: Upload wheels as workflow artifacts uses: actions/upload-artifact@v2 diff --git a/CHANGES.md b/CHANGES.md index d4e5e83b6d5..f16798f4954 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,9 @@ +- Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be + supported until further notice. + ### Stable style diff --git a/pyproject.toml b/pyproject.toml index 83d634621b5..987679a4f77 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -73,9 +73,8 @@ dependencies = [ dynamic = ["readme", "version"] [project.optional-dependencies] -colorama = [ - "colorama>=0.4.3", -] +colorama = ["colorama>=0.4.3"] +uvloop = ["uvloop>=0.15.2"] d = [ "aiohttp>=3.7.4", ] @@ -83,9 +82,6 @@ jupyter = [ "ipython>=7.8.0", "tokenize-rt>=3.2.0", ] -uvloop = [ - "uvloop>=0.15.2", -] [project.scripts] black = "black:patched_main" @@ -143,7 +139,7 @@ options = { debug_level = "0" } [tool.cibuildwheel] build-verbosity = 1 # So these are the environments we target: -# - Python: CPython 3.6+ only +# - Python: CPython 3.7+ only # - Architecture (64-bit only): amd64 / x86_64, universal2, and arm64 # - OS: Linux (no musl), Windows, and macOS build = "cp3*-*" From fba6661c830559484ea4bf37c05c4df2c5eb12bf Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Tue, 6 Sep 2022 03:03:40 -0400 Subject: [PATCH 4/5] address review --- pyproject.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 987679a4f77..d8e7d00b049 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -107,6 +107,9 @@ template = ''' version = "{version}" ''' +[tool.hatch.build.targets.sdist] +exclude = ["/profiling"] + [tool.hatch.build.targets.wheel] only-include = ["src"] sources = ["src"] @@ -115,6 +118,7 @@ sources = ["src"] enable-by-default = false dependencies = [ "hatch-mypyc>=0.13.0", + "mypy==0.971", # Required stubs to be removed when the packages support PEP 561 themselves "types-typed-ast>=1.4.2", ] From cac06d584dba8d905b8379e7dcfba6c56610f568 Mon Sep 17 00:00:00 2001 From: Richard Si <63936253+ichard26@users.noreply.github.com> Date: Sun, 25 Sep 2022 17:19:28 -0400 Subject: [PATCH 5/5] Update outdated Python runtime support docs --- docs/faq.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index aeb9634789f..8b9ffb0202e 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -86,8 +86,8 @@ disabled-by-default counterpart W504. E203 should be disabled while changes are ## Which Python versions does Black support? -Currently the runtime requires Python 3.6-3.10. Formatting is supported for files -containing syntax from Python 3.3 to 3.10. We promise to support at least all Python +Currently the runtime requires Python 3.7-3.11. Formatting is supported for files +containing syntax from Python 3.3 to 3.11. We promise to support at least all Python versions that have not reached their end of life. This is the case for both running _Black_ and formatting code. @@ -95,6 +95,8 @@ Support for formatting Python 2 code was removed in version 22.0. While we've ma plans to stop supporting older Python 3 minor versions immediately, their support might also be removed some time in the future without a deprecation period. +Runtime support for 3.6 was removed in version 22.9.0. + ## Why does my linter or typechecker complain after I format my code? Some linters and other tools use magical comments (e.g., `# noqa`, `# type: ignore`) to