changeset: 101441:ade839421b8f parent: 101438:a6473f7a8c55 parent: 101440:97198545e6c3 user: Guido van Rossum date: Thu May 19 13:11:17 2016 -0700 files: Doc/library/pathlib.rst Lib/test/test_pathlib.py Misc/NEWS description: Back out pathlib.Path.path attr. (Merge 3.5->3.6) diff -r a6473f7a8c55 -r ade839421b8f Doc/library/pathlib.rst --- a/Doc/library/pathlib.rst Thu May 19 10:47:55 2016 -0700 +++ b/Doc/library/pathlib.rst Thu May 19 13:11:17 2016 -0700 @@ -365,28 +365,6 @@ '' -.. data:: PurePath.path - - A string representing the full path:: - - >>> PurePosixPath('my/library/setup.py').path - 'my/library/setup.py' - - This always returns the same value as ``str(p)``; it is included to - serve as a one-off protocol. Code that wants to support both - strings and ``pathlib.Path`` objects as filenames can write - ``arg = getattr(arg, 'path', arg)`` to get the path as a string. - This can then be passed to various system calls or library - functions that expect a string. Unlike the alternative - ``arg = str(arg)``, this will still raise an exception if an object - of some other type is given by accident. - - A nice advantage is that this protocol is also supported by - :class:`os.DirEntry` objects returned by :func:`os.scandir`. - - .. versionadded:: 3.4.5 - .. versionadded:: 3.5.2 - .. data:: PurePath.suffix The file extension of the final component, if any:: diff -r a6473f7a8c55 -r ade839421b8f Lib/pathlib.py --- a/Lib/pathlib.py Thu May 19 10:47:55 2016 -0700 +++ b/Lib/pathlib.py Thu May 19 13:11:17 2016 -0700 @@ -693,13 +693,6 @@ 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.""" diff -r a6473f7a8c55 -r ade839421b8f Lib/test/test_pathlib.py --- a/Lib/test/test_pathlib.py Thu May 19 10:47:55 2016 -0700 +++ b/Lib/test/test_pathlib.py Thu May 19 13:11:17 2016 -0700 @@ -477,22 +477,6 @@ 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, '') @@ -915,17 +899,6 @@ 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, '') diff -r a6473f7a8c55 -r ade839421b8f Misc/NEWS --- a/Misc/NEWS Thu May 19 10:47:55 2016 -0700 +++ b/Misc/NEWS Thu May 19 13:11:17 2016 -0700 @@ -682,12 +682,6 @@ - Issue #25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode option if it is safe to do so. -- 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().