summaryrefslogtreecommitdiff
path: root/dev-python/pip/files/pip-26.2.1-unbundle.patch
blob: daf4b91332e993c9f8bff23fe75994db42916605 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
diff --git a/src/pip/_internal/cli/main_parser.py b/src/pip/_internal/cli/main_parser.py
index 903c89112..558a0d5a0 100644
--- a/src/pip/_internal/cli/main_parser.py
+++ b/src/pip/_internal/cli/main_parser.py
@@ -81,6 +81,11 @@ def parse_command(args: list[str]) -> tuple[str, list[str]]:
 
     # --python
     if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ:
+        raise CommandError(
+            "--python option is not supported on Gentoo, as it requires bundled "
+            "dependencies that have been removed to improve security"
+        )
+
         # Re-invoke pip using the specified Python interpreter
         interpreter = identify_python_interpreter(general_options.python)
         if interpreter is None:
diff --git a/src/pip/_internal/commands/debug.py b/src/pip/_internal/commands/debug.py
index 4e8178d0a..b42a12064 100644
--- a/src/pip/_internal/commands/debug.py
+++ b/src/pip/_internal/commands/debug.py
@@ -7,7 +7,6 @@ from optparse import Values
 from types import ModuleType
 from typing import Any
 
-import pip._vendor
 from pip._vendor.certifi import where
 from pip._vendor.packaging.version import parse as parse_version
 
@@ -186,9 +185,7 @@ class DebugCommand(Command):
         show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE"))
         show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE"))
         show_value("pip._vendor.certifi.where()", where())
-        show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED)
-
-        show_vendor_versions()
+        show_value("pip._vendor.DEBUNDLED", True)
 
         show_tags(options)
 
diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py
index e1482b9cd..cc5758c1f 100644
--- a/src/pip/_internal/commands/install.py
+++ b/src/pip/_internal/commands/install.py
@@ -546,13 +546,6 @@ class InstallCommand(RequirementCommand):
             if options.target_dir or options.prefix_path:
                 warn_script_location = False
 
-            # Warn on late imports so we don't silently pick up a module
-            # from a distribution pip is about to install.
-            try:
-                _eagerly_import_modules()
-            finally:
-                _prevent_further_imports()
-
             installed = install_given_reqs(
                 to_install,
                 root=options.root_path,
diff --git a/tests/conftest.py b/tests/conftest.py
index c1a3d60ce..0b2b5fd98 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -532,9 +532,6 @@ def virtualenv_template(
     tmpdir_factory: pytest.TempPathFactory,
     pip_src: Path,
     pip_editable_parts: tuple[Path, ...],
-    setuptools_install: Path,
-    coverage_install: Path,
-    socket_install: Path,
 ) -> VirtualEnvironment:
     venv_type: VirtualEnvironmentType
     if request.config.getoption("--use-venv"):
@@ -546,13 +543,6 @@ def virtualenv_template(
     tmpdir = tmpdir_factory.mktemp("virtualenv")
     venv = VirtualEnvironment(tmpdir.joinpath("venv_orig"), venv_type=venv_type)
 
-    # Install setuptools, pytest-subket, and pip.
-    install_pth_link(venv, "setuptools", setuptools_install)
-    install_pth_link(venv, "pytest_subket", socket_install)
-    # Also copy pytest-subket's .pth file so it can intercept socket calls.
-    with open(venv.site / "pytest_socket.pth", "w") as f:
-        f.write(socket_install.joinpath("pytest_socket.pth").read_text())
-
     pth, dist_info = pip_editable_parts
 
     shutil.copy(pth, venv.site)
@@ -564,14 +554,6 @@ def virtualenv_template(
     # detects changed files.
     venv.site.joinpath("easy-install.pth").touch()
 
-    if request.config.getoption("--cov"):
-        # Install coverage and pth file for executing it in any spawned processes
-        # in this virtual environment.
-        install_pth_link(venv, "coverage", coverage_install)
-        # zz prefix ensures the file is after easy-install.pth.
-        with open(venv.site / "zz-coverage-helper.pth", "a") as f:
-            f.write("import coverage; coverage.process_startup()")
-
     # Drop (non-relocatable) launchers.
     for exe in os.listdir(venv.bin):
         if not exe.startswith(("python", "libpy")):  # Don't remove libpypy-c.so...
diff --git a/tests/functional/test_check.py b/tests/functional/test_check.py
index acf99bc13..5425002e7 100644
--- a/tests/functional/test_check.py
+++ b/tests/functional/test_check.py
@@ -10,10 +10,8 @@ from tests.lib import (
 def matches_expected_lines(string: str, expected_lines: Collection[str]) -> bool:
     # Ignore empty lines
     output_lines = list(filter(None, string.splitlines()))
-    # We'll match the last n lines, given n lines to match.
-    last_few_output_lines = output_lines[-len(expected_lines) :]
     # And order does not matter
-    return set(last_few_output_lines) == set(expected_lines)
+    return set(expected_lines).issubset(set(output_lines))
 
 
 def test_basic_check_clean(script: PipTestEnvironment) -> None:
diff --git a/tests/functional/test_freeze.py b/tests/functional/test_freeze.py
index 92e55aca6..e6d5f6d51 100644
--- a/tests/functional/test_freeze.py
+++ b/tests/functional/test_freeze.py
@@ -75,8 +75,8 @@ def test_basic_freeze(script: PipTestEnvironment) -> None:
     )
     result = script.pip("freeze", expect_stderr=True)
     expected = textwrap.dedent("""\
-        ...simple==2.0
-        simple2==3.0...
+        ...simple==2.0...
+        ...simple2==3.0...
         <BLANKLINE>""")
     _check_output(result.stdout, expected)
 
@@ -881,7 +881,7 @@ def test_freeze_skip_work_dir_pkg(script: PipTestEnvironment) -> None:
 
     # Freeze should not include package simple when run from package directory
     result = script.pip("freeze", cwd=pkg_path)
-    assert "simple" not in result.stdout
+    assert "\nsimple==" not in result.stdout
 
 
 def test_freeze_include_work_dir_pkg(script: PipTestEnvironment) -> None:
diff --git a/tests/functional/test_install_check.py b/tests/functional/test_install_check.py
index cb8312b53..174bb8f66 100644
--- a/tests/functional/test_install_check.py
+++ b/tests/functional/test_install_check.py
@@ -61,6 +61,7 @@ def test_check_install_canonicalization(script: PipTestEnvironment) -> None:
     )
     assert "requires" not in result.stderr
     assert result.returncode == 0
+    return
 
     # Double check that all errors are resolved in the end
     result = script.pip("check")
diff --git a/tests/functional/test_list.py b/tests/functional/test_list.py
index 1acc28254..c10dd70ed 100644
--- a/tests/functional/test_list.py
+++ b/tests/functional/test_list.py
@@ -1,5 +1,6 @@
 import json
 import os
+import re
 from pathlib import Path
 
 import pytest
@@ -43,8 +44,8 @@ def test_basic_list(simple_script: PipTestEnvironment) -> None:
 
     """
     result = simple_script.pip("list")
-    assert "simple     1.0" in result.stdout, str(result)
-    assert "simple2    3.0" in result.stdout, str(result)
+    assert re.search(r"simple\s+1\.0", result.stdout), str(result)
+    assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
 
 
 def test_verbose_flag(simple_script: PipTestEnvironment) -> None:
@@ -56,8 +57,8 @@ def test_verbose_flag(simple_script: PipTestEnvironment) -> None:
     assert "Version" in result.stdout, str(result)
     assert "Location" in result.stdout, str(result)
     assert "Installer" in result.stdout, str(result)
-    assert "simple     1.0" in result.stdout, str(result)
-    assert "simple2    3.0" in result.stdout, str(result)
+    assert re.search(r"simple\s+1\.0", result.stdout), str(result)
+    assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
 
 
 def test_columns_flag(simple_script: PipTestEnvironment) -> None:
@@ -68,8 +69,8 @@ def test_columns_flag(simple_script: PipTestEnvironment) -> None:
     assert "Package" in result.stdout, str(result)
     assert "Version" in result.stdout, str(result)
     assert "simple (1.0)" not in result.stdout, str(result)
-    assert "simple     1.0" in result.stdout, str(result)
-    assert "simple2    3.0" in result.stdout, str(result)
+    assert re.search(r"simple\s+1\.0", result.stdout), str(result)
+    assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
 
 
 def test_format_priority(simple_script: PipTestEnvironment) -> None:
@@ -81,16 +82,16 @@ def test_format_priority(simple_script: PipTestEnvironment) -> None:
     )
     assert "simple==1.0" in result.stdout, str(result)
     assert "simple2==3.0" in result.stdout, str(result)
-    assert "simple     1.0" not in result.stdout, str(result)
-    assert "simple2    3.0" not in result.stdout, str(result)
+    assert not re.search(r"simple\s+1\.0", result.stdout), str(result)
+    assert not re.search(r"simple2\s+3\.0", result.stdout), str(result)
 
     result = simple_script.pip("list", "--format=freeze", "--format=columns")
     assert "Package" in result.stdout, str(result)
     assert "Version" in result.stdout, str(result)
     assert "simple==1.0" not in result.stdout, str(result)
     assert "simple2==3.0" not in result.stdout, str(result)
-    assert "simple     1.0" in result.stdout, str(result)
-    assert "simple2    3.0" in result.stdout, str(result)
+    assert re.search(r"simple\s+1\.0", result.stdout), str(result)
+    assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
 
 
 def test_local_flag(simple_script: PipTestEnvironment) -> None:
@@ -126,8 +127,8 @@ def test_multiple_exclude_and_normalization(
     assert "Normalizable_Name" in result.stdout
     assert "pip" in result.stdout
     result = script.pip("list", "--exclude", "normalizablE-namE", "--exclude", "pIp")
-    assert "Normalizable_Name" not in result.stdout
-    assert "pip" not in result.stdout
+    assert "Normalizable_Name " not in result.stdout
+    assert "pip " not in result.stdout
 
 
 @pytest.mark.usefixtures("enable_user_site")
diff --git a/tests/lib/venv.py b/tests/lib/venv.py
index a5d8704b2..81438f12e 100644
--- a/tests/lib/venv.py
+++ b/tests/lib/venv.py
@@ -9,6 +9,7 @@ import venv as _venv
 from pathlib import Path
 from typing import Literal
 
+import pytest
 import virtualenv as _virtualenv
 
 VirtualEnvironmentType = Literal["virtualenv", "venv"]
@@ -35,7 +36,7 @@ class VirtualEnvironment:
             self._venv_type = venv_type
         else:
             self._venv_type = "virtualenv"
-        self._user_site_packages = False
+        self._user_site_packages = True
         self._template = template
         self._sitecustomize: str | None = None
         self._update_paths()
@@ -155,6 +156,8 @@ class VirtualEnvironment:
 
     @user_site_packages.setter
     def user_site_packages(self, value: bool) -> None:
+        if not value:
+            pytest.skip("Gentoo: skipping due to lack of system site-packages")
         self._user_site_packages = value
         self._rewrite_pyvenv_cfg(
             {"include-system-site-packages": str(bool(value)).lower()}