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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
More complete mime hook API for inspector? #14339
Comments
Probably passing a dataclass to the hook would be best because this allows to add and deprecate fields without breaking compatibility. |
Carreau
added a commit
that referenced
this issue
Feb 20, 2024
Fixes #14339 ### Additions Adds `InfoDict` type to improve the typing of `info()` result. Adds missing `"subclasses"` to `info_fields` list (these were added to the field list in #11486 but we forgot to update `info_fields` variable at the time) - the newly added `InfoDict` type will ensure that this won't happen again. Adds `InspectorHookData` dataclass which is passed to the MIME hooks which now should expect a single argument. Having a single dataclass argument enables us to deprecate individual fields, or add new fields without breaking the existing hooks. The old hooks will still work (if any are out there since this mechanism got just added in the previous point version). ### Deletions A comment over `info_fields` gets deleted: - Contrarily to the comment (which is getting deleted in this PR), `info_fields` were not defining the order of display since at least 2015 (#7903 - I did not feel the need to go further in the history to find when exactly it happened). - Also contrarily to this comment, current Jupyter messaging spec does not define the contents of `info_fields` (I guess this was lost during IPython/Jupyter split), but the newly added `InfoDict` at least properly annotates their type (if you know where I can find the old IPython messaging spec with the descriptions I can add these as doc comments). Unused `cast_unicode` import gets deleted. If someone imported it from here... well they really should not have. ### Deprecations - mime hooks taking two arguments (`obj, info`)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Right now mime hooks get two arguments:
obj
andinfo
.ipython/IPython/core/oinspect.py
Lines 764 to 772 in e60c06a
This feels redundant because
info
includesinfo.obj == obj
. There is noinfo_dict
but downstream could just call.info()
, but there is nodetail_level
so all mime hooks have to return the same result forobj?
andobj??
. I am not sure ifomit_sections
should be passed to, it does not appear crucial though.I think passing
detail_level
is uncontroversial. What do you think about passinginfo_dict
too?The text was updated successfully, but these errors were encountered: