Skip to content

Commit 4fe68d7

Browse files
authored
Merge pull request #13506 from ichard26/3.14
Declare Python 3.14 support
2 parents 4117dc7 + 775a86f commit 4fe68d7

File tree

8 files changed

+38
-10
lines changed

8 files changed

+38
-10
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ jobs:
122122
- "3.11"
123123
- "3.12"
124124
- "3.13"
125+
- "3.14"
125126

126127
steps:
127128
- uses: actions/checkout@v4
@@ -181,6 +182,7 @@ jobs:
181182
# - "3.11"
182183
# - "3.12"
183184
- "3.13"
185+
- "3.14"
184186
group:
185187
- { number: 1, pytest-filter: "not test_install" }
186188
- { number: 2, pytest-filter: "test_install" }

docs/html/development/ci.rst

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pip support a variety of Python interpreters:
2323
- CPython 3.11
2424
- CPython 3.12
2525
- CPython 3.13
26+
- CPython 3.14
2627
- Latest PyPy3
2728

2829
on different operating systems:
@@ -37,7 +38,7 @@ and on different architectures:
3738
- x86
3839
- arm64 (macOS only)
3940

40-
so 49 hypothetical interpreters.
41+
so 56 hypothetical interpreters.
4142

4243

4344
Checks
@@ -100,6 +101,8 @@ Actual testing
100101
| | +-------+---------------+-----------------+
101102
| | | CP3.13| | |
102103
| | +-------+---------------+-----------------+
104+
| | | CP3.14| | |
105+
| | +-------+---------------+-----------------+
103106
| | | PyPy3 | | |
104107
| Windows +----------+-------+---------------+-----------------+
105108
| | x64 | CP3.9 | GitHub | GitHub |
@@ -112,6 +115,8 @@ Actual testing
112115
| | +-------+---------------+-----------------+
113116
| | | CP3.13| GitHub | GitHub |
114117
| | +-------+---------------+-----------------+
118+
| | | CP3.14| GitHub | GitHub |
119+
| | +-------+---------------+-----------------+
115120
| | | PyPy3 | | |
116121
+-----------+----------+-------+---------------+-----------------+
117122
| | x86 | CP3.9 | | |
@@ -124,6 +129,8 @@ Actual testing
124129
| | +-------+---------------+-----------------+
125130
| | | CP3.13| | |
126131
| | +-------+---------------+-----------------+
132+
| | | CP3.14| | |
133+
| | +-------+---------------+-----------------+
127134
| | | PyPy3 | | |
128135
| Linux +----------+-------+---------------+-----------------+
129136
| | x64 | CP3.9 | GitHub | GitHub |
@@ -136,6 +143,8 @@ Actual testing
136143
| | +-------+---------------+-----------------+
137144
| | | CP3.13| GitHub | GitHub |
138145
| | +-------+---------------+-----------------+
146+
| | | CP3.14| GitHub | GitHub |
147+
| | +-------+---------------+-----------------+
139148
| | | PyPy3 | | |
140149
+-----------+----------+-------+---------------+-----------------+
141150
| | arm64 | CP3.9 | GitHub | GitHub |
@@ -148,6 +157,8 @@ Actual testing
148157
| | +-------+---------------+-----------------+
149158
| | | CP3.13| GitHub | GitHub |
150159
| | +-------+---------------+-----------------+
160+
| | | CP3.14| GitHub | GitHub |
161+
| | +-------+---------------+-----------------+
151162
| | | PyPy3 | | |
152163
| macOS +----------+-------+---------------+-----------------+
153164
| | x64 | CP3.9 | GitHub | GitHub |
@@ -160,5 +171,7 @@ Actual testing
160171
| | +-------+---------------+-----------------+
161172
| | | CP3.13| GitHub | GitHub |
162173
| | +-------+---------------+-----------------+
174+
| | | CP3.14| GitHub | GitHub |
175+
| | +-------+---------------+-----------------+
163176
| | | PyPy3 | | |
164177
+-----------+----------+-------+---------------+-----------------+

news/13506.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Declare support for Python 3.14

noxfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def should_update_common_wheels() -> bool:
6767
# -----------------------------------------------------------------------------
6868
# Development Commands
6969
# -----------------------------------------------------------------------------
70-
@nox.session(python=["3.9", "3.10", "3.11", "3.12", "3.13", "pypy3"])
70+
@nox.session(python=["3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "pypy3"])
7171
def test(session: nox.Session) -> None:
7272
# Get the common wheels.
7373
if should_update_common_wheels():

pyproject.toml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ classifiers = [
2323
"Programming Language :: Python :: 3.11",
2424
"Programming Language :: Python :: 3.12",
2525
"Programming Language :: Python :: 3.13",
26+
"Programming Language :: Python :: 3.14",
2627
"Programming Language :: Python :: Implementation :: CPython",
2728
"Programming Language :: Python :: Implementation :: PyPy",
2829
]
@@ -299,7 +300,15 @@ follow_imports = "skip"
299300
#
300301

301302
[tool.pytest.ini_options]
302-
addopts = "--ignore src/pip/_vendor --ignore tests/tests_cache -r aR --color=yes --disable-socket --allow-hosts=localhost"
303+
addopts = [
304+
"-r=aR",
305+
"--color=yes",
306+
"--ignore=src/pip/_vendor",
307+
"--ignore=tests/tests_cache",
308+
"--disable-socket",
309+
"--allow-unix-socket",
310+
"--allow-hosts=localhost",
311+
]
303312
xfail_strict = true
304313
markers = [
305314
"network: tests that need network",

tests/functional/test_install.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1880,7 +1880,7 @@ def test_install_editable_with_wrong_egg_name(
18801880
result = script.pip(
18811881
"install",
18821882
"--editable",
1883-
f"file://{pkga_path}#egg=pkgb",
1883+
path_to_url(str(pkga_path)) + "#egg=pkgb",
18841884
expect_error=(resolver_variant == "resolvelib"),
18851885
)
18861886
assert (

tests/functional/test_proxy.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import ssl
2+
import sys
23
from pathlib import Path
34
from typing import Any
45

@@ -92,6 +93,11 @@ def test_proxy_does_not_override_netrc(
9293
script.assert_installed(simple="3.0")
9394

9495

96+
@pytest.mark.xfail(
97+
sys.version_info >= (3, 14),
98+
reason="Access logs are blank intermittently on 3.14",
99+
strict=False,
100+
)
95101
@pytest.mark.network
96102
def test_build_deps_use_proxy_from_cli(
97103
script: PipTestEnvironment, capfd: pytest.CaptureFixture[str], data: TestData

tests/unit/test_req.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
handle_requirement_line,
5252
)
5353
from pip._internal.resolution.legacy.resolver import Resolver
54+
from pip._internal.utils.urls import path_to_url
5455

5556
from tests.lib import TestData, make_test_finder, requirements_file, wheel
5657

@@ -224,16 +225,12 @@ def test_unsupported_hashes(self, data: TestData) -> None:
224225
dir_path = data.packages.joinpath("FSPkg")
225226
reqset.add_unnamed_requirement(
226227
get_processed_req_from_line(
227-
f"file://{dir_path}",
228+
path_to_url(str(dir_path)),
228229
lineno=2,
229230
)
230231
)
231232
finder = make_test_finder(find_links=[data.find_links])
232233

233-
sep = os.path.sep
234-
if sep == "\\":
235-
sep = "\\\\" # This needs to be escaped for the regex
236-
237234
with self._basic_resolver(finder, require_hashes=True) as resolver:
238235
with pytest.raises(
239236
HashErrors,
@@ -244,7 +241,7 @@ def test_unsupported_hashes(self, data: TestData) -> None:
244241
r"file \(line 1\)\)\n"
245242
r"Can't verify hashes for these file:// requirements because "
246243
r"they point to directories:\n"
247-
rf" file://.*{sep}data{sep}packages{sep}FSPkg "
244+
r" file://.*/data/packages/FSPkg "
248245
r"\(from -r file \(line 2\)\)"
249246
),
250247
):

0 commit comments

Comments
 (0)