-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Recurive wildcard produces a StopIteration exception when called on objects containing iterators #254
Comments
That is kind of expected behavior. If know the depth that you want to go, a
Ref('unpack',
Match(
Switch({
dict: Auto('*'), # only go 1 level on dicts
object: Auto(('*', Flatten([Ref('unpack'])) # for everything else, recurse and combine results into one iterable
}))
) Another possibility is to use the TargetRegistry to override default behaviors: https://glom.readthedocs.io/en/latest/api.html#setup-and-registration But, honestly, I think you are better off using a custom self-recursive function if you need to get really fine-grained about when you do and don't want to iterate. |
Cheers, I will have a look into the example you gave. I think on reflection limiting the API to my application is going to be the solution. |
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 tonext
. I have produced a minimal example below:Which produces:
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
The text was updated successfully, but these errors were encountered: