Skip to content

Commit b1dabab

Browse files
author
Scott Sanderson
authored
Merge pull request #26 from doctaphred/fix-deprecated-stopiteration
MAINT: Use built-in zip_longest and izip_longest
2 parents b329e97 + a28e700 commit b1dabab

File tree

1 file changed

+2
-28
lines changed

1 file changed

+2
-28
lines changed

interface/compat.py

+2-28
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import functools
22
import sys
3-
from itertools import repeat
43

54
version_info = sys.version_info
65

76
PY2 = version_info.major == 2
87
PY3 = version_info.major == 3
98

109
if PY2: # pragma: nocover-py3
10+
from itertools import izip_longest as zip_longest
1111
from funcsigs import signature, Parameter
1212

1313
@functools.wraps(functools.wraps)
@@ -48,6 +48,7 @@ def _is_wrapper(f):
4848

4949
else: # pragma: nocover-py2
5050
from inspect import signature, Parameter, unwrap
51+
from itertools import zip_longest
5152

5253
wraps = functools.wraps
5354

@@ -58,33 +59,6 @@ def viewkeys(d):
5859
return d.keys()
5960

6061

61-
def zip_longest(left, right):
62-
"""Simple zip_longest that only supports two iterators and None default.
63-
"""
64-
left = iter(left)
65-
right = iter(right)
66-
left_done = False
67-
right_done = False
68-
while True:
69-
try:
70-
left_yielded = next(left)
71-
except StopIteration:
72-
left_done = True
73-
left_yielded = None
74-
left = repeat(None)
75-
try:
76-
right_yielded = next(right)
77-
except StopIteration:
78-
right_done = True
79-
right_yielded = None
80-
right = repeat(None)
81-
82-
if left_done and right_done:
83-
break
84-
85-
yield left_yielded, right_yielded
86-
87-
8862
# Taken from six version 1.10.0.
8963
def with_metaclass(meta, *bases):
9064
"""Create a base class with a metaclass."""

0 commit comments

Comments
 (0)