From 8fc7d4e0cd2b00bf4a7a01bc15d08de5df59df0c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 17:33:23 +0000 Subject: [PATCH] chore(ci): pin `greenlet` version to 3.1.0 for 3.8 [backport 2.19] (#11956) Backport 560aa89e29a5c9184d2bde44f8fcd382bee60ea0 from #11953 to 2.19. ## Context Failing tests slipped into the 2.19 branch, one of them being [this gevent test failure](https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-py/-/jobs/765798135). This was addressed in a fix PR to the main branch, and was [backported to 2.19](https://github.com/DataDog/dd-trace-py/pull/11920). However, once backporting this fix, [ci_visibility tests on python 3.8 started to fail consistently](https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-py/-/jobs/765777070). After some digging, it turns out that in the backported fix for gevent, the [greenlet dependency was bumped from 3.0.3 to 3.1.1](https://github.com/DataDog/dd-trace-py/pull/11920/files#diff-939f705fbaed2d1386345b41d7c68406808ecbc5609022a59505453df9ba4b63), which according to greenlet documentation, [3.1.0 was the last release to support 3.7 and 3.8](https://greenlet.readthedocs.io/en/latest/changes.html#id2). Looks like pip didn't catch this during the upgrade because the [minimum runtime version is still pinned to 3.7 in greenlet](https://github.com/python-greenlet/greenlet/blob/3.1.1/setup.py#L263). ## Description This PR pins greenlet to 3.1.0 for python<=3.8, and will use latest for 3.9+. The failing ci_visibility tests will pass on 3.8 now. ## Checklist - [x] PR author has checked that all the criteria below are met - The PR description includes an overview of the change - The PR description articulates the motivation for the change - The change includes tests OR the PR description describes a testing strategy - The PR description notes risks associated with the change, if any - Newly-added code is easy to change - The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) - The change includes or references documentation updates if necessary - Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [x] Reviewer has checked that all the criteria below are met - Title is accurate - All changes are related to the pull request's stated goal - Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - Testing strategy adequately addresses listed risks - Newly-added code is easy to change - Release note makes sense to a user of the library - If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) Co-authored-by: erikayasuda <153395705+erikayasuda@users.noreply.github.com> --- .riot/requirements/1d4e95e.txt | 27 ++++++++++++++++ .riot/requirements/2d19e52.txt | 32 ------------------- .../requirements/{27d0ff3.txt => 6bec1ec.txt} | 4 +-- riotfile.py | 11 +++++++ 4 files changed, 40 insertions(+), 34 deletions(-) create mode 100644 .riot/requirements/1d4e95e.txt delete mode 100644 .riot/requirements/2d19e52.txt rename .riot/requirements/{27d0ff3.txt => 6bec1ec.txt} (95%) diff --git a/.riot/requirements/1d4e95e.txt b/.riot/requirements/1d4e95e.txt new file mode 100644 index 0000000000..9d2871696a --- /dev/null +++ b/.riot/requirements/1d4e95e.txt @@ -0,0 +1,27 @@ +# +# This file is autogenerated by pip-compile with Python 3.13 +# by the following command: +# +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1d4e95e.in +# +attrs==24.3.0 +coverage[toml]==7.6.10 +gevent==24.11.1 +greenlet==3.1.1 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +msgpack==1.1.0 +opentracing==2.4.0 +packaging==24.2 +pluggy==1.5.0 +pytest==8.3.4 +pytest-cov==6.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.16.0 +sortedcontainers==2.4.0 +zope-event==5.0 +zope-interface==7.2 + +# The following packages are considered to be unsafe in a requirements file: +setuptools==75.8.0 diff --git a/.riot/requirements/2d19e52.txt b/.riot/requirements/2d19e52.txt deleted file mode 100644 index 8de360e731..0000000000 --- a/.riot/requirements/2d19e52.txt +++ /dev/null @@ -1,32 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.7 -# by the following command: -# -# pip-compile --allow-unsafe --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/2d19e52.in -# -attrs==24.2.0 -coverage[toml]==7.2.7 -exceptiongroup==1.2.2 -gevent==22.10.2 -greenlet==3.1.1 -hypothesis==6.45.0 -importlib-metadata==6.7.0 -iniconfig==2.0.0 -mock==5.1.0 -msgpack==1.0.5 -opentracing==2.4.0 -packaging==24.0 -pluggy==1.2.0 -pytest==7.4.4 -pytest-cov==4.1.0 -pytest-mock==3.11.1 -pytest-randomly==3.12.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -typing-extensions==4.7.1 -zipp==3.15.0 -zope-event==5.0 -zope-interface==6.4.post2 - -# The following packages are considered to be unsafe in a requirements file: -setuptools==68.0.0 diff --git a/.riot/requirements/27d0ff3.txt b/.riot/requirements/6bec1ec.txt similarity index 95% rename from .riot/requirements/27d0ff3.txt rename to .riot/requirements/6bec1ec.txt index c03419edbd..3e128a77c7 100644 --- a/.riot/requirements/27d0ff3.txt +++ b/.riot/requirements/6bec1ec.txt @@ -2,13 +2,13 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --allow-unsafe --no-annotate .riot/requirements/27d0ff3.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/6bec1ec.in # attrs==24.3.0 coverage[toml]==7.6.1 exceptiongroup==1.2.2 gevent==24.2.1 -greenlet==3.1.1 +greenlet==3.1.0 hypothesis==6.45.0 importlib-metadata==8.5.0 iniconfig==2.0.0 diff --git a/riotfile.py b/riotfile.py index 54ad7bcdbf..5d44c657fb 100644 --- a/riotfile.py +++ b/riotfile.py @@ -2871,6 +2871,17 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT env={ "DD_AGENT_PORT": "9126", }, + venvs=[ + # Python 3.8 + Venv( + pys=["3.8"], + pkgs={"greenlet": "==3.1.0"}, + ), + # Python 3.9+ + Venv( + pys=select_pys(min_version="3.9"), + ), + ], ), Venv( name="subprocess",