Skip to content

Latest commit

 

History

History
71 lines (57 loc) · 2.08 KB

File metadata and controls

71 lines (57 loc) · 2.08 KB
title Debugger support to `copyToGlobals`
authors Nicolas Brichet (@brichet)
issue-number xxx
pr-number 93
date-started 2023-02-20

Debugger support to copyToGlobals

Summary

This JEP introduces a new field to the kernel debugger_info response. This new field will inform the UI that the debugger supports the copyToGlobals request.

Motivation

The copyToGlobals request has been introduced in ipykernel and in xeus-python to copy a local variable to the global scope during a breakpoint. It would be useful to inform the UI if this is supported by the kernel before displaying the corresponding menu entry.

Proposed Enhancement

We propose to add a new copyToGlobals boolean field to the debugger_info response which will inform the UI that this request is supported.

Reference-level explanation

This boolean flag should be included in the debugger_info response from the kernel which supports the feature. It is optional, assuming that its absence is understood as false from the client perspective.

If the feature is supported, the kernel must provide a function for copying a variable from a local scope to the global scope. The communication between the UI and the kernel (request - response) will have the structures described at https://jupyter-client.readthedocs.io/en/latest/messaging.html#copytoglobals.

  • Request (from UI to kernel)

    {
      'type': 'request',
      'command': 'copyToGlobals',
      'arguments': {
        # the variable to copy from the frame corresponding to `srcFrameId`
        'srcVariableName': str,
        'srcFrameId': int,
        # the copied variable name in the global scope
        'dstVariableName': str
      }
    }
  • Response (from kernel to UI)

    {
      'type': 'response',
      'success': bool,
      'command': 'setExpression',
      'body': {
        # string representation of the copied variable
        'value': str,
        # type of the copied variable
        'type': str,
        'variablesReference': int
      }
    }