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.
|
||||
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):
|
||||
""" Return a new path with expanded ~ and ~user constructs
|
||||
(as returned by os.path.expanduser)
|
||||
"""
|
||||
raise UnsupportedOperation(self._unsupported_msg('expanduser()'))
|
||||
|
||||
@classmethod
|
||||
def home(cls):
|
||||
"""Return a new path pointing to expanduser('~').
|
||||
"""
|
||||
return cls("~").expanduser()
|
||||
|
||||
def readlink(self):
|
||||
"""
|
||||
Return the path to which the symbolic link points.
|
||||
|
|
|
@ -726,6 +726,14 @@ class Path(PathBase, PurePath):
|
|||
tail.extend(self._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):
|
||||
"""
|
||||
Make the path absolute, resolving all symlinks on the way and also
|
||||
|
@ -907,6 +915,15 @@ class Path(PathBase, PurePath):
|
|||
|
||||
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
|
||||
def from_uri(cls, 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, lambda: list(p.walk()))
|
||||
self.assertRaises(e, p.absolute)
|
||||
self.assertRaises(e, P.cwd)
|
||||
self.assertRaises(e, p.expanduser)
|
||||
self.assertRaises(e, p.home)
|
||||
self.assertRaises(e, p.readlink)
|
||||
self.assertRaises(e, p.symlink_to, 'foo')
|
||||
self.assertRaises(e, p.hardlink_to, 'foo')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue