-
Notifications
You must be signed in to change notification settings - Fork 13
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
Make possible to use one-shot iterators as children nodes. #71
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@pelme just saw your PR. Your decision to stay lazy during the validation is great! It always good to be able to decide when we want to be lazy and when we should be eager (and force lazy stuff with |
Fixed in #72. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For now we cannot use iterators like
itertools.chain
as child nodes, because_validate_children
exhaust such iterators just before the parent node construction. The result looks like original sequences were empty. Yes, user could applylist()
such iterators but then the code would look pretty noisy.I propose to "materialise" as lists such iterators, because we would reuse them anyway during the HTML rendering. We can use the
itertools.tee
and fork eachIterator
before validation. Though, such forking would mean the same materialisation under the hood, but at the same time the code would look a way more complicated.