Skip to content

gh-81520: Add documentatoion about unexpected os.path.ismount() behaviour #136058

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions Doc/library/os.path.rst
Original file line number Diff line number Diff line change
Expand Up @@ -298,9 +298,10 @@ the :mod:`glob` module.)
device than *path*, or whether :file:`{path}/..` and *path* point to the same
i-node on the same device --- this should detect mount points for all Unix
and POSIX variants. It is not able to reliably detect bind mounts on the
same filesystem. On Windows, a drive letter root and a share UNC are
always mount points, and for any other path ``GetVolumePathName`` is called
to see if it is different from the input path.
same filesystem. On Linux systems it will return True for btrfs subvolumes,
even if they aren't mountpoints. On Windows, a drive letter root and a share
UNC are always mount points, and for any other path ``GetVolumePathName`` is
called to see if it is different from the input path.

.. versionchanged:: 3.4
Added support for detecting non-root mount points on Windows.
Expand Down
4 changes: 3 additions & 1 deletion Lib/posixpath.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,9 @@ def dirname(p):
# (Does this work for all UNIXes? Is it even guaranteed to work by Posix?)

def ismount(path):
"""Test whether a path is a mount point"""
"""Test whether a path is a mount point. Does not work reliably
with bind mounts on the same filesystems, has false positives for
btrfs subvolumes that aren't a mountpoint."""
try:
s1 = os.lstat(path)
except (OSError, ValueError):
Expand Down
Loading