Issue #22570: Add 'path' attribute to pathlib.Path objects.

This commit is contained in:
Guido van Rossum 2016-01-06 11:01:42 -08:00
parent 69bfb15bd8
commit e428231539
3 changed files with 40 additions and 0 deletions

View file

@ -645,6 +645,13 @@ class PurePath(object):
self._parts) or '.'
return self._str
@property
def path(self):
try:
return self._str
except AttributeError:
return str(self)
def as_posix(self):
"""Return the string representation of the path with forward (/)
slashes."""

View file

@ -480,6 +480,22 @@ class _BasePurePathTest(object):
self.assertEqual(P('a/b.py').name, 'b.py')
self.assertEqual(P('/a/b.py').name, 'b.py')
def test_path_common(self):
P = self.cls
def check(arg, expected=None):
if expected is None:
expected = arg
self.assertEqual(P(arg).path, expected.replace('/', self.sep))
check('', '.')
check('.')
check('/')
check('a/b')
check('/a/b')
check('/a/b/', '/a/b')
check('/a/b/.', '/a/b')
check('a/b.py')
check('/a/b.py')
def test_suffix_common(self):
P = self.cls
self.assertEqual(P('').suffix, '')
@ -903,6 +919,17 @@ class PureWindowsPathTest(_BasePurePathTest, unittest.TestCase):
self.assertEqual(P('//My.py/Share.php').name, '')
self.assertEqual(P('//My.py/Share.php/a/b').name, 'b')
def test_path(self):
P = self.cls
self.assertEqual(P('c:').path, 'c:')
self.assertEqual(P('c:/').path, 'c:\\')
self.assertEqual(P('c:a/b').path, 'c:a\\b')
self.assertEqual(P('c:/a/b').path, 'c:\\a\\b')
self.assertEqual(P('c:a/b.py').path, 'c:a\\b.py')
self.assertEqual(P('c:/a/b.py').path, 'c:\\a\\b.py')
self.assertEqual(P('//My.py/Share.php').path, '\\\\My.py\\Share.php\\')
self.assertEqual(P('//My.py/Share.php/a/b').path, '\\\\My.py\\Share.php\\a\\b')
def test_suffix(self):
P = self.cls
self.assertEqual(P('c:').suffix, '')