diff options
author | Barney Gale <barney.gale@gmail.com> | 2024-01-13 07:36:05 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-13 07:36:05 +0000 |
commit | e4ff131e01184b68d868cfd241a03f8b7d2e0ff9 (patch) | |
tree | 0292c431d2dd38f47a265d1d25d961ef86ec43b7 /Lib/pathlib/_abc.py | |
parent | dac1da21218a406652b35919aa2118cc32d4c65a (diff) | |
download | cpython-e4ff131e01184b68d868cfd241a03f8b7d2e0ff9.tar.gz cpython-e4ff131e01184b68d868cfd241a03f8b7d2e0ff9.zip |
GH-44626, GH-105476: Fix `ntpath.isabs()` handling of part-absolute paths (#113829)
On Windows, `os.path.isabs()` now returns `False` when given a path that
starts with exactly one (back)slash. This is more compatible with other
functions in `os.path`, and with Microsoft's own documentation.
Also adjust `pathlib.PureWindowsPath.is_absolute()` to call
`ntpath.isabs()`, which corrects its handling of partial UNC/device paths
like `//foo`.
Co-authored-by: Jon Foster <jon@jon-foster.co.uk>
Diffstat (limited to 'Lib/pathlib/_abc.py')
-rw-r--r-- | Lib/pathlib/_abc.py | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/Lib/pathlib/_abc.py b/Lib/pathlib/_abc.py index 2fc087d13ae..d2a31ed6439 100644 --- a/Lib/pathlib/_abc.py +++ b/Lib/pathlib/_abc.py @@ -1,5 +1,4 @@ import functools -import ntpath import posixpath from errno import ENOENT, ENOTDIR, EBADF, ELOOP, EINVAL from stat import S_ISDIR, S_ISLNK, S_ISREG, S_ISSOCK, S_ISBLK, S_ISCHR, S_ISFIFO @@ -373,10 +372,7 @@ class PurePathBase: def is_absolute(self): """True if the path is absolute (has both a root and, if applicable, a drive).""" - if self.pathmod is ntpath: - # ntpath.isabs() is defective - see GH-44626. - return bool(self.drive and self.root) - elif self.pathmod is posixpath: + if self.pathmod is posixpath: # Optimization: work with raw paths on POSIX. for path in self._raw_paths: if path.startswith('/'): |