Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Simplify transforms invalidation system.#25282
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Merged
+29 −41
Conversation
This file contains hidden or 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
The INVALID_NON_AFFINE state is never used, except at init, but there itcan be replaced by a fully invalid state (the difference is that callsto invalidate() will not be propagated, but that's OK because any(necessarily new) dependent of the new node will also already be in aninvalid state as well).Thus, for clarity, replace the 4 possible values of `._invalid` (0-3) byonly 3 values (0-2), and get rid of bit-twiddling inTransformedPath._revalidate. Also rename "value" to (invalidation)"level", invert the logic in _invalidate_internal (I find the new ordereasier to follow), and get rid of a seemingly incorrect statement aboutinvalidation stickiness (as far as I can tell, once a node has beenrevalidated (`._invalid = 0`), it can again be invalidated asaffine_only).
tacaswell approved these changesFeb 22, 2023
jklymak approved these changesFeb 22, 2023
6 tasks
Sign up for freeto 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.
The INVALID_NON_AFFINE state is never used, except at init, but there it can be replaced by a fully invalid state (the difference is that calls to invalidate() will not be propagated, but that's OK because any (necessarily new) dependent of the new node will also already be in an invalid state as well).
Thus, for clarity, replace the 4 possible values of
._invalid
(0-3) by only 3 values (0-2), and get rid of bit-twiddling in TransformedPath._revalidate. Also rename "value" to (invalidation) "level", invert the logic in _invalidate_internal (I find the new order easier to follow), and get rid of a seemingly incorrect statement about invalidation stickiness (as far as I can tell, once a node has been revalidated (._invalid = 0
), it can again be invalidated as affine_only).PR Summary
PR Checklist
Documentation and Tests
pytest
passes)Release Notes
.. versionadded::
directive in the docstring and documented indoc/users/next_whats_new/
.. versionchanged::
directive in the docstring and documented indoc/api/next_api_changes/
next_whats_new/README.rst
ornext_api_changes/README.rst