Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
MNT: Use a context manager to change the norm in colorbar code#22523
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
Uh oh!
There was an error while loading.Please reload this page.
Conversation
lib/matplotlib/colorbar.py Outdated
return (X, Y, extendlen) | ||
else: | ||
return (Y, X, extendlen) | ||
with self.norm.callbacks.blocked(), \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I guess maybe we should move this inside theelse
below? Also why do you need to use setattr_cm here? Maybe a comment?
I guess I am still confused why we need adeepcopy
here versus just a shallowcopy
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Good call on moving this to within the else. I just did that and added some more verbose comments.
The reason we don't want a copy is that there are signals attached to the norm to keep it in sync with the scalar mappable and autoscale_None machinery, so doing a temporary update would fire those signals and potentially propagate some unwanted changes or double update some features. The context manager is a nice way of doing the temporary update without needing to make a full copy.
This removes a deepcopy of the norm in Colorbar, instead updatingthe vmin/vmax via the context manager and ignoring anycallback updates in the process.
7d35771
tofdb4ad3
Compare
PR Summary
This removes a deepcopy of the norm in Colorbar, instead updating
the vmin/vmax via the context manager and ignoring any
callback updates in the process.
xref:#22313
PR Checklist
Tests and Styling
pytest
passes).flake8-docstrings
and runflake8 --docstring-convention=all
).Documentation
doc/users/next_whats_new/
(follow instructions in README.rst there).doc/api/next_api_changes/
(follow instructions in README.rst there).