Issue #22570: Add 'path' attribute to pathlib.Path objects. (Merge 3.4->3.5)
This commit is contained in:
commit
1a4afec0d6
|
@ -690,6 +690,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."""
|
||||
|
|
|
@ -477,6 +477,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, '')
|
||||
|
@ -899,6 +915,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, '')
|
||||
|
|
|
@ -41,6 +41,12 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #22570: Add 'path' attribute to pathlib.Path objects,
|
||||
returning the same as str(), to make it more similar to DirEntry.
|
||||
Library code can now write getattr(p, 'path', p) to get the path as
|
||||
a string from a Path, a DirEntry, or a plain string. This is
|
||||
essentially a small one-off protocol.
|
||||
|
||||
- Issue #26012: Don't traverse into symlinks for ** pattern in
|
||||
pathlib.Path.[r]glob().
|
||||
|
||||
|
|
Loading…
Reference in New Issue