From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Wed, 11 Mar 2020 17:07:04 +0000 (-0700) Subject: bpo-39916: Use os.scandir() as context manager in Path.glob(). (GH-18880) X-Git-Tag: v3.8.3rc1~111 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c22879914b03ff2da768e557b5c00e9c8c62c695;p=thirdparty%2FPython%2Fcpython.git bpo-39916: Use os.scandir() as context manager in Path.glob(). (GH-18880) (cherry picked from commit 704e2065f8b8021a4a6999470fb6ed3453f7679e) Co-authored-by: Serhiy Storchaka --- diff --git a/Lib/pathlib.py b/Lib/pathlib.py index d188026bcde8..ff8bac94bc0b 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -527,7 +527,8 @@ class _WildcardSelector(_Selector): def _select_from(self, parent_path, is_dir, exists, scandir): try: - entries = list(scandir(parent_path)) + with scandir(parent_path) as scandir_it: + entries = list(scandir_it) for entry in entries: if self.dironly: try: @@ -557,7 +558,8 @@ class _RecursiveWildcardSelector(_Selector): def _iterate_directories(self, parent_path, is_dir, scandir): yield parent_path try: - entries = list(scandir(parent_path)) + with scandir(parent_path) as scandir_it: + entries = list(scandir_it) for entry in entries: entry_is_dir = False try: diff --git a/Misc/NEWS.d/next/Library/2020-03-09-18-56-27.bpo-39916.BHHyp3.rst b/Misc/NEWS.d/next/Library/2020-03-09-18-56-27.bpo-39916.BHHyp3.rst new file mode 100644 index 000000000000..5f490627b21e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-03-09-18-56-27.bpo-39916.BHHyp3.rst @@ -0,0 +1,2 @@ +More reliable use of ``os.scandir()`` in ``Path.glob()``. It no longer emits +a ResourceWarning when interrupted.