[Python-checkins] GH-104898: Revert pathlib os.PathLike registration change. (GH-105073)

barneygale webhook-mailer at python.org
Mon May 29 17:45:03 EDT 2023


https://github.com/python/cpython/commit/d593074494b39a3d51e67a4e57189c530867a7ff
commit: d593074494b39a3d51e67a4e57189c530867a7ff
branch: main
author: Barney Gale <barney.gale at gmail.com>
committer: barneygale <barney.gale at gmail.com>
date: 2023-05-29T21:44:51Z
summary:

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 <Alex.Waygood at Gmail.com>

files:
M Lib/pathlib.py

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 @@ def __repr__(self):
         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 @@ def match(self, path_pattern, *, case_sensitive=None):
                 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.



More information about the Python-checkins mailing list