diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2022-02-08 17:53:30 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-08 17:53:30 -0500 |
| commit | 43d9e48e0d7c77f3bb4b6fbf572521ba642d6605 (patch) | |
| tree | f3cdfebda490814fe24aece202aa1ea72a1e3a8a | |
| parent | da71fab6210e14e81047909c1b66444062842cfe (diff) | |
| parent | 44b39e0df56b553aed045049ec30839fcb06cdd3 (diff) | |
| download | python-setuptools-git-43d9e48e0d7c77f3bb4b6fbf572521ba642d6605.tar.gz | |
Merge pull request #3091 from maciejp-ro/remove-more_itertools.more
Remove more_itertools.more from vendored libs (fixes pypa/setuptools#3090)
| -rw-r--r-- | changelog.d/3091.misc.rst | 4 | ||||
| -rw-r--r-- | pkg_resources/_vendor/more_itertools/more.py | 3 | ||||
| -rw-r--r-- | setuptools/_vendor/more_itertools/more.py | 3 | ||||
| -rw-r--r-- | tools/vendored.py | 17 |
4 files changed, 23 insertions, 4 deletions
diff --git a/changelog.d/3091.misc.rst b/changelog.d/3091.misc.rst new file mode 100644 index 00000000..d6664125 --- /dev/null +++ b/changelog.d/3091.misc.rst @@ -0,0 +1,4 @@ +Make ``concurrent.futures`` import lazy in vendored ``more_itertools`` +package to a avoid importing threading as a side effect (which caused +`gevent/gevent#1865 <https://github.com/gevent/gevent/issues/1865>`__). +-- by :user:`maciejp-ro` diff --git a/pkg_resources/_vendor/more_itertools/more.py b/pkg_resources/_vendor/more_itertools/more.py index 630af973..6b6a5cab 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/setuptools/_vendor/more_itertools/more.py b/setuptools/_vendor/more_itertools/more.py index 0f7d282a..e6fca4d4 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 57e28d53..ee978e5c 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() |
