Recurive wildcard produces a StopIteration exception when called on objects containing iterators #254
Open
Description
Hello,
I am trying to use the recursive wildcard feature on a nested dictionary. Some of the objects in the dictionary have attributes which are iterators. However, after the glom search the iterators produce a StopIteration
exception on the next call to next
. I have produced a minimal example below:
import glom
import pprint
class MyData:
def __init__(self):
self.data = iter([1,2,3])
b = MyData()
target = {"A": {"b": b}}
spec = "A.**"
result = glom.glom(target, spec)
pprint.pprint(result)
next(b.data)
Which produces:
[{'b': <__main__.MyData object at 0x7f7b06390550>},
<__main__.MyData object at 0x7f7b06390550>,
<list_iterator object at 0x7f7b06390f70>,
1,
2,
3]
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
Cell In[48], line 6
4 result = glom.glom(target, spec)
5 pprint.pprint(result)
----> 6 next(my_iter.data)
StopIteration:
Is this the excepted behaviour? If so, is it possible to limit how far the recursion goes? I would like to be able to limit it to only look inside the nested dictionary and not the objects contained within.
Many thanks,
Lewis
Metadata
Assignees
Labels
No labels