From: Steve Dower Date: Fri, 7 Aug 2020 22:10:32 +0000 (+0100) Subject: bpo-41490: Update ensurepip to install pip 20.2.1 and setuptools 49.2.1 (GH-21775) X-Git-Tag: v3.8.6rc1~52 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=135de08128a76f49752ac57c316129500275e828;p=thirdparty%2FPython%2Fcpython.git bpo-41490: Update ensurepip to install pip 20.2.1 and setuptools 49.2.1 (GH-21775) --- diff --git a/.github/workflows/build_msi.yml b/.github/workflows/build_msi.yml index 769b3d012e94..e35ebe425652 100644 --- a/.github/workflows/build_msi.yml +++ b/.github/workflows/build_msi.yml @@ -8,6 +8,7 @@ on: - 3.7 paths: - 'Tools/msi/**' + - 'Lib/ensurepip/**' pull_request: branches: - master @@ -15,6 +16,7 @@ on: - 3.7 paths: - 'Tools/msi/**' + - 'Lib/ensurepip/**' jobs: build_win32: diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index f3152a55d443..9415fd73b80d 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -9,9 +9,9 @@ import tempfile __all__ = ["version", "bootstrap"] -_SETUPTOOLS_VERSION = "47.1.0" +_SETUPTOOLS_VERSION = "49.2.1" -_PIP_VERSION = "20.1.1" +_PIP_VERSION = "20.2.1" _PROJECTS = [ ("setuptools", _SETUPTOOLS_VERSION, "py3"), diff --git a/Lib/ensurepip/_bundled/pip-20.1.1-py2.py3-none-any.whl b/Lib/ensurepip/_bundled/pip-20.2.1-py2.py3-none-any.whl similarity index 54% rename from Lib/ensurepip/_bundled/pip-20.1.1-py2.py3-none-any.whl rename to Lib/ensurepip/_bundled/pip-20.2.1-py2.py3-none-any.whl index ea1d0f7c8604..3d0d3f8ae7fa 100644 Binary files a/Lib/ensurepip/_bundled/pip-20.1.1-py2.py3-none-any.whl and b/Lib/ensurepip/_bundled/pip-20.2.1-py2.py3-none-any.whl differ diff --git a/Lib/ensurepip/_bundled/setuptools-47.1.0-py3-none-any.whl b/Lib/ensurepip/_bundled/setuptools-49.2.1-py3-none-any.whl similarity index 54% rename from Lib/ensurepip/_bundled/setuptools-47.1.0-py3-none-any.whl rename to Lib/ensurepip/_bundled/setuptools-49.2.1-py3-none-any.whl index f87867ff9825..308e2f2ed5ed 100644 Binary files a/Lib/ensurepip/_bundled/setuptools-47.1.0-py3-none-any.whl and b/Lib/ensurepip/_bundled/setuptools-49.2.1-py3-none-any.whl differ diff --git a/Lib/test/test_importlib/test_resource.py b/Lib/test/test_importlib/test_resource.py index f88d92d15467..e132c57282b3 100644 --- a/Lib/test/test_importlib/test_resource.py +++ b/Lib/test/test_importlib/test_resource.py @@ -1,10 +1,13 @@ import sys import unittest +import uuid from . import data01 from . import zipdata01, zipdata02 from . import util from importlib import resources, import_module +from pathlib import Path +from test import support class ResourceTests: @@ -162,5 +165,71 @@ class NamespaceTest(unittest.TestCase): 'test.test_importlib.data03.namespace', 'resource1.txt') +class DeletingZipsTest(unittest.TestCase): + """Having accessed resources in a zip file should not keep an open + reference to the zip. + """ + ZIP_MODULE = zipdata01 + + def setUp(self): + modules = support.modules_setup() + self.addCleanup(support.modules_cleanup, *modules) + + data_path = Path(self.ZIP_MODULE.__file__) + data_dir = data_path.parent + self.source_zip_path = data_dir / 'ziptestdata.zip' + self.zip_path = Path.cwd() / '{}.zip'.format(uuid.uuid4()) + self.zip_path.write_bytes(self.source_zip_path.read_bytes()) + sys.path.append(str(self.zip_path)) + self.data = import_module('ziptestdata') + + def tearDown(self): + try: + sys.path.remove(str(self.zip_path)) + except ValueError: + pass + + try: + del sys.path_importer_cache[str(self.zip_path)] + del sys.modules[self.data.__name__] + except KeyError: + pass + + try: + support.unlink(self.zip_path) + except OSError: + # If the test fails, this will probably fail too + pass + + def test_contents_does_not_keep_open(self): + c = resources.contents('ziptestdata') + self.zip_path.unlink() + + def test_is_resource_does_not_keep_open(self): + c = resources.is_resource('ziptestdata', 'binary.file') + self.zip_path.unlink() + + def test_is_resource_failure_does_not_keep_open(self): + c = resources.is_resource('ziptestdata', 'not-present') + self.zip_path.unlink() + + def test_path_does_not_keep_open(self): + c = resources.path('ziptestdata', 'binary.file') + self.zip_path.unlink() + + def test_entered_path_does_not_keep_open(self): + # This is what certifi does on import to make its bundle + # available for the process duration. + c = resources.path('ziptestdata', 'binary.file').__enter__() + self.zip_path.unlink() + + def test_read_binary_does_not_keep_open(self): + c = resources.read_binary('ziptestdata', 'binary.file') + self.zip_path.unlink() + + def test_read_text_does_not_keep_open(self): + c = resources.read_text('ziptestdata', 'utf-8.file', encoding='utf-8') + self.zip_path.unlink() + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-08-05-23-16-39.bpo-41490.6z47A_.rst b/Misc/NEWS.d/next/Library/2020-08-05-23-16-39.bpo-41490.6z47A_.rst new file mode 100644 index 000000000000..e89180db0042 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-08-05-23-16-39.bpo-41490.6z47A_.rst @@ -0,0 +1 @@ +Update :mod:`ensurepip` to install pip 20.2.1 and setuptools 49.2.1.