From: Barney Gale Date: Mon, 29 May 2023 21:44:51 +0000 (+0100) Subject: GH-104898: Revert pathlib os.PathLike registration change. (GH-105073) X-Git-Tag: v3.13.0a1~1983 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d593074494b39a3d51e67a4e57189c530867a7ff;p=thirdparty%2FPython%2Fcpython.git GH-104898: Revert pathlib os.PathLike registration change. (GH-105073) Subclassing `os.PathLike` rather than using `register()` makes initialisation slower, due to the additional `__isinstance__` work. This partially reverts commit bd1b6228d132b8e9836fe352cd8dca2b6c1bd98c. Co-authored-by: Alex Waygood --- diff --git a/Lib/pathlib.py b/Lib/pathlib.py index 87c2e970a0a8..a57b582a211e 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -235,7 +235,7 @@ class _PathParents(Sequence): return "<{}.parents>".format(type(self._path).__name__) -class PurePath(os.PathLike): +class PurePath: """Base class for manipulating paths without I/O. PurePath represents a filesystem path and offers operations which @@ -715,6 +715,10 @@ class PurePath(os.PathLike): return False return True +# Subclassing os.PathLike makes isinstance() checks slower, +# which in turn makes Path construction slower. Register instead! +os.PathLike.register(PurePath) + class PurePosixPath(PurePath): """PurePath subclass for non-Windows systems.