Skip to content

Commit 2579787

Browse files
ci(riot): schedule Python 3.15 jobs for a starter set
Add (3, 15) to SUPPORTED_PYTHON_VERSIONS and opt in six venvs. Default max stays 3.14 so uncapped suites do not mix 3.15 into 3.9-3.14 jobs. requires-python is unchanged; 3.15 installs fail until #19904.
1 parent d76a38e commit 2579787

7 files changed

Lines changed: 138 additions & 7 deletions

File tree

.riot/requirements/10db676.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.15
3+
# by the following command:
4+
#
5+
# pip-compile --allow-unsafe --no-annotate .riot/requirements/10db676.in
6+
#
7+
attrs==26.1.0
8+
coverage[toml]==7.15.4
9+
hypothesis==6.45.0
10+
iniconfig==2.3.0
11+
mock==5.2.0
12+
opentracing==2.4.0
13+
packaging==26.3
14+
pluggy==1.6.0
15+
pygments==2.21.0
16+
pytest==9.1.1
17+
pytest-cov==7.1.0
18+
pytest-mock==3.15.1
19+
pytest-randomly==4.1.0
20+
sortedcontainers==2.4.0

.riot/requirements/15d6332.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.15
3+
# by the following command:
4+
#
5+
# pip-compile --allow-unsafe --no-annotate .riot/requirements/15d6332.in
6+
#
7+
attrs==26.1.0
8+
coverage[toml]==7.15.4
9+
hypothesis==6.45.0
10+
iniconfig==2.3.0
11+
mock==5.2.0
12+
opentracing==2.4.0
13+
packaging==26.3
14+
pluggy==1.6.0
15+
pygments==2.21.0
16+
pytest==9.1.1
17+
pytest-cov==7.1.0
18+
pytest-mock==3.15.1
19+
pytest-randomly==4.1.0
20+
sortedcontainers==2.4.0

.riot/requirements/1abe7fb.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.15
3+
# by the following command:
4+
#
5+
# pip-compile --allow-unsafe --no-annotate .riot/requirements/1abe7fb.in
6+
#
7+
attrs==26.1.0
8+
coverage[toml]==7.15.4
9+
hypothesis==6.45.0
10+
iniconfig==2.3.0
11+
mock==5.2.0
12+
opentracing==2.4.0
13+
packaging==26.3
14+
pluggy==1.6.0
15+
pygments==2.21.0
16+
pytest==9.1.1
17+
pytest-cov==7.1.0
18+
pytest-mock==3.15.1
19+
pytest-randomly==4.1.0
20+
sortedcontainers==2.4.0

.riot/requirements/b388a93.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.15
3+
# by the following command:
4+
#
5+
# pip-compile --allow-unsafe --no-annotate .riot/requirements/b388a93.in
6+
#
7+
attrs==26.1.0
8+
coverage[toml]==7.15.4
9+
hypothesis==6.45.0
10+
iniconfig==2.3.0
11+
mock==5.2.0
12+
opentracing==2.4.0
13+
packaging==26.3
14+
pluggy==1.6.0
15+
pygments==2.21.0
16+
pytest==9.1.1
17+
pytest-cov==7.1.0
18+
pytest-mock==3.15.1
19+
sortedcontainers==2.4.0

.riot/requirements/c2ce19f.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.15
3+
# by the following command:
4+
#
5+
# pip-compile --allow-unsafe --no-annotate .riot/requirements/c2ce19f.in
6+
#
7+
attrs==26.1.0
8+
coverage[toml]==7.15.4
9+
hypothesis==6.45.0
10+
iniconfig==2.3.0
11+
mock==5.2.0
12+
opentracing==2.4.0
13+
packaging==26.3
14+
pluggy==1.6.0
15+
pygments==2.21.0
16+
pytest==9.1.1
17+
pytest-cov==7.1.0
18+
pytest-mock==3.15.1
19+
pytest-randomly==4.1.0
20+
sortedcontainers==2.4.0
21+
22+
# The following packages are considered to be unsafe in a requirements file:
23+
setuptools==84.0.0

.riot/requirements/ee54ec5.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.15
3+
# by the following command:
4+
#
5+
# pip-compile --allow-unsafe --no-annotate .riot/requirements/ee54ec5.in
6+
#
7+
attrs==26.1.0
8+
coverage[toml]==7.15.4
9+
hypothesis==6.45.0
10+
iniconfig==2.3.0
11+
mock==5.2.0
12+
opentracing==2.4.0
13+
packaging==26.3
14+
pluggy==1.6.0
15+
pygments==2.21.0
16+
pytest==9.1.1
17+
pytest-cov==7.1.0
18+
pytest-mock==3.15.1
19+
sortedcontainers==2.4.0

