Fix issue resolving tuple with object attributes. Fixes #1277 (#1286)

This commit is contained in:
Fabio Zadrozny 2019-04-01 16:55:06 -03:00 committed by Karthik Nadig
parent a2e7fd1c90
commit 079eb3eaff
2 changed files with 20 additions and 3 deletions

View file

@ -369,7 +369,7 @@ class TupleResolver: # to enumerate tuples and lists
ret.append(('__len__', len(lst), partial(_apply_evaluate_name, evaluate_name='len(%s)')))
# Needed in case the class extends the built-in type and has some additional fields.
from_default_resolver = defaultResolver.get_dictionary(lst)
from_default_resolver = defaultResolver.get_contents_debug_adapter_protocol(lst, fmt=fmt)
if from_default_resolver:
ret = from_default_resolver + ret
return ret

View file

@ -21,6 +21,7 @@ def test_dict_resolver():
assert contents_debug_adapter_protocol == [
("'22'", 22, "['22']"), ('(1, 2)', 2, '[(1, 2)]')]
def test_dict_resolver_hex():
from _pydevd_bundle.pydevd_resolver import DictResolver
dict_resolver = DictResolver()
@ -140,7 +141,7 @@ def test_django_forms_resolver():
def test_tuple_resolver():
from _pydevd_bundle.pydevd_resolver import TupleResolver
tuple_resolver = TupleResolver()
fmt={'hex': True}
fmt = {'hex': True}
lst = tuple(range(11))
contents_debug_adapter_protocol = tuple_resolver.get_contents_debug_adapter_protocol(lst)
len_entry = contents_debug_adapter_protocol.pop(-1)
@ -278,4 +279,20 @@ def test_tuple_resolver():
'0x8': 8,
'0x9': 9,
'__len__': 10
}
}
def test_tuple_resolver_mixed():
from _pydevd_bundle.pydevd_resolver import TupleResolver
tuple_resolver = TupleResolver()
class CustomTuple(tuple):
pass
my_tuple = CustomTuple([1, 2])
my_tuple.some_value = 10
contents_debug_adapter_protocol = tuple_resolver.get_contents_debug_adapter_protocol(my_tuple)
len_entry = contents_debug_adapter_protocol.pop(-1)
check_len_entry(len_entry, ('__len__', 2))
assert contents_debug_adapter_protocol == [
('some_value', 10, '.some_value'), ('0', 1, '[0]'), ('1', 2, '[1]'), ]