]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-37449: ensurepip uses importlib.resources.files() traversable APIs (#22659)
authorwim glenn <wim.glenn@gmail.com>
Mon, 7 Jun 2021 02:14:47 +0000 (21:14 -0500)
committerGitHub <noreply@github.com>
Mon, 7 Jun 2021 02:14:47 +0000 (22:14 -0400)
* `ensurepip` now uses `importlib.resources.files()` traversable APIs

* Update Lib/ensurepip/__init__.py

Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
* Update Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst

Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
Lib/ensurepip/__init__.py
Lib/ensurepip/_bundled/__init__.py [deleted file]
Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst [new file with mode: 0644]

index 4c606b9f2a89b8eee73d9a272954d642b11d262c..834fc6bdc64b35c8382c65fe28489a179ca86e65 100644 (file)
@@ -8,7 +8,6 @@ import tempfile
 from importlib import resources
 
 
-
 __all__ = ["version", "bootstrap"]
 _PACKAGE_NAMES = ('setuptools', 'pip')
 _SETUPTOOLS_VERSION = "56.0.0"
@@ -79,8 +78,8 @@ _PACKAGES = None
 
 
 def _run_pip(args, additional_paths=None):
-    # Run the bootstraping in a subprocess to avoid leaking any state that happens
-    # after pip has executed. Particulary, this avoids the case when pip holds onto
+    # Run the bootstrapping in a subprocess to avoid leaking any state that happens
+    # after pip has executed. Particularly, this avoids the case when pip holds onto
     # the files in *additional_paths*, preventing us to remove them at the end of the
     # invocation.
     code = f"""
@@ -164,9 +163,9 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
         for name, package in _get_packages().items():
             if package.wheel_name:
                 # Use bundled wheel package
-                from ensurepip import _bundled
                 wheel_name = package.wheel_name
-                whl = resources.read_binary(_bundled, wheel_name)
+                wheel_path = resources.files("ensurepip") / "_bundled" / wheel_name
+                whl = wheel_path.read_bytes()
             else:
                 # Use the wheel package directory
                 with open(package.wheel_path, "rb") as fp:
diff --git a/Lib/ensurepip/_bundled/__init__.py b/Lib/ensurepip/_bundled/__init__.py
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst b/Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst
new file mode 100644 (file)
index 0000000..2202ae0
--- /dev/null
@@ -0,0 +1 @@
+``ensurepip`` now uses ``importlib.resources.files()`` traversable APIs