aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/pathlib/_abc.py
diff options
context:
space:
mode:
authorBarney Gale <barney.gale@gmail.com>2024-01-13 07:36:05 +0000
committerGitHub <noreply@github.com>2024-01-13 07:36:05 +0000
commite4ff131e01184b68d868cfd241a03f8b7d2e0ff9 (patch)
tree0292c431d2dd38f47a265d1d25d961ef86ec43b7 /Lib/pathlib/_abc.py
parentdac1da21218a406652b35919aa2118cc32d4c65a (diff)
downloadcpython-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.py6
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('/'):