[Python-checkins] cpython: Enhance os._DummyDirEntry
victor.stinner
python-checkins at python.org
Thu Mar 24 07:36:16 EDT 2016
https://hg.python.org/cpython/rev/eb91d0387d59
changeset: 100714:eb91d0387d59
user: Victor Stinner <victor.stinner at gmail.com>
date: Thu Mar 24 12:23:18 2016 +0100
summary:
Enhance os._DummyDirEntry
Issue #25911:
* Try to fix test_os.BytesWalkTests on Windows
* Try to mimick better the reference os.DirEntry on Windows
* _DummyDirEntry now caches os.stat() result
* _DummyDirEntry constructor now tries to get os.stat()
files:
Lib/os.py | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/Lib/os.py b/Lib/os.py
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -439,15 +439,36 @@
yield top, dirs, nondirs
class _DummyDirEntry:
+ """Dummy implementation of DirEntry
+
+ Only used internally by os.walk(bytes). Since os.walk() doesn't need the
+ follow_symlinks parameter: don't implement it, always follow symbolic
+ links.
+ """
+
def __init__(self, dir, name):
self.name = name
self.path = path.join(dir, name)
+ # Mimick FindFirstFile/FindNextFile: we should get file attributes
+ # while iterating on a directory
+ self._stat = None
+ try:
+ self.stat()
+ except OSError:
+ pass
+
+ def stat(self):
+ if self._stat is None:
+ self._stat = stat(self.path)
+ return self._stat
def is_dir(self):
- return path.isdir(self.path)
+ stat = self.stat()
+ return st.S_ISDIR(stat.st_mode)
def is_symlink(self):
- return path.islink(self.path)
+ stat = self.stat()
+ return st.S_ISLNK(stat.st_mode)
class _dummy_scandir:
# listdir-based implementation for bytes patches on Windows
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list