mirror of https://github.com/mahmoud/boltons.git
remap: work around Python 3 garbage
This commit is contained in:
parent
111bf6b15d
commit
2b9b6d5988
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue