MRG: fix exponential time explosion in sig check
#2762
Merged
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.
Fixes #2646.
Embarrassing "let's make things run really slow" typo of the month... fixed!
In brief, the following code in
manifest.py
was causing an exponential explosion in time cost:when called many times on a single row, because each addition of a row triggered an iteration over ALL rows.
This PR changes things so that we do
for row in rows:
.Additional complexity => new tests to deal explicitly with the case where
rows
is a generator (which it turns out it often is, breaking dozens of tests when not accounted for)