From c22879914b03ff2da768e557b5c00e9c8c62c695 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Wed, 11 Mar 2020 10:07:04 -0700 Subject: [PATCH] bpo-39916: Use os.scandir() as context manager in Path.glob(). (GH-18880) (cherry picked from commit 704e2065f8b8021a4a6999470fb6ed3453f7679e) Co-authored-by: Serhiy Storchaka --- Lib/pathlib.py | 6 ++++-- .../next/Library/2020-03-09-18-56-27.bpo-39916.BHHyp3.rst | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2020-03-09-18-56-27.bpo-39916.BHHyp3.rst diff --git a/Lib/pathlib.py b/Lib/pathlib.py index d188026bcde..ff8bac94bc0 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 00000000000..5f490627b21 --- /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.