mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
GH-127381: pathlib ABCs: remove PathBase.cwd()
and home()
(#127427)
These classmethods presume that the user has retained the original `__init__()` signature, which may not be the case. Also, many virtual filesystems don't provide current or home directories.
This commit is contained in:
parent
4e0a4cafe8
commit
328187cc4f
3 changed files with 17 additions and 17 deletions
|
@ -735,27 +735,12 @@ class PathBase(PurePathBase):
|
||||||
# Treat the root directory as the current working directory.
|
# Treat the root directory as the current working directory.
|
||||||
return self.with_segments('/', *self._raw_paths)
|
return self.with_segments('/', *self._raw_paths)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def cwd(cls):
|
|
||||||
"""Return a new path pointing to the current working directory."""
|
|
||||||
# We call 'absolute()' rather than using 'os.getcwd()' directly to
|
|
||||||
# enable users to replace the implementation of 'absolute()' in a
|
|
||||||
# subclass and benefit from the new behaviour here. This works because
|
|
||||||
# os.path.abspath('.') == os.getcwd().
|
|
||||||
return cls().absolute()
|
|
||||||
|
|
||||||
def expanduser(self):
|
def expanduser(self):
|
||||||
""" Return a new path with expanded ~ and ~user constructs
|
""" Return a new path with expanded ~ and ~user constructs
|
||||||
(as returned by os.path.expanduser)
|
(as returned by os.path.expanduser)
|
||||||
"""
|
"""
|
||||||
raise UnsupportedOperation(self._unsupported_msg('expanduser()'))
|
raise UnsupportedOperation(self._unsupported_msg('expanduser()'))
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def home(cls):
|
|
||||||
"""Return a new path pointing to expanduser('~').
|
|
||||||
"""
|
|
||||||
return cls("~").expanduser()
|
|
||||||
|
|
||||||
def readlink(self):
|
def readlink(self):
|
||||||
"""
|
"""
|
||||||
Return the path to which the symbolic link points.
|
Return the path to which the symbolic link points.
|
||||||
|
|
|
@ -726,6 +726,14 @@ class Path(PathBase, PurePath):
|
||||||
tail.extend(self._tail)
|
tail.extend(self._tail)
|
||||||
return self._from_parsed_parts(drive, root, tail)
|
return self._from_parsed_parts(drive, root, tail)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def cwd(cls):
|
||||||
|
"""Return a new path pointing to the current working directory."""
|
||||||
|
cwd = os.getcwd()
|
||||||
|
path = cls(cwd)
|
||||||
|
path._str = cwd # getcwd() returns a normalized path
|
||||||
|
return path
|
||||||
|
|
||||||
def resolve(self, strict=False):
|
def resolve(self, strict=False):
|
||||||
"""
|
"""
|
||||||
Make the path absolute, resolving all symlinks on the way and also
|
Make the path absolute, resolving all symlinks on the way and also
|
||||||
|
@ -907,6 +915,15 @@ class Path(PathBase, PurePath):
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def home(cls):
|
||||||
|
"""Return a new path pointing to expanduser('~').
|
||||||
|
"""
|
||||||
|
homedir = os.path.expanduser("~")
|
||||||
|
if homedir == "~":
|
||||||
|
raise RuntimeError("Could not determine home directory.")
|
||||||
|
return cls(homedir)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_uri(cls, uri):
|
def from_uri(cls, uri):
|
||||||
"""Return a new path from the given 'file' URI."""
|
"""Return a new path from the given 'file' URI."""
|
||||||
|
|
|
@ -1371,9 +1371,7 @@ class PathBaseTest(PurePathBaseTest):
|
||||||
self.assertRaises(e, p.rglob, '*')
|
self.assertRaises(e, p.rglob, '*')
|
||||||
self.assertRaises(e, lambda: list(p.walk()))
|
self.assertRaises(e, lambda: list(p.walk()))
|
||||||
self.assertRaises(e, p.absolute)
|
self.assertRaises(e, p.absolute)
|
||||||
self.assertRaises(e, P.cwd)
|
|
||||||
self.assertRaises(e, p.expanduser)
|
self.assertRaises(e, p.expanduser)
|
||||||
self.assertRaises(e, p.home)
|
|
||||||
self.assertRaises(e, p.readlink)
|
self.assertRaises(e, p.readlink)
|
||||||
self.assertRaises(e, p.symlink_to, 'foo')
|
self.assertRaises(e, p.symlink_to, 'foo')
|
||||||
self.assertRaises(e, p.hardlink_to, 'foo')
|
self.assertRaises(e, p.hardlink_to, 'foo')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue