From 1d47df2975afd7c93d6ef9c0d1baed022813aebf Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 18 Mar 2022 11:24:34 -0500 Subject: [PATCH] Require Python 3.8+. (#715) * Update CI configuration. * Update oldest dependencies to versions with Python 3.8 wheels. * Require Python>=3.8. * Target Python 3.8 for black and pyupgrade. * Update docs. * Update changelog. * Use Python 3.10 on Windows. * Rename Windows CI job. * Call codecov with python -m codecov. * Update NEP 29 language. * Add link to NEP 29. Co-authored-by: Carl Simon Adorf Co-authored-by: Carl Simon Adorf --- .circleci/ci-oldest-reqs.txt | 8 ++++---- .circleci/config.yml | 24 ++++++++++++------------ .pre-commit-config.yaml | 2 +- README.md | 2 +- changelog.txt | 5 +++++ doc/installation.rst | 4 ++-- pyproject.toml | 2 +- setup.py | 4 +--- 8 files changed, 27 insertions(+), 24 deletions(-) diff --git a/.circleci/ci-oldest-reqs.txt b/.circleci/ci-oldest-reqs.txt index c5cf11dc5..4ae487718 100644 --- a/.circleci/ci-oldest-reqs.txt +++ b/.circleci/ci-oldest-reqs.txt @@ -2,13 +2,13 @@ click==7.1.2 coverage==5.3.1 deprecation==2.0 filelock==3.0.0 -h5py==2.8.0 -numpy==1.13.3 +h5py==2.9.0 +numpy==1.19.0 packaging==15.0 pandas==1.0.0 -pymongo==3.0.0 +pymongo==3.10.0 pytest-cov==2.10.1 pytest-xdist==2.5.0 pytest==6.2.1 -tables==3.4.2 +tables==3.6.1 tqdm==4.10.0 diff --git a/.circleci/config.yml b/.circleci/config.yml index d8e3fb0bc..062f9588f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -76,7 +76,7 @@ jobs: command: | . venv/bin/activate ${PYTHON} -m pytest -n 2 --dist loadfile --cov=signac --cov-config=setup.cfg --cov-report=xml tests/ -v - codecov + ${PYTHON} -m codecov - store_artifacts: path: test-reports @@ -123,10 +123,10 @@ jobs: - image: circleci/mongo:latest - image: circleci/redis:latest - linux-python-36-oldest: + linux-python-38-oldest: <<: *linux-template docker: - - image: cimg/python:3.6 + - image: cimg/python:3.8 - image: circleci/mongo:latest - image: circleci/redis:latest environment: @@ -143,18 +143,18 @@ jobs: DEPENDENCIES: "NEWEST" PYTHON: pypy3 - windows-python-38: + windows-python-310: executor: name: win/default shell: bash.exe environment: - PYTHON: python + PYTHON: C:\Python310\python steps: - checkout - run: name: Install Python command: | - choco install python --version 3.8.1 --limit-output --no-progress + choco install python --version 3.10.2 --limit-output --no-progress - run: name: Install dependencies command: | @@ -172,7 +172,7 @@ jobs: name: Run tests command: | ${PYTHON} -m pytest -n 2 --dist loadfile --cov=signac --cov-report=xml tests/ -v - codecov + ${PYTHON} -m codecov macos-python-3: macos: # executor type @@ -196,7 +196,7 @@ jobs: python -m pip install --progress-bar off -U -r requirements/requirements-test-optional.txt python -m pip install --progress-bar off -U -e . python -m pytest -n 2 --dist loadfile --cov=signac --cov-report=xml tests/ -v - codecov + python -m codecov check-metadata: docker: @@ -245,9 +245,9 @@ workflows: - linux-python-310-minimal - linux-python-39 - linux-python-38 - - linux-python-36-oldest + - linux-python-38-oldest - linux-pypy-38 - - windows-python-38 + - windows-python-310 - macos-python-3 - check-metadata: filters: @@ -262,9 +262,9 @@ workflows: - linux-python-310-minimal - linux-python-39 - linux-python-38 - - linux-python-36-oldest + - linux-python-38-oldest - linux-pypy-38 - - windows-python-38 + - windows-python-310 deploy: jobs: - deploy-pypi: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index db28effe2..86b588909 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,7 +23,7 @@ repos: hooks: - id: pyupgrade args: - - --py36-plus + - --py38-plus - repo: https://github.com/PyCQA/isort rev: '5.10.1' hooks: diff --git a/README.md b/README.md index ac3bc890b..db8a2c4e8 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ This makes it easier to operate on large data spaces, streamlines post-processin ## Installation The recommended installation method for **signac** is through **conda** or **pip**. -The software is tested for Python 3.6+ and is built for all major platforms. +The software is tested for Python 3.8+ and is built for all major platforms. To install **signac** *via* the [conda-forge](https://conda-forge.github.io/) channel, execute: diff --git a/changelog.txt b/changelog.txt index db6d1164b..fc15e03ec 100644 --- a/changelog.txt +++ b/changelog.txt @@ -41,6 +41,11 @@ Fixed - User-provided path functions now raise an error if not unique (#666). - ``Collection`` class no longer raises an error when searching by a primary key that does not exist (#676). +Removed ++++++++ + + - Dropped support for Python 3.6 and Python 3.7 (#715) following the recommended support schedules of `NEP 29 `__. + [1.7.0] -- 2021-06-08 --------------------- diff --git a/doc/installation.rst b/doc/installation.rst index 2ca8b11e4..778bd546d 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -5,9 +5,9 @@ Installation ============ The recommended installation method for **signac** is via conda_ or pip_. -The software is tested for Python versions 3.6+ and has minimal dependencies. +The software is tested for Python versions 3.8+ and has minimal dependencies. Some features such as the HDF5 integration require additional packages. -Supported Python and NumPy versions are determined according to the `NEP 29 deprecation policy `_. +The signac framework uses the `NEP 29 deprecation policy `__ as a guideline for when to drop support for Python and NumPy versions, and does not guarantee support beyond the versions recommended in that proposal. .. _conda: https://conda.io/ .. _conda-forge: https://conda-forge.org/ diff --git a/pyproject.toml b/pyproject.toml index 1dbe40fae..15d110af8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [tool.black] -target-version = ['py36'] +target-version = ['py38'] include = '\.pyi?$' exclude = ''' ( diff --git a/setup.py b/setup.py index 76cee64d2..a43697db9 100644 --- a/setup.py +++ b/setup.py @@ -47,8 +47,6 @@ "License :: OSI Approved :: BSD License", "Topic :: Database", "Topic :: Scientific/Engineering :: Physics", - "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", @@ -64,7 +62,7 @@ install_requires=requirements, # Supported versions are determined according to NEP 29. # https://numpy.org/neps/nep-0029-deprecation_policy.html - python_requires=">=3.6, <4", + python_requires=">=3.8, <4", extras_require={"db": ["pymongo>=3.0"], "mpi": ["mpi4py"], "h5": ["h5py"]}, entry_points={"console_scripts": ["signac = signac.__main__:main"]}, )