riotfile.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
(3, 12),
2424
(3, 13),
2525
(3, 14),
26+
(3, 15),
2627
]
2728

2829

@@ -41,6 +42,8 @@ def version_to_str(version: tuple[int, int]) -> str:
4142
'3.13'
4243
>>> version_to_str((3, 14))
4344
'3.14'
45+
>>> version_to_str((3, 15))
46+
'3.15'
4447
>>> version_to_str((3, ))
4548
'3'
4649
"""
@@ -62,14 +65,19 @@ def str_to_version(version: str) -> tuple[int, int]:
6265
(3, 13)
6366
>>> str_to_version("3.14")
6467
(3, 14)
68+
>>> str_to_version("3.15")
69+
(3, 15)
6570
>>> str_to_version("3")
6671
(3,)
6772
"""
6873
return tuple(int(p) for p in version.split("."))
6974

7075

7176
MIN_PYTHON_VERSION = version_to_str(min(SUPPORTED_PYTHON_VERSIONS))
72-
MAX_PYTHON_VERSION = version_to_str(max(SUPPORTED_PYTHON_VERSIONS))
77+
# 3.15 is listed so select_pys(max_version="3.15") can opt in. Default stays
78+
# 3.14: 3.15 hashes share riot jobs with 3.9-3.14 under --exitfirst, wrap()
79+
# still raises (#17849), and pip install -e . fails until #19904.
80+
MAX_PYTHON_VERSION = "3.14"
7381

7482

7583
def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYTHON_VERSION) -> list[str]:
@@ -83,6 +91,8 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT
8391
[]
8492
>>> select_pys(min_version='3.9', max_version='3.10')
8593
['3.9', '3.10']
94+
>>> select_pys(max_version='3.15')
95+
['3.9', '3.10', '3.11', '3.12', '3.13', '3.14', '3.15']
8696
"""
8797
min_version = str_to_version(min_version)
8898
max_version = str_to_version(max_version)
@@ -571,7 +581,7 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT
571581
),
572582
Venv(
573583
name="detect_global_locks",
574-
pys=select_pys(),
584+
pys=select_pys(max_version="3.15"),
575585
command="python -X importtime scripts/global-lock-detection.py",
576586
env={
577587
"DD_TRACE_PY_ENABLE_ITR_FOR_JOB": "false",
@@ -754,7 +764,7 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT
754764
Venv(
755765
name="smoke_test",
756766
command="python tests/smoke_test.py {cmdargs}",
757-
pys=select_pys(),
767+
pys=select_pys(max_version="3.15"),
758768
),
759769
Venv(
760770
name="ddtracerun",
@@ -851,7 +861,7 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT
851861
pkgs={
852862
"pytest-randomly": latest,
853863
},
854-
pys=select_pys(),
864+
pys=select_pys(max_version="3.15"),
855865
),
856866
Venv(
857867
name="logging",
@@ -2782,7 +2792,7 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT
27822792
pkgs={
27832793
"pytest-randomly": latest,
27842794
},
2785-
pys=select_pys(),
2795+
pys=select_pys(max_version="3.15"),
27862796
env={
27872797
"DD_CIVISIBILITY_ITR_ENABLED": "0",
27882798
"DD_IAST_REQUEST_SAMPLING": "100", # Override default 30% to analyze all IAST requests
@@ -3643,7 +3653,7 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT
36433653
"DD_TRACE_PY_ENABLE_ITR_TEST_SKIPPING_FOR_JOB": "true",
36443654
},
36453655
command="pytest {cmdargs} tests/sourcecode",
3646-
pys=select_pys(),
3656+
pys=select_pys(max_version="3.15"),
36473657
pkgs={
36483658
"setuptools": latest,
36493659
"pytest-randomly": latest,
@@ -3689,7 +3699,7 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT
36893699
pkgs={
36903700
"pytest-randomly": latest,
36913701
},
3692-
pys=select_pys(),
3702+
pys=select_pys(max_version="3.15"),
36933703
),
36943704
Venv(
36953705
name="integration_registry",

0 commit comments

Comments
 (0)