summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2015-01-12 20:03:41 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2015-01-12 20:03:41 (GMT)
commit17cba7daf5cdbe2a0e589be9ef507408b8dc07f1 (patch)
tree05b7922431dd4d704e4be6b4555bfd4e06dcfd62
parent2b4ec1ce8a1e14a0c8de4fbab9442c6260a5f27d (diff)
downloadcpython-17cba7daf5cdbe2a0e589be9ef507408b8dc07f1.zip
cpython-17cba7daf5cdbe2a0e589be9ef507408b8dc07f1.tar.gz
cpython-17cba7daf5cdbe2a0e589be9ef507408b8dc07f1.tar.bz2
Issue #19777: Provide a home() classmethod on Path objects.
Contributed by Victor Salgado and Mayank Tripathi.
-rw-r--r--Doc/library/pathlib.rst11
-rw-r--r--Lib/pathlib.py7
-rw-r--r--Lib/test/test_pathlib.py11
-rw-r--r--Misc/ACKS2
-rw-r--r--Misc/NEWS3
5 files changed, 34 insertions, 0 deletions
diff --git a/Doc/library/pathlib.rst b/Doc/library/pathlib.rst
index c796cf4..0226ce4 100644
--- a/Doc/library/pathlib.rst
+++ b/Doc/library/pathlib.rst
@@ -628,6 +628,17 @@ call fails (for example because the path doesn't exist):
PosixPath('/home/antoine/pathlib')
+.. classmethod:: Path.home()
+
+ Return a new path object representing the user's home directory (as
+ returned by :func:`os.path.expanduser` with ``~`` construct)::
+
+ >>> Path.home()
+ PosixPath('/home/antoine')
+
+ .. versionadded:: 3.5
+
+
.. method:: Path.stat()
Return information about this path (similarly to :func:`os.stat`).
diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index 6244932..dd2ccba 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -1008,6 +1008,13 @@ class Path(PurePath):
"""
return cls(os.getcwd())
+ @classmethod
+ def home(cls):
+ """Return a new path pointing to the user's home directory (as
+ returned by os.path.expanduser('~')).
+ """
+ return cls(cls()._flavour.gethomedir(None))
+
def samefile(self, other_path):
"""Return whether `other_file` is the same or not as this file.
(as returned by os.path.samefile(file, other_file)).
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index 2e97a5e..f4ee519 100644
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -1261,6 +1261,17 @@ class _BasePathTest(object):
p = self.cls.cwd()
self._test_cwd(p)
+ def _test_home(self, p):
+ q = self.cls(os.path.expanduser('~'))
+ self.assertEqual(p, q)
+ self.assertEqual(str(p), str(q))
+ self.assertIs(type(p), type(q))
+ self.assertTrue(p.is_absolute())
+
+ def test_home(self):
+ p = self.cls.home()
+ self._test_home(p)
+
def test_samefile(self):
fileA_path = os.path.join(BASE, 'fileA')
fileB_path = os.path.join(BASE, 'dirB', 'fileB')
diff --git a/Misc/ACKS b/Misc/ACKS
index 95f12ef..ff72992 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1201,6 +1201,7 @@ Sébastien Sablé
Suman Saha
Hajime Saitou
George Sakkis
+Victor Salgado
Rich Salz
Kevin Samborn
Adrian Sampson
@@ -1390,6 +1391,7 @@ David Townshend
Nathan Trapuzzano
Laurence Tratt
Alberto Trevino
+Mayank Tripathi
Matthias Troffaes
Tom Tromey
John Tromp
diff --git a/Misc/NEWS b/Misc/NEWS
index 3c71d9e..ec2e74a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -203,6 +203,9 @@ Core and Builtins
Library
-------
+- Issue #19777: Provide a home() classmethod on Path objects. Contributed
+ by Victor Salgado and Mayank Tripathi.
+
- Issue #23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the
default case of ``ensure_ascii=True``. Patch by Naoki Inada.