We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents 3321e22 + d5bffc9 commit e6df7a6Copy full SHA for e6df7a6
fn/iters.py
@@ -219,9 +219,10 @@ def flatten(items):
219
220
http://docs.python.org/3.4/library/itertools.html#itertools-recipes
221
"""
222
+ str_type = basestring if version_info[0] < 3 else str
223
for item in items:
224
is_iterable = isinstance(item, Iterable)
- is_string_or_bytes = isinstance(item, (str, bytes, bytearray))
225
+ is_string_or_bytes = isinstance(item, (str_type, bytes, bytearray))
226
if is_iterable and not is_string_or_bytes:
227
for i in flatten(item):
228
yield i
tests.py
@@ -621,11 +621,13 @@ def test_flatten(self):
621
self.assertEqual([1,1,2,1,2,3], list(iters.flatten(generators)))
622
# flat list should return itself
623
self.assertEqual([1,2,3], list(iters.flatten([1,2,3])))
624
- # Don't flatten strings, bytes, or bytearrays
+ # Don't flatten strings/unicode, bytes, or bytearrays
625
self.assertEqual([2,"abc",1], list(iters.flatten([2,"abc",1])))
626
self.assertEqual([2, b'abc', 1], list(iters.flatten([2, b'abc', 1])))
627
self.assertEqual([2, bytearray(b'abc'), 1],
628
list(iters.flatten([2, bytearray(b'abc'), 1])))
629
+ self.assertEqual([bytearray(b'abc'), b'\xd1\x8f'.decode('utf8'), b'y'],
630
+ list(iters.flatten([bytearray(b'abc'), b'\xd1\x8f'.decode('utf8'), b'y'])))
631
632
def test_accumulate(self):
633
self.assertEqual([1,3,6,10,15], list(iters.accumulate([1,2,3,4,5])))
0 commit comments