]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-78707: Drop deprecated `pathlib.PurePath.[is_]relative_to()` arguments (#118780)
authorBarney Gale <barney.gale@gmail.com>
Fri, 10 May 2024 15:53:46 +0000 (16:53 +0100)
committerGitHub <noreply@github.com>
Fri, 10 May 2024 15:53:46 +0000 (15:53 +0000)
Remove support for supplying additional positional arguments to
`PurePath.relative_to()` and `is_relative_to()`. This has been deprecated
since Python 3.12.

Doc/whatsnew/3.14.rst
Lib/pathlib/_local.py
Lib/test/test_pathlib/test_pathlib.py
Misc/NEWS.d/next/Library/2024-05-08-18-59-19.gh-issue-78707._Lz1sw.rst [new file with mode: 0644]

index 25c43dc0387eaf7c3a260118315fc52318ff8922..52a24d1a9295a3b5e96be2bad304361f4920fc82 100644 (file)
@@ -114,6 +114,14 @@ email
 * The *isdst* parameter has been removed from :func:`email.utils.localtime`.
   (Contributed by Hugo van Kemenade in :gh:`118798`.)
 
+pathlib
+-------
+
+* Remove support for passing additional positional arguments to
+  :meth:`pathlib.PurePath.relative_to` and
+  :meth:`~pathlib.PurePath.is_relative_to`. In previous versions, any such
+  arguments are joined onto *other*.
+
 Others
 ------
 
index b1e678aceb9ce8d60439951f24206befe5886150..f2c627319d520f5fdbd867590075e76f7db1d3ae 100644 (file)
@@ -362,7 +362,7 @@ class PurePath(PurePathBase):
         tail[-1] = name
         return self._from_parsed_parts(self.drive, self.root, tail)
 
-    def relative_to(self, other, /, *_deprecated, walk_up=False):
+    def relative_to(self, other, *, walk_up=False):
         """Return the relative path to another path identified by the passed
         arguments.  If the operation is not possible (because this is not
         related to the other path), raise ValueError.
@@ -370,13 +370,7 @@ class PurePath(PurePathBase):
         The *walk_up* parameter controls whether `..` may be used to resolve
         the path.
         """
-        if _deprecated:
-            msg = ("support for supplying more than one positional argument "
-                   "to pathlib.PurePath.relative_to() is deprecated and "
-                   "scheduled for removal in Python 3.14")
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-            other = self.with_segments(other, *_deprecated)
-        elif not isinstance(other, PurePath):
+        if not isinstance(other, PurePath):
             other = self.with_segments(other)
         for step, path in enumerate(chain([other], other.parents)):
             if path == self or path in self.parents:
@@ -390,16 +384,10 @@ class PurePath(PurePathBase):
         parts = ['..'] * step + self._tail[len(path._tail):]
         return self._from_parsed_parts('', '', parts)
 
-    def is_relative_to(self, other, /, *_deprecated):
+    def is_relative_to(self, other):
         """Return True if the path is relative to another path or False.
         """
-        if _deprecated:
-            msg = ("support for supplying more than one argument to "
-                   "pathlib.PurePath.is_relative_to() is deprecated and "
-                   "scheduled for removal in Python 3.14")
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-            other = self.with_segments(other, *_deprecated)
-        elif not isinstance(other, PurePath):
+        if not isinstance(other, PurePath):
             other = self.with_segments(other)
         return other == self or other in self.parents
 
index 5fd1a41cbee17b2415167f343e7dc97ce338abfb..4fd2aac4a62139b67ec128f4b6d275dae61da705 100644 (file)
@@ -311,19 +311,6 @@ class PurePathTest(test_pathlib_abc.DummyPurePathTest):
         self.assertRaises(ValueError, P('a/b').with_stem, '')
         self.assertRaises(ValueError, P('a/b').with_stem, '.')
 
-    def test_relative_to_several_args(self):
-        P = self.cls
-        p = P('a/b')
-        with self.assertWarns(DeprecationWarning):
-            p.relative_to('a', 'b')
-            p.relative_to('a', 'b', walk_up=True)
-
-    def test_is_relative_to_several_args(self):
-        P = self.cls
-        p = P('a/b')
-        with self.assertWarns(DeprecationWarning):
-            p.is_relative_to('a', 'b')
-
     def test_is_reserved_deprecated(self):
         P = self.cls
         p = P('a/b')
diff --git a/Misc/NEWS.d/next/Library/2024-05-08-18-59-19.gh-issue-78707._Lz1sw.rst b/Misc/NEWS.d/next/Library/2024-05-08-18-59-19.gh-issue-78707._Lz1sw.rst
new file mode 100644 (file)
index 0000000..c73bab9
--- /dev/null
@@ -0,0 +1,3 @@
+Drop support for passing additional positional arguments to
+:meth:`pathlib.PurePath.relative_to` and
+:meth:`~pathlib.PurePath.is_relative_to`.