From 2adedbced78845c76ec0975925e07f64229b94f7 Mon Sep 17 00:00:00 2001 From: Sammi De Guzman Date: Tue, 26 Sep 2023 22:14:15 -0700 Subject: [PATCH 1/4] Drop Python 3.7 --- .github/workflows/ci/workflow_context.yml | 53 +++++++++++------------ doc/developer_guide.md | 17 ++++---- reqs/test.txt | 1 - setup.cfg | 4 +- 4 files changed, 36 insertions(+), 39 deletions(-) diff --git a/.github/workflows/ci/workflow_context.yml b/.github/workflows/ci/workflow_context.yml index 86be24e3e..9818d4832 100644 --- a/.github/workflows/ci/workflow_context.yml +++ b/.github/workflows/ci/workflow_context.yml @@ -11,19 +11,19 @@ skippy_enabled: true vars: - &dist_linux variant: Linux - python: '3.9' + python: "3.9" os: Linux platform: ubuntu-22.04 - &dist_macos variant: macOS - python: '3.9' + python: "3.9" os: macOS platform: macos-12 - &dist_win variant: Windows - python: '3.9' + python: "3.9" os: Windows platform: windows-2022 @@ -32,67 +32,66 @@ vars: platform: ubuntu-latest jobs: - # Platform tests. - &test <<: *dist_linux type: test - reqs: ['dist', 'test'] - skiplists: ['job_test', 'os_linux'] + reqs: ["dist", "test"] + skiplists: ["job_test", "os_linux"] test_args: -p no:pytest-qt --ignore=test/gui_qt - <<: *test <<: *dist_macos - cache_extra_deps: ['osx/deps.sh'] - skiplists: ['job_test', 'os_macos'] + cache_extra_deps: ["osx/deps.sh"] + skiplists: ["job_test", "os_macos"] - <<: *test <<: *dist_win - skiplists: ['job_test', 'os_windows'] + skiplists: ["job_test", "os_windows"] # Python tests. - &python_test <<: *test <<: *dist_other - variant: Python 3.7 - python: '3.7' - skiplists: ['job_test', 'os_linux', 'os_macos', 'os_windows'] - - <<: *python_test variant: Python 3.8 - python: '3.8' + python: "3.8" + skiplists: ["job_test", "os_linux", "os_macos", "os_windows"] - <<: *python_test variant: Python 3.10 - python: '3.10' + python: "3.10" + - <<: *python_test + variant: Python 3.11 + python: "3.11" # Qt GUI tests. - <<: *test type: test_gui_qt variant: Qt GUI - reqs: ['dist', 'dist_extra_gui_qt', 'test'] - skiplists: ['job_test_gui_qt'] + reqs: ["dist", "dist_extra_gui_qt", "test"] + skiplists: ["job_test_gui_qt"] test_args: test/gui_qt # Packaging tests. - <<: *dist_other type: test_packaging variant: Packaging - python: '3.9' - reqs: ['packaging', 'setup'] - skiplists: ['job_test_packaging'] + python: "3.9" + reqs: ["packaging", "setup"] + skiplists: ["job_test_packaging"] # Platform builds. - &build <<: *dist_linux type: build needs: [test_linux] - reqs: ['build', 'setup'] - cache_extra_deps: ['reqs/dist_*.txt', 'linux/appimage/deps.sh'] - skiplists: ['job_build', 'os_linux'] + reqs: ["build", "setup"] + cache_extra_deps: ["reqs/dist_*.txt", "linux/appimage/deps.sh"] + skiplists: ["job_build", "os_linux"] - <<: *build <<: *dist_macos needs: [test_macos] - cache_extra_deps: ['reqs/dist_*.txt', 'osx/deps.sh'] - skiplists: ['job_build', 'os_macos'] + cache_extra_deps: ["reqs/dist_*.txt", "osx/deps.sh"] + skiplists: ["job_build", "os_macos"] - <<: *build <<: *dist_win needs: [test_windows] - cache_extra_deps: ['reqs/dist_*.txt', 'windows/dist_deps.sh'] - skiplists: ['job_build', 'os_windows'] + cache_extra_deps: ["reqs/dist_*.txt", "windows/dist_deps.sh"] + skiplists: ["job_build", "os_windows"] diff --git a/doc/developer_guide.md b/doc/developer_guide.md index 0f8c37b92..108063bc6 100644 --- a/doc/developer_guide.md +++ b/doc/developer_guide.md @@ -1,6 +1,6 @@ # Environment setup -You need Python >= 3.7 installed, and you need [tox](https://pypi.org/project/tox/) >= 4.0. +You need Python >= 3.8 installed, and you need [tox](https://pypi.org/project/tox/) >= 4.0. Using tox takes care of all the details of creating and managing an isolated virtual environment, installing the necessary dependencies, and isolating @@ -10,12 +10,13 @@ The command for using tox is: `tox r {-e envlist} {-- arguments}`. Use `tox -a -v` to get a list of available environments. The same virtual environment is reused by the following tox environments: + - `tox r -e test -- ARGS`: run the testsuite. This is the default environment when not provided. - `tox r -e launch -- ARGS`: run Plover from source. - `tox r -e setup -- COMMAND`: run `./setup.py COMMAND`. - `tox r -e packaging_checks`: run the same packaging checks as the CI (add `-- - -n` to see a dry-run of the exact checks). +-n` to see a dry-run of the exact checks). - `tox r -e plugins_install`: install the distribution plugins (or the specified plugins when run with `tox -e plugins_install -- REQS`). Note that this does not use the plugins manager for installing. @@ -30,11 +31,10 @@ The actual virtual environment lives in `.tox/dev`, and can be ["activated" like any other virtual environment](https://virtualenv.pypa.io/en/latest/user_guide.html#activators). The configuration also provides support for lightweight tests only environment: -`pyX`, where `X` is the version of the Python interpreter to use. E.g. running +`pyX`, where `X` is the version of the Python interpreter to use. E.g. running `tox r -e 'py3,py36,py37,py38,py39` will execute the testsuite for each version of Python we support. - # Creating a binary distribution A number of commands are provided by `setup.py` for creating binary @@ -47,7 +47,6 @@ distributions (which include all the necessary dependencies): Use `bdist_xxx --help` to get more information on each command supported options. - # Making a pull request When making a pull request, please include a short summary of the changes @@ -63,7 +62,7 @@ description of the substantive changes in the PR. They should be named `
/..md`, where the sections / categories are: -* `feature`: New features: +- `feature`: New features: - `core`: Core changes. - `dict`: Updates to the default dictionaries. @@ -72,9 +71,9 @@ They should be named `
/..md`, where the sections - `osx`: macOS specific changes. - `windows`: Windows specific changes. -* `bugfix`: For bugfixes, support the same categories as for `feature`. +- `bugfix`: For bugfixes, support the same categories as for `feature`. -* `api`: For documenting changes to the public/plugins API: +- `api`: For documenting changes to the public/plugins API: - `break`: For breaking (backward incompatible) changes. - `dnr`: For deprecations of an existing feature or behavior. @@ -86,7 +85,7 @@ case two fragments should be added. It is not necessary to make a separate documentation fragment for documentation changes accompanying the relevant code changes. See the following for an example news fragment: -``` bash +```bash $ cat news.d/bugfix/1041.ui.md Fix possible crash when changing machine parameters in the configuration dialog. ``` diff --git a/reqs/test.txt b/reqs/test.txt index 18b60b78d..2ec35ce50 100644 --- a/reqs/test.txt +++ b/reqs/test.txt @@ -1,4 +1,3 @@ -mock>=3.0.0; python_version <= "3.7" pytest pytest-qt diff --git a/setup.cfg b/setup.cfg index 8a1ef9c3e..b1dd97ada 100644 --- a/setup.cfg +++ b/setup.cfg @@ -5,10 +5,10 @@ maintainer = Ted Morin maintainer_email = morinted@gmail.com classifiers = Programming Language :: Python :: 3 - 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 License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) Development Status :: 5 - Production/Stable Environment :: X11 Applications @@ -32,7 +32,7 @@ project_urls = [options] include_package_data = True -python_requires = >=3.7 +python_requires = >=3.8 zip_safe = True packages = plover From 06b3e8f5bb2c8689c7357738d8d7233993dee838 Mon Sep 17 00:00:00 2001 From: Sammi De Guzman Date: Tue, 26 Sep 2023 22:16:06 -0700 Subject: [PATCH 2/4] Add news blurb for #1634 --- news.d/api/1634.break.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 news.d/api/1634.break.md diff --git a/news.d/api/1634.break.md b/news.d/api/1634.break.md new file mode 100644 index 000000000..3cb186bf8 --- /dev/null +++ b/news.d/api/1634.break.md @@ -0,0 +1 @@ +Dropped support for Python 3.7. From c6723c296e04d074000bbf72c30f66574f2eeab2 Mon Sep 17 00:00:00 2001 From: Sammi De Guzman Date: Tue, 26 Sep 2023 22:18:02 -0700 Subject: [PATCH 3/4] ci: Regenerate CI workflows --- .github/workflows/ci.yml | 82 ++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9432dbb01..7b2777de9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,9 +38,9 @@ jobs: job_cache_extra_deps=(); job_id=test_linux; job_name='Test (Linux)'; job_needs=(); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_linux_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_test_linux; job_skiplists=(job_test os_linux); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=Linux; analyze_set_job_skip_cache_key job_cache_extra_deps=(osx/deps.sh); job_id=test_macos; job_name='Test (macOS)'; job_needs=(); job_os=macOS; job_platform=macos-12; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_macos_py-3.9_macos-12; job_skip_cache_path=.skip_cache_test_macos; job_skiplists=(job_test os_macos); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=macOS; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_windows; job_name='Test (Windows)'; job_needs=(); job_os=Windows; job_platform=windows-2022; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_windows_py-3.9_windows-2022; job_skip_cache_path=.skip_cache_test_windows; job_skiplists=(job_test os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=Windows; analyze_set_job_skip_cache_key - job_cache_extra_deps=(); job_id=test_python_37; job_name='Test (Python 3.7)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.7; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_37_py-3.7_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_37; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.7'; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_python_38; job_name='Test (Python 3.8)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.8; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_38_py-3.8_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_38; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.8'; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_python_310; job_name='Test (Python 3.10)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.10; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_310_py-3.10_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_310; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.10'; analyze_set_job_skip_cache_key + job_cache_extra_deps=(); job_id=test_python_311; job_name='Test (Python 3.11)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.11; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_311_py-3.11_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_311; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.11'; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_qt_gui; job_name='Test (Qt GUI)'; job_needs=(); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/dist.txt reqs/dist_extra_gui_qt.txt reqs/test.txt); job_skip_cache_name=skip_test_qt_gui_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_test_qt_gui; job_skiplists=(job_test_gui_qt); job_test_args=test/gui_qt; job_type=test_gui_qt; job_variant='Qt GUI'; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_packaging; job_name='Test (Packaging)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.9; job_reqs=(reqs/packaging.txt reqs/setup.txt); job_skip_cache_name=skip_test_packaging_py-3.9_ubuntu-latest; job_skip_cache_path=.skip_cache_test_packaging; job_skiplists=(job_test_packaging); job_type=test_packaging; job_variant=Packaging; analyze_set_job_skip_cache_key job_cache_extra_deps=('reqs/dist_*.txt' linux/appimage/deps.sh); job_id=build_linux; job_name='Build (Linux)'; job_needs=(test_linux); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/build.txt reqs/setup.txt); job_skip_cache_name=skip_build_linux_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_build_linux; job_skiplists=(job_build os_linux); job_type=build; job_variant=Linux; analyze_set_job_skip_cache_key @@ -71,14 +71,6 @@ jobs: restore-keys: 0_${{ steps.set_cache.outputs.test_windows_skip_cache_key }} - - name: Check skip cache for Test (Python 3.7) - uses: actions/cache@v3 - with: - path: .skip_cache_test_python_37 - key: 0_check_${{ steps.set_cache.outputs.test_python_37_skip_cache_key }}_${{ github.run_id }} - restore-keys: - 0_${{ steps.set_cache.outputs.test_python_37_skip_cache_key }} - - name: Check skip cache for Test (Python 3.8) uses: actions/cache@v3 with: @@ -95,6 +87,14 @@ jobs: restore-keys: 0_${{ steps.set_cache.outputs.test_python_310_skip_cache_key }} + - name: Check skip cache for Test (Python 3.11) + uses: actions/cache@v3 + with: + path: .skip_cache_test_python_311 + key: 0_check_${{ steps.set_cache.outputs.test_python_311_skip_cache_key }}_${{ github.run_id }} + restore-keys: + 0_${{ steps.set_cache.outputs.test_python_311_skip_cache_key }} + - name: Check skip cache for Test (Qt GUI) uses: actions/cache@v3 with: @@ -144,9 +144,9 @@ jobs: job_cache_extra_deps=(); job_id=test_linux; job_name='Test (Linux)'; job_needs=(); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_linux_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_test_linux; job_skiplists=(job_test os_linux); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=Linux; analyze_set_job_skip_job job_cache_extra_deps=(osx/deps.sh); job_id=test_macos; job_name='Test (macOS)'; job_needs=(); job_os=macOS; job_platform=macos-12; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_macos_py-3.9_macos-12; job_skip_cache_path=.skip_cache_test_macos; job_skiplists=(job_test os_macos); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=macOS; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_windows; job_name='Test (Windows)'; job_needs=(); job_os=Windows; job_platform=windows-2022; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_windows_py-3.9_windows-2022; job_skip_cache_path=.skip_cache_test_windows; job_skiplists=(job_test os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=Windows; analyze_set_job_skip_job - job_cache_extra_deps=(); job_id=test_python_37; job_name='Test (Python 3.7)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.7; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_37_py-3.7_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_37; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.7'; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_python_38; job_name='Test (Python 3.8)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.8; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_38_py-3.8_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_38; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.8'; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_python_310; job_name='Test (Python 3.10)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.10; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_310_py-3.10_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_310; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.10'; analyze_set_job_skip_job + job_cache_extra_deps=(); job_id=test_python_311; job_name='Test (Python 3.11)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.11; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_311_py-3.11_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_311; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.11'; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_qt_gui; job_name='Test (Qt GUI)'; job_needs=(); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/dist.txt reqs/dist_extra_gui_qt.txt reqs/test.txt); job_skip_cache_name=skip_test_qt_gui_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_test_qt_gui; job_skiplists=(job_test_gui_qt); job_test_args=test/gui_qt; job_type=test_gui_qt; job_variant='Qt GUI'; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_packaging; job_name='Test (Packaging)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.9; job_reqs=(reqs/packaging.txt reqs/setup.txt); job_skip_cache_name=skip_test_packaging_py-3.9_ubuntu-latest; job_skip_cache_path=.skip_cache_test_packaging; job_skiplists=(job_test_packaging); job_type=test_packaging; job_variant=Packaging; analyze_set_job_skip_job job_cache_extra_deps=('reqs/dist_*.txt' linux/appimage/deps.sh); job_id=build_linux; job_name='Build (Linux)'; job_needs=(test_linux); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/build.txt reqs/setup.txt); job_skip_cache_name=skip_build_linux_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_build_linux; job_skiplists=(job_build os_linux); job_type=build; job_variant=Linux; analyze_set_job_skip_job @@ -162,12 +162,12 @@ jobs: test_macos_skip_cache_key: ${{ steps.set_cache.outputs.test_macos_skip_cache_key }} test_windows_skip_job: ${{ steps.set_ouputs.outputs.test_windows_skip_job }} test_windows_skip_cache_key: ${{ steps.set_cache.outputs.test_windows_skip_cache_key }} - test_python_37_skip_job: ${{ steps.set_ouputs.outputs.test_python_37_skip_job }} - test_python_37_skip_cache_key: ${{ steps.set_cache.outputs.test_python_37_skip_cache_key }} test_python_38_skip_job: ${{ steps.set_ouputs.outputs.test_python_38_skip_job }} test_python_38_skip_cache_key: ${{ steps.set_cache.outputs.test_python_38_skip_cache_key }} test_python_310_skip_job: ${{ steps.set_ouputs.outputs.test_python_310_skip_job }} test_python_310_skip_cache_key: ${{ steps.set_cache.outputs.test_python_310_skip_cache_key }} + test_python_311_skip_job: ${{ steps.set_ouputs.outputs.test_python_311_skip_job }} + test_python_311_skip_cache_key: ${{ steps.set_cache.outputs.test_python_311_skip_cache_key }} test_qt_gui_skip_job: ${{ steps.set_ouputs.outputs.test_qt_gui_skip_job }} test_qt_gui_skip_cache_key: ${{ steps.set_cache.outputs.test_qt_gui_skip_cache_key }} test_packaging_skip_job: ${{ steps.set_ouputs.outputs.test_packaging_skip_job }} @@ -353,15 +353,15 @@ jobs: run: list_cache # }}} - # Job: Test (Python 3.7) {{{ - test_python_37: + # Job: Test (Python 3.8) {{{ + test_python_38: - name: Test (Python 3.7) + name: Test (Python 3.8) runs-on: ubuntu-latest needs: [analyze, ] if: >- !cancelled() - && needs.analyze.outputs.test_python_37_skip_job == 'no' + && needs.analyze.outputs.test_python_38_skip_job == 'no' steps: @@ -371,11 +371,11 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: '3.7' + python-version: '3.8' - name: Set cache name id: set_cache - run: setup_cache_name '3.7' 'ubuntu-latest' + run: setup_cache_name '3.8' 'ubuntu-latest' - name: Setup cache uses: actions/cache@v3 @@ -399,25 +399,25 @@ jobs: - name: Update skip cache 1 uses: actions/cache@v3 with: - path: .skip_cache_test_python_37 - key: 0_${{ needs.analyze.outputs.test_python_37_skip_cache_key }} + path: .skip_cache_test_python_38 + key: 0_${{ needs.analyze.outputs.test_python_38_skip_cache_key }} - name: Update skip cache 2 - run: run_eval "echo 'https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID' >'.skip_cache_test_python_37'" + run: run_eval "echo 'https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID' >'.skip_cache_test_python_38'" - name: List cache contents run: list_cache # }}} - # Job: Test (Python 3.8) {{{ - test_python_38: + # Job: Test (Python 3.10) {{{ + test_python_310: - name: Test (Python 3.8) + name: Test (Python 3.10) runs-on: ubuntu-latest needs: [analyze, ] if: >- !cancelled() - && needs.analyze.outputs.test_python_38_skip_job == 'no' + && needs.analyze.outputs.test_python_310_skip_job == 'no' steps: @@ -427,11 +427,11 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: '3.8' + python-version: '3.10' - name: Set cache name id: set_cache - run: setup_cache_name '3.8' 'ubuntu-latest' + run: setup_cache_name '3.10' 'ubuntu-latest' - name: Setup cache uses: actions/cache@v3 @@ -455,25 +455,25 @@ jobs: - name: Update skip cache 1 uses: actions/cache@v3 with: - path: .skip_cache_test_python_38 - key: 0_${{ needs.analyze.outputs.test_python_38_skip_cache_key }} + path: .skip_cache_test_python_310 + key: 0_${{ needs.analyze.outputs.test_python_310_skip_cache_key }} - name: Update skip cache 2 - run: run_eval "echo 'https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID' >'.skip_cache_test_python_38'" + run: run_eval "echo 'https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID' >'.skip_cache_test_python_310'" - name: List cache contents run: list_cache # }}} - # Job: Test (Python 3.10) {{{ - test_python_310: + # Job: Test (Python 3.11) {{{ + test_python_311: - name: Test (Python 3.10) + name: Test (Python 3.11) runs-on: ubuntu-latest needs: [analyze, ] if: >- !cancelled() - && needs.analyze.outputs.test_python_310_skip_job == 'no' + && needs.analyze.outputs.test_python_311_skip_job == 'no' steps: @@ -483,11 +483,11 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.11' - name: Set cache name id: set_cache - run: setup_cache_name '3.10' 'ubuntu-latest' + run: setup_cache_name '3.11' 'ubuntu-latest' - name: Setup cache uses: actions/cache@v3 @@ -511,11 +511,11 @@ jobs: - name: Update skip cache 1 uses: actions/cache@v3 with: - path: .skip_cache_test_python_310 - key: 0_${{ needs.analyze.outputs.test_python_310_skip_cache_key }} + path: .skip_cache_test_python_311 + key: 0_${{ needs.analyze.outputs.test_python_311_skip_cache_key }} - name: Update skip cache 2 - run: run_eval "echo 'https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID' >'.skip_cache_test_python_310'" + run: run_eval "echo 'https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID' >'.skip_cache_test_python_311'" - name: List cache contents run: list_cache @@ -904,15 +904,15 @@ jobs: name: Release environment: release runs-on: ubuntu-latest - needs: [analyze, test_linux, test_macos, test_windows, test_python_37, test_python_38, test_python_310, test_qt_gui, test_packaging, build_linux, build_macos, build_windows] + needs: [analyze, test_linux, test_macos, test_windows, test_python_38, test_python_310, test_python_311, test_qt_gui, test_packaging, build_linux, build_macos, build_windows] if: >- !cancelled() && needs.test_linux.result == 'success' && needs.test_macos.result == 'success' && needs.test_windows.result == 'success' - && needs.test_python_37.result == 'success' && needs.test_python_38.result == 'success' && needs.test_python_310.result == 'success' + && needs.test_python_311.result == 'success' && needs.test_qt_gui.result == 'success' && needs.test_packaging.result == 'success' && needs.build_linux.result == 'success' From a8ac3631bee1971eec2b41b74fbebdad4750291a Mon Sep 17 00:00:00 2001 From: Sammi De Guzman Date: Tue, 26 Sep 2023 22:21:17 -0700 Subject: [PATCH 4/4] ci: Revert adding Python 3.11 --- .github/workflows/ci.yml | 71 +---------------------- .github/workflows/ci/workflow_context.yml | 3 - setup.cfg | 1 - 3 files changed, 1 insertion(+), 74 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b2777de9..bb8fbd3d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,6 @@ jobs: job_cache_extra_deps=(); job_id=test_windows; job_name='Test (Windows)'; job_needs=(); job_os=Windows; job_platform=windows-2022; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_windows_py-3.9_windows-2022; job_skip_cache_path=.skip_cache_test_windows; job_skiplists=(job_test os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=Windows; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_python_38; job_name='Test (Python 3.8)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.8; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_38_py-3.8_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_38; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.8'; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_python_310; job_name='Test (Python 3.10)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.10; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_310_py-3.10_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_310; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.10'; analyze_set_job_skip_cache_key - job_cache_extra_deps=(); job_id=test_python_311; job_name='Test (Python 3.11)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.11; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_311_py-3.11_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_311; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.11'; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_qt_gui; job_name='Test (Qt GUI)'; job_needs=(); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/dist.txt reqs/dist_extra_gui_qt.txt reqs/test.txt); job_skip_cache_name=skip_test_qt_gui_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_test_qt_gui; job_skiplists=(job_test_gui_qt); job_test_args=test/gui_qt; job_type=test_gui_qt; job_variant='Qt GUI'; analyze_set_job_skip_cache_key job_cache_extra_deps=(); job_id=test_packaging; job_name='Test (Packaging)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.9; job_reqs=(reqs/packaging.txt reqs/setup.txt); job_skip_cache_name=skip_test_packaging_py-3.9_ubuntu-latest; job_skip_cache_path=.skip_cache_test_packaging; job_skiplists=(job_test_packaging); job_type=test_packaging; job_variant=Packaging; analyze_set_job_skip_cache_key job_cache_extra_deps=('reqs/dist_*.txt' linux/appimage/deps.sh); job_id=build_linux; job_name='Build (Linux)'; job_needs=(test_linux); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/build.txt reqs/setup.txt); job_skip_cache_name=skip_build_linux_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_build_linux; job_skiplists=(job_build os_linux); job_type=build; job_variant=Linux; analyze_set_job_skip_cache_key @@ -87,14 +86,6 @@ jobs: restore-keys: 0_${{ steps.set_cache.outputs.test_python_310_skip_cache_key }} - - name: Check skip cache for Test (Python 3.11) - uses: actions/cache@v3 - with: - path: .skip_cache_test_python_311 - key: 0_check_${{ steps.set_cache.outputs.test_python_311_skip_cache_key }}_${{ github.run_id }} - restore-keys: - 0_${{ steps.set_cache.outputs.test_python_311_skip_cache_key }} - - name: Check skip cache for Test (Qt GUI) uses: actions/cache@v3 with: @@ -146,7 +137,6 @@ jobs: job_cache_extra_deps=(); job_id=test_windows; job_name='Test (Windows)'; job_needs=(); job_os=Windows; job_platform=windows-2022; job_python=3.9; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_windows_py-3.9_windows-2022; job_skip_cache_path=.skip_cache_test_windows; job_skiplists=(job_test os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant=Windows; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_python_38; job_name='Test (Python 3.8)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.8; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_38_py-3.8_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_38; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.8'; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_python_310; job_name='Test (Python 3.10)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.10; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_310_py-3.10_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_310; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.10'; analyze_set_job_skip_job - job_cache_extra_deps=(); job_id=test_python_311; job_name='Test (Python 3.11)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.11; job_reqs=(reqs/dist.txt reqs/test.txt); job_skip_cache_name=skip_test_python_311_py-3.11_ubuntu-latest; job_skip_cache_path=.skip_cache_test_python_311; job_skiplists=(job_test os_linux os_macos os_windows); job_test_args='-p no:pytest-qt --ignore=test/gui_qt'; job_type=test; job_variant='Python 3.11'; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_qt_gui; job_name='Test (Qt GUI)'; job_needs=(); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/dist.txt reqs/dist_extra_gui_qt.txt reqs/test.txt); job_skip_cache_name=skip_test_qt_gui_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_test_qt_gui; job_skiplists=(job_test_gui_qt); job_test_args=test/gui_qt; job_type=test_gui_qt; job_variant='Qt GUI'; analyze_set_job_skip_job job_cache_extra_deps=(); job_id=test_packaging; job_name='Test (Packaging)'; job_needs=(); job_os=Linux; job_platform=ubuntu-latest; job_python=3.9; job_reqs=(reqs/packaging.txt reqs/setup.txt); job_skip_cache_name=skip_test_packaging_py-3.9_ubuntu-latest; job_skip_cache_path=.skip_cache_test_packaging; job_skiplists=(job_test_packaging); job_type=test_packaging; job_variant=Packaging; analyze_set_job_skip_job job_cache_extra_deps=('reqs/dist_*.txt' linux/appimage/deps.sh); job_id=build_linux; job_name='Build (Linux)'; job_needs=(test_linux); job_os=Linux; job_platform=ubuntu-22.04; job_python=3.9; job_reqs=(reqs/build.txt reqs/setup.txt); job_skip_cache_name=skip_build_linux_py-3.9_ubuntu-22.04; job_skip_cache_path=.skip_cache_build_linux; job_skiplists=(job_build os_linux); job_type=build; job_variant=Linux; analyze_set_job_skip_job @@ -166,8 +156,6 @@ jobs: test_python_38_skip_cache_key: ${{ steps.set_cache.outputs.test_python_38_skip_cache_key }} test_python_310_skip_job: ${{ steps.set_ouputs.outputs.test_python_310_skip_job }} test_python_310_skip_cache_key: ${{ steps.set_cache.outputs.test_python_310_skip_cache_key }} - test_python_311_skip_job: ${{ steps.set_ouputs.outputs.test_python_311_skip_job }} - test_python_311_skip_cache_key: ${{ steps.set_cache.outputs.test_python_311_skip_cache_key }} test_qt_gui_skip_job: ${{ steps.set_ouputs.outputs.test_qt_gui_skip_job }} test_qt_gui_skip_cache_key: ${{ steps.set_cache.outputs.test_qt_gui_skip_cache_key }} test_packaging_skip_job: ${{ steps.set_ouputs.outputs.test_packaging_skip_job }} @@ -465,62 +453,6 @@ jobs: run: list_cache # }}} - # Job: Test (Python 3.11) {{{ - test_python_311: - - name: Test (Python 3.11) - runs-on: ubuntu-latest - needs: [analyze, ] - if: >- - !cancelled() - && needs.analyze.outputs.test_python_311_skip_job == 'no' - - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - - name: Set cache name - id: set_cache - run: setup_cache_name '3.11' 'ubuntu-latest' - - - name: Setup cache - uses: actions/cache@v3 - with: - path: .cache - key: 0_${{ steps.set_cache.outputs.cache_name }}_${{ hashFiles('reqs/constraints.txt', 'reqs/dist.txt', 'reqs/test.txt') }} - - - name: Setup pip options - run: setup_pip_options - - - name: Setup Python environment - run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt - # Test {{{ - - - name: Run tests - run: run_tests -p no:pytest-qt --ignore=test/gui_qt - - - # }}} - - - name: Update skip cache 1 - uses: actions/cache@v3 - with: - path: .skip_cache_test_python_311 - key: 0_${{ needs.analyze.outputs.test_python_311_skip_cache_key }} - - - name: Update skip cache 2 - run: run_eval "echo 'https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID' >'.skip_cache_test_python_311'" - - - name: List cache contents - run: list_cache - # }}} - # Job: Test (Qt GUI) {{{ test_qt_gui: @@ -904,7 +836,7 @@ jobs: name: Release environment: release runs-on: ubuntu-latest - needs: [analyze, test_linux, test_macos, test_windows, test_python_38, test_python_310, test_python_311, test_qt_gui, test_packaging, build_linux, build_macos, build_windows] + needs: [analyze, test_linux, test_macos, test_windows, test_python_38, test_python_310, test_qt_gui, test_packaging, build_linux, build_macos, build_windows] if: >- !cancelled() && needs.test_linux.result == 'success' @@ -912,7 +844,6 @@ jobs: && needs.test_windows.result == 'success' && needs.test_python_38.result == 'success' && needs.test_python_310.result == 'success' - && needs.test_python_311.result == 'success' && needs.test_qt_gui.result == 'success' && needs.test_packaging.result == 'success' && needs.build_linux.result == 'success' diff --git a/.github/workflows/ci/workflow_context.yml b/.github/workflows/ci/workflow_context.yml index 9818d4832..c80d52e3d 100644 --- a/.github/workflows/ci/workflow_context.yml +++ b/.github/workflows/ci/workflow_context.yml @@ -57,9 +57,6 @@ jobs: - <<: *python_test variant: Python 3.10 python: "3.10" - - <<: *python_test - variant: Python 3.11 - python: "3.11" # Qt GUI tests. - <<: *test diff --git a/setup.cfg b/setup.cfg index b1dd97ada..0ed0a2eee 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,7 +8,6 @@ classifiers = Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) Development Status :: 5 - Production/Stable Environment :: X11 Applications