From d87ee02499dd8a5d7fac7a03ba310abb7d78d2a2 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 6 Jul 2026 19:22:05 +0200 Subject: [PATCH] [3.14] gh-150880: Clarify DirEntry.path construction semantics (GH-153218) (GH-153220) gh-150880: Clarify DirEntry.path construction semantics (GH-153218) (cherry picked from commit 53661afabd2b4a9c92230ee7024dc42782164f8e) Co-authored-by: Zain Nadeem --- Doc/library/os.rst | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 71864278e706..fe5cba128576 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -2980,10 +2980,16 @@ features: .. attribute:: path - The entry's full path name: equivalent to ``os.path.join(scandir_path, - entry.name)`` where *scandir_path* is the :func:`scandir` *path* - argument. The path is only absolute if the :func:`scandir` *path* - argument was absolute. If the :func:`scandir` *path* + The entry's path name: equivalent to ``os.path.join(scandir_path, + entry.name)`` where *scandir_path* is the original :func:`scandir` + *path* argument. Apart from the filename, the path preserves the + original :func:`scandir` argument. If the :func:`scandir` *path* + argument was relative, the :attr:`path` attribute is also relative. + Changing the current working directory after creating the + :func:`scandir` iterator may cause later uses of :attr:`path` to resolve + differently. On some platforms, the constructed path may not be valid + if the original :func:`scandir` argument was usable for enumeration but + not for joining with the entry name. If the :func:`scandir` *path* argument was a :ref:`file descriptor `, the :attr:`path` attribute is the same as the :attr:`name` attribute. -- 2.47.3