From 4d38f23251046ec48a73cd1db5773a68d58130e5 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Fri, 31 Dec 2021 09:17:07 -0500 Subject: build: drop Python 3.6 support --- .github/workflows/coverage.yml | 3 +-- .github/workflows/kit.yml | 10 ++-------- .github/workflows/quality.yml | 4 ++-- .github/workflows/testsuite.yml | 3 +-- CHANGES.rst | 2 ++ README.rst | 8 +++++--- ci/download_gha_artifacts.py | 2 +- coverage/version.py | 2 +- doc/contributing.rst | 4 +++- doc/index.rst | 4 +++- howto.txt | 3 ++- setup.cfg | 1 + setup.py | 6 +++--- tox.ini | 7 ++++--- 14 files changed, 31 insertions(+), 28 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 9385ff5f..df9ce118 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -32,8 +32,7 @@ jobs: - windows-latest python-version: # When changing this list, be sure to check the [gh-actions] list in - # tox.ini so that tox will run properly. - - "3.6" + # tox.ini so that tox will run properly. PYVERSIONS - "3.7" - "3.8" - "3.9" diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 9bc8e192..af3a6bea 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -56,7 +56,7 @@ jobs: # "macos": ["arm64", "x86_64"], # "windows": ["x86", "AMD64"], # } - # pys = ["cp36", "cp37", "cp38", "cp39", "cp310"] + # pys = ["cp37", "cp38", "cp39", "cp310"] # PYVERSIONS # os_arch_pys = { # ("macos", "arm64"): ["cp38", "cp39", "cp310"], # } @@ -74,17 +74,14 @@ jobs: # } # print(f"- {json.dumps(them)}") # ]]] - - {"os": "ubuntu", "py": "cp36", "arch": "x86_64"} - {"os": "ubuntu", "py": "cp37", "arch": "x86_64"} - {"os": "ubuntu", "py": "cp38", "arch": "x86_64"} - {"os": "ubuntu", "py": "cp39", "arch": "x86_64"} - {"os": "ubuntu", "py": "cp310", "arch": "x86_64"} - - {"os": "ubuntu", "py": "cp36", "arch": "i686"} - {"os": "ubuntu", "py": "cp37", "arch": "i686"} - {"os": "ubuntu", "py": "cp38", "arch": "i686"} - {"os": "ubuntu", "py": "cp39", "arch": "i686"} - {"os": "ubuntu", "py": "cp310", "arch": "i686"} - - {"os": "ubuntu", "py": "cp36", "arch": "aarch64"} - {"os": "ubuntu", "py": "cp37", "arch": "aarch64"} - {"os": "ubuntu", "py": "cp38", "arch": "aarch64"} - {"os": "ubuntu", "py": "cp39", "arch": "aarch64"} @@ -92,22 +89,19 @@ jobs: - {"os": "macos", "py": "cp38", "arch": "arm64"} - {"os": "macos", "py": "cp39", "arch": "arm64"} - {"os": "macos", "py": "cp310", "arch": "arm64"} - - {"os": "macos", "py": "cp36", "arch": "x86_64"} - {"os": "macos", "py": "cp37", "arch": "x86_64"} - {"os": "macos", "py": "cp38", "arch": "x86_64"} - {"os": "macos", "py": "cp39", "arch": "x86_64"} - {"os": "macos", "py": "cp310", "arch": "x86_64"} - - {"os": "windows", "py": "cp36", "arch": "x86"} - {"os": "windows", "py": "cp37", "arch": "x86"} - {"os": "windows", "py": "cp38", "arch": "x86"} - {"os": "windows", "py": "cp39", "arch": "x86"} - {"os": "windows", "py": "cp310", "arch": "x86"} - - {"os": "windows", "py": "cp36", "arch": "AMD64"} - {"os": "windows", "py": "cp37", "arch": "AMD64"} - {"os": "windows", "py": "cp38", "arch": "AMD64"} - {"os": "windows", "py": "cp39", "arch": "AMD64"} - {"os": "windows", "py": "cp310", "arch": "AMD64"} - # [[[end]]] (checksum: dd4b4a059d9e8b8ae7e389a428a999f9) + # [[[end]]] (checksum: 4b02126e18e2b3798783d3cc6f303552) fail-fast: false steps: diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 2eb64b59..6da0627e 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -33,7 +33,7 @@ jobs: - name: "Install Python" uses: "actions/setup-python@v2" with: - python-version: "3.8" + python-version: "3.7" # Minimum of PYVERSIONS cache: pip cache-dependency-path: 'requirements/*.pip' @@ -59,7 +59,7 @@ jobs: - name: "Install Python" uses: "actions/setup-python@v2" with: - python-version: "3.8" + python-version: "3.7" # Minimum of PYVERSIONS cache: pip cache-dependency-path: 'requirements/*.pip' diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index 1fd6df4c..54859b25 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -32,8 +32,7 @@ jobs: - windows-latest python-version: # When changing this list, be sure to check the [gh-actions] list in - # tox.ini so that tox will run properly. - - "3.6" + # tox.ini so that tox will run properly. PYVERSIONS - "3.7" - "3.8" - "3.9" diff --git a/CHANGES.rst b/CHANGES.rst index 86612877..8ac4997b 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -22,6 +22,8 @@ This list is detailed and covers changes in each pre-release version. Unreleased ---------- +- Dropped support for Python 3.6, which ended support on 2021-12-23. + - Releases now have MacOS arm64 wheels for Apple Silicon (fixes `issue 1288`_). .. _issue 1288: https://github.com/nedbat/coveragepy/issues/1288 diff --git a/README.rst b/README.rst index aaa05425..5aee2863 100644 --- a/README.rst +++ b/README.rst @@ -19,7 +19,9 @@ library to determine which lines are executable, and which have been executed. Coverage.py runs on these versions of Python: -* CPython 3.6 through 3.11. +.. PYVERSIONS + +* CPython 3.7 through 3.11. * PyPy3 7.3.7. Documentation is on `Read the Docs`_. Code repository and issue tracker are on @@ -29,8 +31,8 @@ Documentation is on `Read the Docs`_. Code repository and issue tracker are on .. _GitHub: https://github.com/nedbat/coveragepy -**New in 6.x:** dropped support for Python 2.7 and 3.5; added support for 3.10 -match/case statements. +**New in 6.x:** dropped support for Python 2.7, 3.5, and 3.6; +added support for 3.10 match/case statements. For Enterprise diff --git a/ci/download_gha_artifacts.py b/ci/download_gha_artifacts.py index 7828d3f8..df22c688 100644 --- a/ci/download_gha_artifacts.py +++ b/ci/download_gha_artifacts.py @@ -21,7 +21,7 @@ def download_url(url, filename): for chunk in response.iter_content(16*1024): f.write(chunk) else: - raise Exception(f"Fetching {url} produced: {response.status_code=}") + raise Exception(f"Fetching {url} produced: status={response.status_code}") def unpack_zipfile(filename): """Unpack a zipfile, using the names in the zip.""" diff --git a/coverage/version.py b/coverage/version.py index 96dbd71f..8752e843 100644 --- a/coverage/version.py +++ b/coverage/version.py @@ -5,7 +5,7 @@ # This file is exec'ed in setup.py, don't import anything! # Same semantics as sys.version_info. -version_info = (6, 2, 1, "alpha", 0) +version_info = (6, 3, 0, "alpha", 0) def _make_version(major, minor, micro, releaselevel, serial): diff --git a/doc/contributing.rst b/doc/contributing.rst index 1ccb4061..653e2a69 100644 --- a/doc/contributing.rst +++ b/doc/contributing.rst @@ -37,7 +37,9 @@ The coverage.py code is hosted on a GitHub repository at https://github.com/nedbat/coveragepy. To get a working environment, follow these steps: -#. (Optional, but recommended) Create a Python 3.8 virtualenv to work in, +.. minimum of PYVERSIONS: + +#. (Optional, but recommended) Create a Python 3.7 virtualenv to work in, and activate it. #. Clone the repository:: diff --git a/doc/index.rst b/doc/index.rst index 3c29f51d..9661797b 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -16,7 +16,9 @@ not. The latest version is coverage.py |release|, released |release_date|. It is supported on: -* Python versions 3.6 through 3.11. +.. PYVERSIONS + +* Python versions 3.7 through 3.11. * PyPy3 7.3.7. diff --git a/howto.txt b/howto.txt index a3784352..b11f3481 100644 --- a/howto.txt +++ b/howto.txt @@ -6,7 +6,8 @@ version_info = (4, 0, 2, "beta", 1) version_info = (4, 0, 2, "candidate", 1) version_info = (4, 0, 2, "final", 0) -- Python version number in classifiers in setup.py +- Supported Python version numbers. Search for "PYVERSIONS". + - Python version number in classifiers in setup.py - Copyright date in NOTICE.txt - Update CHANGES.rst, including release date. - don't forget the jump target diff --git a/setup.cfg b/setup.cfg index 221e1230..e13f4835 100644 --- a/setup.cfg +++ b/setup.cfg @@ -12,6 +12,7 @@ filterwarnings = ignore:dns.hash module will be removed:DeprecationWarning ignore:Using or importing the ABCs:DeprecationWarning ignore:the imp module is deprecated in favour of importlib:DeprecationWarning + ignore:distutils Version classes are deprecated:DeprecationWarning # xfail tests that pass should fail the test suite xfail_strict = true diff --git a/setup.py b/setup.py index efea78b8..00f6086d 100644 --- a/setup.py +++ b/setup.py @@ -32,6 +32,7 @@ if bool(int(os.getenv("COVERAGE_QUIETER", "0"))): # Get or massage our metadata. We exec coverage/version.py so we can avoid # importing the product code into setup.py. +# PYVERSIONS classifiers = """\ Environment :: Console Intended Audience :: Developers @@ -39,7 +40,6 @@ License :: OSI Approved :: Apache Software License Operating System :: OS Independent Programming Language :: Python Programming Language :: Python :: 3 -Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -77,7 +77,7 @@ elif version_info[3] in ['beta', 'candidate']: else: assert version_info[3] == 'final' devstat = "5 - Production/Stable" -classifier_list.append("Development Status :: " + devstat) +classifier_list.append(f"Development Status :: {devstat}") # Create the keyword arguments for setup() @@ -132,7 +132,7 @@ setup_args = dict( 'Issues': 'https://github.com/nedbat/coveragepy/issues', 'Twitter': 'https://twitter.com/coveragepy', }, - python_requires=">=3.6", + python_requires=">=3.7", # minimum of PYVERSIONS ) # A replacement for the build_ext command which raises a single exception diff --git a/tox.ini b/tox.ini index 6ac0bb9e..1164b05c 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,8 @@ [tox] # When changing this list, be sure to check the [gh-actions] list below. -envlist = py{36,37,38,39,310,311}, pypy3, doc, lint +# PYVERSIONS +envlist = py{37,38,39,310,311}, pypy3, doc, lint skip_missing_interpreters = {env:COVERAGE_SKIP_MISSING_INTERPRETERS:True} toxworkdir = {env:TOXWORKDIR:.tox} @@ -15,7 +16,7 @@ extras = deps = -r requirements/pip.pip -r requirements/pytest.pip - py{36,37,38,39,310}: -r requirements/light-threads.pip + py{37,38,39,310}: -r requirements/light-threads.pip # Windows can't update the pip version with pip running, so use Python # to install things. @@ -90,8 +91,8 @@ commands = check-manifest --ignore 'lab/*,perf/*,doc/sample_html/*,.treerc,.github*' [gh-actions] +# PYVERSIONS python = - 3.6: py36 3.7: py37 3.8: py38 3.9: py39 -- cgit v1.2.1