From 5e606aa53b930d37c82ef33665ee19975d5e9511 Mon Sep 17 00:00:00 2001 From: JinWang An Date: Mon, 27 Mar 2023 17:02:45 +0900 Subject: [PATCH] Imported Upstream version 60.8.2 --- .bumpversion.cfg | 2 +- CHANGES.rst | 12 ++++++++++++ pkg_resources/_vendor/more_itertools/more.py | 3 +-- setup.cfg | 2 +- setuptools/_vendor/more_itertools/more.py | 3 +-- tools/vendored.py | 17 +++++++++++++++++ 6 files changed, 33 insertions(+), 6 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 77754fc..7f466d4 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 60.8.1 +current_version = 60.8.2 commit = True tag = True diff --git a/CHANGES.rst b/CHANGES.rst index 0183241..cd46ace 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,15 @@ +v60.8.2 +------- + + +Misc +^^^^ +* #3091: Make ``concurrent.futures`` import lazy in vendored ``more_itertools`` + package to a avoid importing threading as a side effect (which caused + `gevent/gevent#1865 `__). + -- by :user:`maciejp-ro` + + v60.8.1 ------- diff --git a/pkg_resources/_vendor/more_itertools/more.py b/pkg_resources/_vendor/more_itertools/more.py index 630af97..6b6a5ca 100644 --- a/pkg_resources/_vendor/more_itertools/more.py +++ b/pkg_resources/_vendor/more_itertools/more.py @@ -2,7 +2,6 @@ import warnings from collections import Counter, defaultdict, deque, abc from collections.abc import Sequence -from concurrent.futures import ThreadPoolExecutor from functools import partial, reduce, wraps from heapq import merge, heapify, heapreplace, heappop from itertools import ( @@ -3656,7 +3655,7 @@ class callback_iter: self._aborted = False self._future = None self._wait_seconds = wait_seconds - self._executor = ThreadPoolExecutor(max_workers=1) + self._executor = __import__("concurrent.futures").futures.ThreadPoolExecutor(max_workers=1) self._iterator = self._reader() def __enter__(self): diff --git a/setup.cfg b/setup.cfg index d6f08ca..24eda5a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = setuptools -version = 60.8.1 +version = 60.8.2 author = Python Packaging Authority author_email = distutils-sig@python.org description = Easily download, build, install, upgrade, and uninstall Python packages diff --git a/setuptools/_vendor/more_itertools/more.py b/setuptools/_vendor/more_itertools/more.py index 0f7d282..e6fca4d 100644 --- a/setuptools/_vendor/more_itertools/more.py +++ b/setuptools/_vendor/more_itertools/more.py @@ -2,7 +2,6 @@ import warnings from collections import Counter, defaultdict, deque, abc from collections.abc import Sequence -from concurrent.futures import ThreadPoolExecutor from functools import partial, reduce, wraps from heapq import merge, heapify, heapreplace, heappop from itertools import ( @@ -3454,7 +3453,7 @@ class callback_iter: self._aborted = False self._future = None self._wait_seconds = wait_seconds - self._executor = ThreadPoolExecutor(max_workers=1) + self._executor = __import__("concurrent.futures").futures.ThreadPoolExecutor(max_workers=1) self._iterator = self._reader() def __enter__(self): diff --git a/tools/vendored.py b/tools/vendored.py index 57e28d5..ee978e5 100644 --- a/tools/vendored.py +++ b/tools/vendored.py @@ -64,6 +64,21 @@ def rewrite_importlib_resources(pkg_files, new_root): file.write_text(text) +def rewrite_more_itertools(pkg_files: Path): + """ + Defer import of concurrent.futures. Workaround for #3090. + """ + more_file = pkg_files.joinpath('more.py') + text = more_file.read_text() + text = re.sub(r'^.*concurrent.futures.*?\n', '', text, flags=re.MULTILINE) + text = re.sub( + 'ThreadPoolExecutor', + '__import__("concurrent.futures").futures.ThreadPoolExecutor', + text, + ) + more_file.write_text(text) + + def clean(vendor): """ Remove all files out of the vendor directory except the meta @@ -96,6 +111,7 @@ def update_pkg_resources(): rewrite_jaraco_text(vendor / 'jaraco/text', 'pkg_resources.extern') rewrite_jaraco(vendor / 'jaraco', 'pkg_resources.extern') rewrite_importlib_resources(vendor / 'importlib_resources', 'pkg_resources.extern') + rewrite_more_itertools(vendor / "more_itertools") def update_setuptools(): @@ -105,6 +121,7 @@ def update_setuptools(): rewrite_jaraco_text(vendor / 'jaraco/text', 'setuptools.extern') rewrite_jaraco(vendor / 'jaraco', 'setuptools.extern') rewrite_importlib_resources(vendor / 'importlib_resources', 'setuptools.extern') + rewrite_more_itertools(vendor / "more_itertools") __name__ == '__main__' and update_vendored() -- 2.34.1