diff options
| author | Yaroslav Pankovych <31005942+ypankovych@users.noreply.github.com> | 2020-11-23 22:06:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-23 15:06:22 -0500 |
| commit | 79d2e62c008446fbbc6f264bb8a30e2d38b6ff58 (patch) | |
| tree | 19897f3bf2d3abafff8fbcda7c51bcbb446265b6 | |
| parent | ffae93248a33cd6fe73d1ea85d6802765bbf56d2 (diff) | |
| download | cpython-git-79d2e62c008446fbbc6f264bb8a30e2d38b6ff58.tar.gz | |
Added support for negative indexes to PurePath.parents (GH-21799)
This commit also fixes up some of the overlapping documentation changed
in bpo-35498, which added support for indexing with slices.
Fixes bpo-21041.
https://bugs.python.org/issue21041
Co-authored-by: Paul Ganssle <p.ganssle@gmail.com>
Co-authored-by: Rémi Lapeyre <remi.lapeyre@henki.fr>
| -rw-r--r-- | Doc/library/pathlib.rst | 2 | ||||
| -rw-r--r-- | Doc/whatsnew/3.10.rst | 6 | ||||
| -rw-r--r-- | Lib/pathlib.py | 3 | ||||
| -rw-r--r-- | Lib/test/test_pathlib.py | 5 | ||||
| -rw-r--r-- | Misc/ACKS | 1 | ||||
| -rw-r--r-- | Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst | 2 | ||||
| -rw-r--r-- | Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst | 1 |
7 files changed, 15 insertions, 5 deletions
diff --git a/Doc/library/pathlib.rst b/Doc/library/pathlib.rst index 2071e7ed5f..2bbf3aad61 100644 --- a/Doc/library/pathlib.rst +++ b/Doc/library/pathlib.rst @@ -337,7 +337,7 @@ Pure paths provide the following methods and properties: PureWindowsPath('c:/') .. versionchanged:: 3.10 - Slice support was added. + The parents sequence now supports :term:`slices <slice>` and negative index values. .. data:: PurePath.parent diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index ce66b1de1b..f3e433abf0 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -247,9 +247,13 @@ pipe. (Contributed by Pablo Galindo in :issue:`41625`.) pathlib ------- -Added slice support to :meth:`~pathlib.Path.parents`. +Added slice support to :attr:`PurePath.parents <pathlib.PurePath.parents>`. (Contributed by Joshua Cannon in :issue:`35498`) +Added negative indexing support to :attr:`PurePath.parents +<pathlib.PurePath.parents>`. +(Contributed by Yaroslav Pankovych in :issue:`21041`) + py_compile ---------- diff --git a/Lib/pathlib.py b/Lib/pathlib.py index af310393c3..531a699a40 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -632,7 +632,8 @@ class _PathParents(Sequence): def __getitem__(self, idx): if isinstance(idx, slice): return tuple(self[i] for i in range(*idx.indices(len(self)))) - if idx < 0 or idx >= len(self): + + if idx >= len(self) or idx < -len(self): raise IndexError(idx) return self._pathcls._from_parsed_parts(self._drv, self._root, self._parts[:-idx - 1]) diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index f1451796b6..5e5e065b98 100644 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -440,6 +440,9 @@ class _BasePurePathTest(object): self.assertEqual(par[0], P('a/b')) self.assertEqual(par[1], P('a')) self.assertEqual(par[2], P('.')) + self.assertEqual(par[-1], P('.')) + self.assertEqual(par[-2], P('a')) + self.assertEqual(par[-3], P('a/b')) self.assertEqual(par[0:1], (P('a/b'),)) self.assertEqual(par[:2], (P('a/b'), P('a'))) self.assertEqual(par[:-1], (P('a/b'), P('a'))) @@ -448,7 +451,7 @@ class _BasePurePathTest(object): self.assertEqual(par[::-1], (P('.'), P('a'), P('a/b'))) self.assertEqual(list(par), [P('a/b'), P('a'), P('.')]) with self.assertRaises(IndexError): - par[-1] + par[-4] with self.assertRaises(IndexError): par[3] with self.assertRaises(TypeError): @@ -1283,6 +1283,7 @@ Michael Otteneder Richard Oudkerk Russel Owen Joonas Paalasmaa +Yaroslav Pankovych Martin Packman Elisha Paine Shriphani Palakodety diff --git a/Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst b/Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst index fb24ce027c..1ab0093fcd 100644 --- a/Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst +++ b/Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst @@ -1 +1 @@ -Add slice support to :meth:`~pathlib.Path.parents`. +Add slice support to :attr:`pathlib.PurePath.parents`. diff --git a/Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst b/Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst new file mode 100644 index 0000000000..4f14fd39d8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst @@ -0,0 +1 @@ +:attr:`pathlib.PurePath.parents` now supports negative indexing. Patch contributed by Yaroslav Pankovych. |
