`pathlib.Path.iterdir()` now immediately raises any `OSError`
exception from `os.listdir()`, rather than waiting until its
result is iterated over.
The children are yielded in arbitrary order, and the
special entries '.' and '..' are not included.
"""
- for name in os.listdir(self):
- yield self._make_child_relpath(name)
+ return (self._make_child_relpath(name) for name in os.listdir(self))
def _scandir(self):
# bpo-24132: a future version of pathlib will support subclassing of
# __iter__ on something that is not a directory.
p = self.cls(BASE, 'fileA')
with self.assertRaises(OSError) as cm:
- next(p.iterdir())
+ p.iterdir()
# ENOENT or EINVAL under Windows, ENOTDIR otherwise
# (see issue #12802).
self.assertIn(cm.exception.errno, (errno.ENOTDIR,
--- /dev/null
+Fix issue where :meth:`pathlib.Path.iterdir` did not raise :exc:`OSError`
+until iterated.