mirror of https://github.com/python/cpython
GH-113528: Deoptimise `pathlib._abc.PurePathBase.relative_to()` (#113529)
Replace use of `_from_parsed_parts()` with `with_segments()` in `PurePathBase.relative_to()`, and move the assignment of `_drv`, `_root` and `_tail_cached` slots into `PurePath.relative_to()`.
This commit is contained in:
parent
37bd893a22
commit
a15a7735e6
|
@ -245,7 +245,10 @@ class PurePath(_abc.PurePathBase):
|
|||
"scheduled for removal in Python 3.14")
|
||||
warnings.warn(msg, DeprecationWarning, stacklevel=2)
|
||||
other = self.with_segments(other, *_deprecated)
|
||||
return _abc.PurePathBase.relative_to(self, other, walk_up=walk_up)
|
||||
path = _abc.PurePathBase.relative_to(self, other, walk_up=walk_up)
|
||||
path._drv = path._root = ''
|
||||
path._tail_cached = path._raw_paths.copy()
|
||||
return path
|
||||
|
||||
def is_relative_to(self, other, /, *_deprecated):
|
||||
"""Return True if the path is relative to another path or False.
|
||||
|
|
|
@ -371,7 +371,7 @@ class PurePathBase:
|
|||
else:
|
||||
raise ValueError(f"{str(self)!r} and {str(other)!r} have different anchors")
|
||||
parts = ['..'] * step + self._tail[len(path._tail):]
|
||||
return self._from_parsed_parts('', '', parts)
|
||||
return self.with_segments(*parts)
|
||||
|
||||
def is_relative_to(self, other):
|
||||
"""Return True if the path is relative to another path or False.
|
||||
|
|
Loading…
Reference in New Issue