Skip to content

Commit

Permalink
Merge pull request #2427 from hroncok/py37
Browse files Browse the repository at this point in the history
prettytoml: Catch StopIteration in AbstractTable._enumerate_items
  • Loading branch information
techalchemy authored Jun 26, 2018
2 parents 04b709f + d14df0c commit fa7e27e
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
1 change: 1 addition & 0 deletions news/2426.vendor
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add patch to ``prettytoml`` to support Python 3.7.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ index c9804ab5..89c95c45 100644
pass

# Check glibc version. CentOS 5 uses glibc 2.5.
- return pipenv.patched.notpip._internal.utils.glibc.have_compatible_glibc(2, 5)
- return pip._internal.utils.glibc.have_compatible_glibc(2, 5)
+ return pipenv.patched.notpip._internal.utils.glibc.have_compatible_glibc(2, 5)


Expand Down
32 changes: 32 additions & 0 deletions tasks/vendoring/patches/patched/prettytoml-python37.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From c44f2126fb5c75a5f5afd9d320c9f6cfc4ce3384 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Tue, 26 Jun 2018 21:02:45 +0200
Subject: [PATCH] Catch StopIteration in AbstractTable._enumerate_items

This makes PEP 479 enabled Pythons (such as 3.7) work again.

Otherwise you get:

RuntimeError: generator raised StopIteration

Fixes https://github.com/pypa/pipenv/issues/2426
---
pipenv/patched/prettytoml/elements/abstracttable.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/pipenv/patched/prettytoml/elements/abstracttable.py b/pipenv/patched/prettytoml/elements/abstracttable.py
index 59fd574..627da0e 100644
--- a/pipenv/patched/prettytoml/elements/abstracttable.py
+++ b/pipenv/patched/prettytoml/elements/abstracttable.py
@@ -19,7 +19,10 @@ def _enumerate_items(self):
"""
non_metadata = self._enumerate_non_metadata_sub_elements()
while True:
- yield next(non_metadata), next(non_metadata)
+ try:
+ yield next(non_metadata), next(non_metadata)
+ except StopIteration:
+ return

def items(self):
for (key_i, key), (value_i, value) in self._enumerate_items():

0 comments on commit fa7e27e

Please sign in to comment.