Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Creation of the Norm Protocol#30149
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
base:main
Are you sure you want to change the base?
Conversation
classNorm(Protocol): | ||
callbacks:cbook.CallbackRegistry | ||
@property | ||
defvmin(self)->float|None: ... |
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.
Wouldn't we need something like this to support MultiNorm?
defvmin(self)->float|None: ... | |
defvmin(self)->float|ArrayLike|None: ... |
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.
Yes,
My logic was to get this into main first, and then change this with the MultiNorm PR, but I guess it is easier if I do it here. I will try to find the time early next week.
Is this PR otherwise as you would expect?
This PR is a response to a discussion in the past weeks weekly developer meeting regarding the creation of a Norm protocol before the introduction of MultiNorm#29876 (comment)
Prior to this PR there are no Protocols in matplotlib.
This implementation uses
@runtime_checkable
so thatColorizer.set_norm()
can check_api.check_isinstance((colors.Norm, str, None), norm=norm)
Note that the error message if the class one attempts to use is missing a member, is just the standard wrong-type message, and does not tell you what member of the protocol is missing.
@timhoffm@tacaswell@ksunden@story645
The implementation looks like this:
and some of the docstrings will need to be updated to also allow for MultiNorm, but this can happen in the next PR.
This requires a lot more than the bare minimum. I tested, and I can do a
plt.imshow()
with just__call__
andautoscale_None
, but I get the feeling that it is desirable to lock it down more.