diff --git a/ipykernel/ipkernel.py b/ipykernel/ipkernel.py index 2cc8eab54..bb50c04cc 100644 --- a/ipykernel/ipkernel.py +++ b/ipykernel/ipkernel.py @@ -459,19 +459,27 @@ def _experimental_do_complete(self, code, cursor_pos): 'metadata': {_EXPERIMENTAL_KEY_NAME: comps}, 'status': 'ok'} - def do_inspect(self, code, cursor_pos, detail_level=0): + def do_inspect(self, code, cursor_pos, detail_level=0, omit_sections=()): name = token_at_cursor(code, cursor_pos) reply_content = {'status' : 'ok'} reply_content['data'] = {} reply_content['metadata'] = {} try: - reply_content['data'].update( - self.shell.object_inspect_mime( + if release.version_info >= (8,): + # `omit_sections` keyword will be available in IPython 8, see + # https://github.com/ipython/ipython/pull/13343 + bundle = self.shell.object_inspect_mime( + name, + detail_level=detail_level, + omit_sections=omit_sections, + ) + else: + bundle = self.shell.object_inspect_mime( name, detail_level=detail_level ) - ) + reply_content['data'].update(bundle) if not self.shell.enable_html_pager: reply_content['data'].pop('text/html') reply_content['found'] = True diff --git a/ipykernel/kernelbase.py b/ipykernel/kernelbase.py index bfd107127..a0a7c98e2 100644 --- a/ipykernel/kernelbase.py +++ b/ipykernel/kernelbase.py @@ -702,6 +702,7 @@ async def inspect_request(self, stream, ident, parent): reply_content = self.do_inspect( content['code'], content['cursor_pos'], content.get('detail_level', 0), + set(content.get('omit_sections', [])), ) if inspect.isawaitable(reply_content): reply_content = await reply_content @@ -712,7 +713,7 @@ async def inspect_request(self, stream, ident, parent): reply_content, parent, ident) self.log.debug("%s", msg) - def do_inspect(self, code, cursor_pos, detail_level=0): + def do_inspect(self, code, cursor_pos, detail_level=0, omit_sections=()): """Override in subclasses to allow introspection. """ return {'status': 'ok', 'data': {}, 'metadata': {}, 'found': False}