]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Replace `pathlib._abc.PathModuleBase.splitroot()` with `splitdrive()` (#114065)
authorBarney Gale <barney.gale@gmail.com>
Sun, 14 Jan 2024 23:06:04 +0000 (23:06 +0000)
committerGitHub <noreply@github.com>
Sun, 14 Jan 2024 23:06:04 +0000 (23:06 +0000)
This allows users of the `pathlib-abc` PyPI package to use `posixpath` or
`ntpath` as a path module in versions of Python lacking
`os.path.splitroot()` (3.11 and before).

Lib/pathlib/_abc.py
Lib/test/test_pathlib/test_pathlib_abc.py

index 1fdca004d6b31f4606b5a7d02ca3f281226964c1..48a6c218309385afd5771000bb3e61e624758012 100644 (file)
@@ -165,12 +165,11 @@ class PathModuleBase:
         """
         self._unsupported('split()')
 
-    def splitroot(self, path):
-        """Split the pathname path into a 3-item tuple (drive, root, tail),
-        where *drive* is a device name or mount point, *root* is a string of
-        separators after the drive, and *tail* is everything after the root.
-        Any part may be empty."""
-        self._unsupported('splitroot()')
+    def splitdrive(self, path):
+        """Split the path into a 2-item tuple (drive, tail), where *drive* is
+        a device name or mount point, and *tail* is everything after the
+        drive. Either part may be empty."""
+        self._unsupported('splitdrive()')
 
     def normcase(self, path):
         """Normalize the case of the path."""
@@ -227,18 +226,17 @@ class PurePathBase:
     @property
     def drive(self):
         """The drive prefix (letter or UNC path), if any."""
-        return self.pathmod.splitroot(self._raw_path)[0]
+        return self.pathmod.splitdrive(self.anchor)[0]
 
     @property
     def root(self):
         """The root of the path, if any."""
-        return self.pathmod.splitroot(self._raw_path)[1]
+        return self.pathmod.splitdrive(self.anchor)[1]
 
     @property
     def anchor(self):
         """The concatenation of the drive and root, or ''."""
-        drive, root, _ =  self.pathmod.splitroot(self._raw_path)
-        return drive + root
+        return self._stack[0]
 
     @property
     def name(self):
index c3c568c296e25c5912caed9adc6468c8a0ce8c30..f877c98b7678f49bb62941b66ab41a11447e44ec 100644 (file)
@@ -27,7 +27,7 @@ class PathModuleBaseTest(unittest.TestCase):
             m.sep
         self.assertRaises(e, m.join, 'foo')
         self.assertRaises(e, m.split, 'foo')
-        self.assertRaises(e, m.splitroot, 'foo')
+        self.assertRaises(e, m.splitdrive, 'foo')
         self.assertRaises(e, m.normcase, 'foo')
         self.assertRaises(e, m.isabs, 'foo')