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
|
return default
|
||||||
|
|
||||||
|
|
||||||
from collections import Mapping, Sequence
|
from collections import Mapping, Sequence, ItemsView
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from typeutils import make_sentinel
|
from typeutils import make_sentinel
|
||||||
|
@ -603,9 +603,9 @@ def default_handle_item(key, value):
|
||||||
def default_handle_push(key, iterable):
|
def default_handle_push(key, iterable):
|
||||||
# print 'handle_push(%r, %r)' % (key, iterable)
|
# print 'handle_push(%r, %r)' % (key, iterable)
|
||||||
if isinstance(iterable, Mapping):
|
if isinstance(iterable, Mapping):
|
||||||
return iterable.items()
|
return ItemsView(iterable)
|
||||||
elif isinstance(iterable, Sequence):
|
elif isinstance(iterable, Sequence):
|
||||||
return list(enumerate(iterable))
|
return enumerate(iterable)
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -663,7 +663,7 @@ def remap(root,
|
||||||
registry[id(value)] = new_items_stack[-1]
|
registry[id(value)] = new_items_stack[-1]
|
||||||
stack.append((_POP, (key, value)))
|
stack.append((_POP, (key, value)))
|
||||||
if new_items:
|
if new_items:
|
||||||
stack.extend(reversed(new_items))
|
stack.extend(reversed(list(new_items)))
|
||||||
continue
|
continue
|
||||||
handled_item = handle_item(key, value)
|
handled_item = handle_item(key, value)
|
||||||
if handled_item is False:
|
if handled_item is False:
|
||||||
|
|
|
@ -69,7 +69,7 @@ class TestRemap(object):
|
||||||
assert orig['c']['d'] == remapped['C']['D']
|
assert orig['c']['d'] == remapped['C']['D']
|
||||||
|
|
||||||
def test_item_drop(self):
|
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))
|
even_items = remap(orig, lambda k, v: not (v % 2))
|
||||||
assert even_items == [0, 2, 4, 6, 8]
|
assert even_items == [0, 2, 4, 6, 8]
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ class TestRemap(object):
|
||||||
remap([], handle_pop='test')
|
remap([], handle_pop='test')
|
||||||
|
|
||||||
def test_selfref(self):
|
def test_selfref(self):
|
||||||
selfref = range(4)
|
selfref = [0, 1, 2, 3]
|
||||||
selfref.append(selfref)
|
selfref.append(selfref)
|
||||||
assert selfref == remap(selfref)
|
assert selfref == remap(selfref)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue