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

Drop python 3.8 support #12875

Open
wants to merge 15 commits into
base: main
Choose a base branch
from

Conversation

Pierre-Sassoulas
Copy link
Member

@Pierre-Sassoulas Pierre-Sassoulas commented Oct 10, 2024

Closes #12874

Copy link
Member

@RonnyPfannschmidt RonnyPfannschmidt left a comment

Choose a reason for hiding this comment

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

Looks lovely at first glance

.github/workflows/test.yml Show resolved Hide resolved
@Pierre-Sassoulas Pierre-Sassoulas marked this pull request as draft October 10, 2024 16:31
.github/workflows/test.yml Outdated Show resolved Hide resolved
.github/workflows/test.yml Outdated Show resolved Hide resolved
Comment on lines 966 to 971
if upframe.f_code.co_name == "_makepath":
# Only raise with expected calls, but not via e.g. inspect for
# py38-windows.
# py38-windows. (?)
raised += 1
raise OSError(2, "custom_oserror")
return orig_path_cwd()
Copy link
Member Author

Choose a reason for hiding this comment

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

Not sure what to do here, advise welcome

Copy link
Member

@webknjaz webknjaz Oct 10, 2024

Choose a reason for hiding this comment

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

#6529 does not offer any explanation, however #6463 (comment) links it and implies that there might've been flakiness in the Codecov uploader. But this was like almost 5 years ago, and Codecov has since rewritten their uploader 3 times. We've additionally made it less flaky by hardcoding a plain-text token a few months ago.

Looking into the coverage reports, something weird is happening. The if-line is marked as covered partially, both in this PR and on main:

However, the return line is reported as 100% covered in the PR (https://app.codecov.io/gh/pytest-dev/pytest/pull/12875/blob/testing/code/test_excinfo.py#L971) while on main it's marked as not covered (https://app.codecov.io/gh/pytest-dev/pytest/blob/main/testing%2Fcode%2Ftest_excinfo.py#L966).

AFAIU, the raise instruction can only be reached on if True and the return statement would be reachable on if False. That should cover both branches of the if-block. So I don't understand why the conditional is marked with partial coverage.

_makepath() is also fully covered in both cases:

P.S. While looking into Codecov, I realized that it does not show any coverage for src/pytest/ — it's just not there. It looks like we also have Coveragepy misconfigured or something. Something to investigate.

Copy link
Member Author

Choose a reason for hiding this comment

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

I investigated a little, it was introduced in 79ae86c so that this function did not raise accidentally when inspecting on some env. So this is still useful as it's not only applicable for windows py38.

tox.ini Outdated Show resolved Hide resolved
tox.ini Show resolved Hide resolved
.github/workflows/test.yml Outdated Show resolved Hide resolved
.github/workflows/test.yml Outdated Show resolved Hide resolved
@psf-chronographer psf-chronographer bot added the bot:chronographer:provided (automation) changelog entry is part of PR label Oct 10, 2024
@Pierre-Sassoulas
Copy link
Member Author

Pierre-Sassoulas commented Oct 10, 2024

Changed the configuration of the repo so build (ubuntu-py38) and build (windows-py38) are not required anymore but 3.13 is. Two readthedoc warnings appeared related to sphinx_issues, not sure how to fix:

WARNING: while setting up extension sphinx_issues: role 'cve' is already registered, it will be overridden [app.add_role]
WARNING: while setting up extension sphinx_issues: role 'cwe' is already registered, it will be overridden [app.add_role]

@Pierre-Sassoulas Pierre-Sassoulas marked this pull request as ready for review October 10, 2024 21:43
@Pierre-Sassoulas Pierre-Sassoulas changed the title [Work in progress] Drop python 3.8 support Drop python 3.8 support Oct 10, 2024
@Pierre-Sassoulas Pierre-Sassoulas force-pushed the drop-python3.8 branch 6 times, most recently from c792deb to 3dd3871 Compare November 11, 2024 08:53
@Pierre-Sassoulas Pierre-Sassoulas marked this pull request as ready for review November 11, 2024 09:31
@Pierre-Sassoulas
Copy link
Member Author

This is ready for review. I have no idea why I need fe1f3f7 (or why it fixes the issue) but otherwise we get a:

test
Error when evaluating 'runs-on' for job 'build'. .github/workflows/test.yml (Line: 48, Col: 14): Unexpected value ''

(See the commit before the last one's pipeline : https://github.com/pytest-dev/pytest/actions/runs/11775505463).

Copy link
Member

@nicoddemus nicoddemus left a comment

Choose a reason for hiding this comment

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

Strange, all jobs are installing Python 3.9 and using that. For example, this is the windows-py312 job:

https://github.com/pytest-dev/pytest/actions/runs/11775818422/job/32797006395?pr=12875

It is clearly installing Python 3.9 ("Set up Python 3.9") and we can see that also in the test suite:

============================= test session starts ==============================
platform linux -- Python 3.9.20, pytest-8.4.0.dev153+gbedb1aecd, pluggy-1.5.0

From what I can tell all jobs are like that.

"windows-py39",
names: [
"windows-py39-unittestextras",
"windows-py39-pluggy",
Copy link
Member

@nicoddemus nicoddemus Nov 12, 2024

Choose a reason for hiding this comment

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

Some problems:

  • windows-py39 is used in the include section but is missing in names
  • ubuntu-py39 is declared in names but not used in include

From my understanding we should use name here, as this is the variable we want to match in include -- perhaps the problems happening before were due because of the mismatches above.

Copy link
Member Author

Choose a reason for hiding this comment

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

Thank you for looking into it, nice catch !

changelog/12874.breaking.rst Outdated Show resolved Hide resolved
src/_pytest/config/argparsing.py Show resolved Hide resolved
@Pierre-Sassoulas
Copy link
Member Author

Fixing your other comment and reverting the bad fix, worked:

============================= test session starts =============================
platform win32 -- Python 3.10.11, pytest-8.4.0.dev159+gbd1faf745, pluggy-1.5.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bot:chronographer:provided (automation) changelog entry is part of PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Drop Python 3.8 support
6 participants