Imported Upstream version 60.8.2 upstream/60.8.2
authorJinWang An <jinwang.an@samsung.com>
Mon, 27 Mar 2023 08:02:45 +0000 (17:02 +0900)
committerJinWang An <jinwang.an@samsung.com>
Mon, 27 Mar 2023 08:02:45 +0000 (17:02 +0900)
.bumpversion.cfg
CHANGES.rst
pkg_resources/_vendor/more_itertools/more.py
setup.cfg
setuptools/_vendor/more_itertools/more.py
tools/vendored.py

index 77754fc02185e53a3978b2ad4c7dee0d944bbe69..7f466d4f0abb9388e91f29ba819757c6b2bda6b6 100644 (file)
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 60.8.1
+current_version = 60.8.2
 commit = True
 tag = True
 
index 0183241bb7f591b112070c9594e81b67b7211126..cd46ace6a06251e0569cd47e0c1dcc318add2c3b 100644 (file)
@@ -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 <https://github.com/gevent/gevent/issues/1865>`__).
+  -- by :user:`maciejp-ro`
+
+
 v60.8.1
 -------
 
index 630af973f25214d1f34e09a113f69dfb1c944269..6b6a5cab25ad87ec414c3180611f33575308d54f 100644 (file)
@@ -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):
index d6f08caa5023accca3a4b42d498284d6cc445d65..24eda5a36ca04602c241564e6c2c32bc2e1d22a5 100644 (file)
--- 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
index 0f7d282aa5df08f3e2692bf1e51dfaaea60ae4ea..e6fca4d47f661ff16fdc8c2bb7ae5b86c7f347b2 100644 (file)
@@ -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):
index 57e28d53c40375c04ab41dc3c5ec177864d56306..ee978e5c82f2ccf13ac95f68beaa52fb684f5460 100644 (file)
@@ -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()