remap: work around Python 3 garbage

This commit is contained in:
Mahmoud Hashemi 2015-09-17 00:59:07 -07:00
parent 111bf6b15d
commit 2b9b6d5988
2 changed files with 6 additions and 6 deletions

View File

@ -586,7 +586,7 @@ def first(iterable, default=None, key=None):
return default
from collections import Mapping, Sequence
from collections import Mapping, Sequence, ItemsView
try:
from typeutils import make_sentinel
@ -603,9 +603,9 @@ def default_handle_item(key, value):
def default_handle_push(key, iterable):
# print 'handle_push(%r, %r)' % (key, iterable)
if isinstance(iterable, Mapping):
return iterable.items()
return ItemsView(iterable)
elif isinstance(iterable, Sequence):
return list(enumerate(iterable))
return enumerate(iterable)
else:
return False
@ -663,7 +663,7 @@ def remap(root,
registry[id(value)] = new_items_stack[-1]
stack.append((_POP, (key, value)))
if new_items:
stack.extend(reversed(new_items))
stack.extend(reversed(list(new_items)))
continue
handled_item = handle_item(key, value)
if handled_item is False:

View File

@ -69,7 +69,7 @@ class TestRemap(object):
assert orig['c']['d'] == remapped['C']['D']
def test_item_drop(self):
orig = range(10)
orig = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
even_items = remap(orig, lambda k, v: not (v % 2))
assert even_items == [0, 2, 4, 6, 8]
@ -82,7 +82,7 @@ class TestRemap(object):
remap([], handle_pop='test')
def test_selfref(self):
selfref = range(4)
selfref = [0, 1, 2, 3]
selfref.append(selfref)
assert selfref == remap(selfref)