MNT: Use a context manager to change the norm in colorbar code#22523
Conversation
| return (X, Y, extendlen) | ||
| else: | ||
| return (Y, X, extendlen) | ||
| with self.norm.callbacks.blocked(), \ |
There was a problem hiding this comment.
I guess maybe we should move this inside the else below? Also why do you need to use setattr_cm here? Maybe a comment?
I guess I am still confused why we need a deepcopy here versus just a shallow copy.
There was a problem hiding this comment.
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 updating the vmin/vmax via the context manager and ignoring any callback updates in the process.
7d35771 to
fdb4ad3
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
pytestpasses).flake8-docstringsand 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).