[Python-checkins] bpo-39924: handle missing os functions more consistently in pathlib (GH-19220)

zooba webhook-mailer at python.org
Tue Apr 6 19:01:38 EDT 2021


https://github.com/python/cpython/commit/b57e045320d1d2a70eab236b7d31a3ebb75037c3
commit: b57e045320d1d2a70eab236b7d31a3ebb75037c3
branch: master
author: Barney Gale <barney.gale at gmail.com>
committer: zooba <steve.dower at microsoft.com>
date: 2021-04-07T00:01:22+01:00
summary:

bpo-39924: handle missing os functions more consistently in pathlib (GH-19220)

files:
M Lib/pathlib.py

diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index 5c9284b331a32..64f5f181ed995 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -13,16 +13,10 @@
 from urllib.parse import quote_from_bytes as urlquote_from_bytes
 
 
-supports_symlinks = True
 if os.name == 'nt':
-    import nt
-    if sys.getwindowsversion()[:2] >= (6, 0):
-        from nt import _getfinalpathname
-    else:
-        supports_symlinks = False
-        _getfinalpathname = None
+    from nt import _getfinalpathname
 else:
-    nt = None
+    _getfinalpathname = None
 
 
 __all__ = [
@@ -412,18 +406,17 @@ class _NormalAccessor(_Accessor):
     if hasattr(os, "lchmod"):
         lchmod = os.lchmod
     else:
-        def lchmod(self, pathobj, mode):
-            raise NotImplementedError("lchmod() not available on this system")
+        def lchmod(self, path, mode):
+            raise NotImplementedError("os.lchmod() not available on this system")
 
     mkdir = os.mkdir
 
     unlink = os.unlink
 
     if hasattr(os, "link"):
-        link_to = os.link
+        link = os.link
     else:
-        @staticmethod
-        def link_to(self, target):
+        def link(self, src, dst):
             raise NotImplementedError("os.link() not available on this system")
 
     rmdir = os.rmdir
@@ -432,23 +425,19 @@ def link_to(self, target):
 
     replace = os.replace
 
-    if nt:
-        if supports_symlinks:
-            symlink = os.symlink
-        else:
-            def symlink(a, b, target_is_directory):
-                raise NotImplementedError("symlink() not available on this system")
+    if hasattr(os, "symlink"):
+        symlink = os.symlink
     else:
-        # Under POSIX, os.symlink() takes two args
-        @staticmethod
-        def symlink(a, b, target_is_directory):
-            return os.symlink(a, b)
+        def symlink(self, src, dst, target_is_directory=False):
+            raise NotImplementedError("os.symlink() not available on this system")
 
     utime = os.utime
 
-    # Helper for resolve()
-    def readlink(self, path):
-        return os.readlink(path)
+    if hasattr(os, "readlink"):
+        readlink = os.readlink
+    else:
+        def readlink(self, path):
+            raise NotImplementedError("os.readlink() not available on this system")
 
     def owner(self, path):
         try:
@@ -1369,7 +1358,7 @@ def link_to(self, target):
         """
         Create a hard link pointing to a path named target.
         """
-        self._accessor.link_to(self, target)
+        self._accessor.link(self, target)
 
     def rename(self, target):
         """



More information about the Python-checkins mailing list