Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test on modern versions of CPython and PyPy and macOS #362

Merged
merged 6 commits into from
Dec 15, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,17 @@ jobs:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
include:
- os: "ubuntu-20.04"
python: "3.6"
- os: "ubuntu-20.04"
python: "pypy-3.6"
- os: "ubuntu-latest"
cclauss marked this conversation as resolved.
Show resolved Hide resolved
python: "pypy-3.10"
- os: "macos-latest"
python: 3.x
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's use explicit ubuntu-22.04 and macos-12 here please, the more pinned, the better for CI stability. Can we pin 3.x any more? Is this intended to be 3.13 pre-release?

Copy link
Contributor Author

@cclauss cclauss Nov 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My Mac is running 14.1.1. Why do we want to pin to an OS that is two major versions behind the current macOS?

Python 3.x pins to the latest released version of CPython which will remain 3.12 until October 2024.

I like it when CI highlights when OS upgrades break the tests rather than waiting for users to complain.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @cclauss, thanks for the adjustments!

My Mac is running 14.1.1. Why do we want to pin to an OS that is two major versions behind the current macOS?

Because macos-latest is macos-12 is of today, see https://github.com/actions/runner-images#about . Their macos-13 is in beta and they have no 14 as of today.

I like it when CI highlights when OS upgrades break the tests rather than waiting for users to complain.

That is a great idea in its core but broken CI means that e.g. all new pull request starting before a fix will have no chance on a green CI, and I have seen broken CI that no one fixes for weeks in too many places to ever want to go into the red zone voluntarily. The approach with testing against the latest moving things only really works well when the errors are ignored but notified about. Latest time I checked, GitHub Actions doesn't allow operation like that in practice, happy to be proven wrong about that for today. The best approach I know is pinning evereything hard and let a machine produce auto-update pull requests. What Dependabot and Renovate cannot cover, you can cover yourself e.g. using https://github.com/peter-evans/create-pull-request . That was the long version, I hope that was in your interest.

Python 3.x pins to the latest released version of CPython which will remain 3.12 until October 2024.

Let's make it 3.12 then for CI stability, please.

cclauss marked this conversation as resolved.
Show resolved Hide resolved

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ repos:
- id: black
args: ["--target-version", "py36"]
- repo: https://github.com/PyCQA/flake8
rev: 3.9.2
rev: 6.1.0
hooks:
- id: flake8
- repo: https://github.com/pycqa/isort
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

[tox]
minversion = 1.9
envlist = lint, py{36,37,38,39,310,py3}
envlist = lint, py{36,37,38,39,310,311,312,py3}
isolated_build = true
skip_missing_interpreters = true

Expand Down