diff --git a/Lib/pathlib/__init__.py b/Lib/pathlib/__init__.py index fd073445e89b62..cea1a9fe57eedf 100644 --- a/Lib/pathlib/__init__.py +++ b/Lib/pathlib/__init__.py @@ -188,9 +188,6 @@ def __reduce__(self): def __repr__(self): return "{}({!r})".format(self.__class__.__name__, self.as_posix()) - def __fspath__(self): - return str(self) - def __bytes__(self): """Return the bytes representation of the path. This is only recommended to use under Unix.""" @@ -259,6 +256,9 @@ def __str__(self): self._tail) or '.' return self._str + __fspath__ = __str__ + __vfspath__ = __str__ + @classmethod def _format_parsed_parts(cls, drv, root, tail): if drv or root: diff --git a/Lib/pathlib/_os.py b/Lib/pathlib/_os.py index 62a4adb555ea89..fbcbfb979d1278 100644 --- a/Lib/pathlib/_os.py +++ b/Lib/pathlib/_os.py @@ -210,24 +210,18 @@ def magic_open(path, mode='r', buffering=-1, encoding=None, errors=None, raise TypeError(f"{cls.__name__} can't be opened with mode {mode!r}") -def vfspath(path): +def vfspath(obj): """ Return the string representation of a virtual path object. """ + cls = type(obj) try: - return os.fsdecode(path) - except TypeError: - pass - - path_type = type(path) - try: - return path_type.__vfspath__(path) + vfspath_method = cls.__vfspath__ except AttributeError: - if hasattr(path_type, '__vfspath__'): - raise - - raise TypeError("expected str, bytes, os.PathLike or JoinablePath " - "object, not " + path_type.__name__) + cls_name = cls.__name__ + raise TypeError(f"expected JoinablePath object, not {cls_name}") from None + else: + return vfspath_method(obj) def ensure_distinct_paths(source, target): diff --git a/Lib/test/test_pathlib/support/zip_path.py b/Lib/test/test_pathlib/support/zip_path.py index 21e1d07423aff5..2bfe89b36595b0 100644 --- a/Lib/test/test_pathlib/support/zip_path.py +++ b/Lib/test/test_pathlib/support/zip_path.py @@ -334,4 +334,4 @@ def symlink_to(self, target, target_is_directory=False): zinfo.external_attr = stat.S_IFLNK << 16 if target_is_directory: zinfo.external_attr |= 0x10 - self.zip_file.writestr(zinfo, vfspath(target)) + self.zip_file.writestr(zinfo, target) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy