]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-39901: Move `pathlib.Path.owner()` and `group()` implementations into the path...
authorBarney Gale <barney.gale@gmail.com>
Fri, 17 Apr 2020 16:41:07 +0000 (17:41 +0100)
committerGitHub <noreply@github.com>
Fri, 17 Apr 2020 16:41:07 +0000 (18:41 +0200)
Lib/pathlib.py

index 96b8b59530c72397b2f5449859d9eb73e7a8505c..d2053e6284501ccde330b14cf453baed01e44ff4 100644 (file)
@@ -447,6 +447,20 @@ class _NormalAccessor(_Accessor):
     def readlink(self, path):
         return os.readlink(path)
 
+    def owner(self, path):
+        try:
+            import pwd
+            return pwd.getpwuid(self.stat(path).st_uid).pw_name
+        except ImportError:
+            raise NotImplementedError("Path.owner() is unsupported on this system")
+
+    def group(self, path):
+        try:
+            import grp
+            return grp.getgrgid(self.stat(path).st_gid).gr_name
+        except ImportError:
+            raise NotImplementedError("Path.group() is unsupported on this system")
+
 
 _normal_accessor = _NormalAccessor()
 
@@ -1202,15 +1216,13 @@ class Path(PurePath):
         """
         Return the login name of the file owner.
         """
-        import pwd
-        return pwd.getpwuid(self.stat().st_uid).pw_name
+        return self._accessor.owner(self)
 
     def group(self):
         """
         Return the group name of the file gid.
         """
-        import grp
-        return grp.getgrgid(self.stat().st_gid).gr_name
+        return self._accessor.group(self)
 
     def open(self, mode='r', buffering=-1, encoding=None,
              errors=None, newline=None):
@@ -1544,11 +1556,5 @@ class WindowsPath(Path, PureWindowsPath):
     """
     __slots__ = ()
 
-    def owner(self):
-        raise NotImplementedError("Path.owner() is unsupported on this system")
-
-    def group(self):
-        raise NotImplementedError("Path.group() is unsupported on this system")
-
     def is_mount(self):
         raise NotImplementedError("Path.is_mount() is unsupported on this system")