summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2020-09-04 15:29:06 -0700
committerGitHub <noreply@github.com>2020-09-04 15:29:06 -0700
commitbd078df28322f840afd363b6ba097b5506ea5098 (patch)
tree9238a0a61d173d3b10b5bffa670215b211bf6a81
parent78ef1b6b124bb89883f3b755ea4aeec480e0e21d (diff)
downloadcpython-git-bd078df28322f840afd363b6ba097b5506ea5098.tar.gz
[3.9] bpo-40486: Specify what happens if directory content change diring iteration (GH-22025) (GH-22093)
(cherry picked from commit 306cfb3a37e1438f6ba9f0a9f3af3c00aae4ec64) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
-rw-r--r--Doc/library/glob.rst4
-rw-r--r--Doc/library/os.rst11
-rw-r--r--Doc/library/pathlib.rst5
3 files changed, 17 insertions, 3 deletions
diff --git a/Doc/library/glob.rst b/Doc/library/glob.rst
index 92a8c4d1eb..3c468ebf73 100644
--- a/Doc/library/glob.rst
+++ b/Doc/library/glob.rst
@@ -43,7 +43,9 @@ For example, ``'[?]'`` matches the character ``'?'``.
(like :file:`/usr/src/Python-1.5/Makefile`) or relative (like
:file:`../../Tools/\*/\*.gif`), and can contain shell-style wildcards. Broken
symlinks are included in the results (as in the shell). Whether or not the
- results are sorted depends on the file system.
+ results are sorted depends on the file system. If a file that satisfies
+ conditions is removed or added during the call of this function, whether
+ a path name for that file be included is unspecified.
.. index::
single: **; in glob-style wildcards
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index 6d5fb314a8..64bc73589f 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -1837,6 +1837,8 @@ features:
Return a list containing the names of the entries in the directory given by
*path*. The list is in arbitrary order, and does not include the special
entries ``'.'`` and ``'..'`` even if they are present in the directory.
+ If a file is removed from or added to the directory during the call of
+ this function, whether a name for that file be included is unspecified.
*path* may be a :term:`path-like object`. If *path* is of type ``bytes``
(directly or indirectly through the :class:`PathLike` interface),
@@ -2242,7 +2244,9 @@ features:
Return an iterator of :class:`os.DirEntry` objects corresponding to the
entries in the directory given by *path*. The entries are yielded in
arbitrary order, and the special entries ``'.'`` and ``'..'`` are not
- included.
+ included. If a file is removed from or added to the directory after
+ creating the iterator, whether an entry for that file be included is
+ unspecified.
Using :func:`scandir` instead of :func:`listdir` can significantly
increase the performance of code that also needs file type or file
@@ -2992,7 +2996,10 @@ features:
*filenames* is a list of the names of the non-directory files in *dirpath*.
Note that the names in the lists contain no path components. To get a full path
(which begins with *top*) to a file or directory in *dirpath*, do
- ``os.path.join(dirpath, name)``.
+ ``os.path.join(dirpath, name)``. Whether or not the lists are sorted
+ depends on the file system. If a file is removed from or added to the
+ *dirpath* directory during generating the lists, whether a name for that
+ file be included is unspecified.
If optional argument *topdown* is ``True`` or not specified, the triple for a
directory is generated before the triples for any of its subdirectories
diff --git a/Doc/library/pathlib.rst b/Doc/library/pathlib.rst
index 04810f5204..23486b6250 100644
--- a/Doc/library/pathlib.rst
+++ b/Doc/library/pathlib.rst
@@ -890,6 +890,11 @@ call fails (for example because the path doesn't exist).
PosixPath('docs/_static')
PosixPath('docs/Makefile')
+ The children are yielded in arbitrary order, and the special entries
+ ``'.'`` and ``'..'`` are not included. If a file is removed from or added
+ to the directory after creating the iterator, whether an path object for
+ that file be included is unspecified.
+
.. method:: Path.lchmod(mode)
Like :meth:`Path.chmod` but, if the path points to a symbolic link, the