microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
164.21k stars 29.29k forks source link

enable contributions for data viewers through notebook variables view #203054

Closed amunger closed 8 months ago

amunger commented 9 months ago

similar to the 'open in data viewer' command from the jupyter variables view, we should allow extensions to contribute a view for a variables for specific language/types on the built in tree view.

davidanthoff commented 9 months ago

That would essentially be number 6 in this screenshot from the Julia extension https://github.com/microsoft/vscode/issues/165445#issuecomment-1325708418, right?

amunger commented 9 months ago

Same idea, either with an icon like that or through the context menu on that item. In the jupyter extension's case, we are planning to allow contributions for data viewers from extensions that didn't necessarily provide the variables.

davidanthoff commented 9 months ago

Cool. I think icon and context menu would be great ;)

It might also make sense to think a bit ahead there: there are probably some kind of viewers that are relevant for a lot of languages (tabular data, plots) and others that are very language specific. From our end, we would love it if VS Code at some point gained a generic tabular viewer, and a plot viewer that we could utilize and get rid of our custom implementations as well :) So maybe some kind of API design where in the future one could hook into a as of yet not existing generic tabular/plot viewer.

amunger commented 9 months ago

Example implementation here https://github.com/microsoft/vscode-extension-samples/tree/aamunger/notebookVariableCommand/notebook-variable-visualizer

The menu contribution point name will likely change names when we expand the usage beyond notebooks, but any needed migration will be pretty straight forward.

DonJayamanne commented 8 months ago

@amunger I created a sample extension and cannot see any variables showing up. Do I need to enable something in VS Code for this feature to work. I couldn't find any settings/experiments that had to be enabled for this.

DonJayamanne commented 8 months ago

Found that I needed to enable a VS Code experiment (I was looking for Jupyter experiments). Not sure the API is useful in its current form. Currently when i create a viewer for DataFrames, lists, objects, anything I do not get the name of the variable. Hence I have no idea what I'm looking at, all I get is a value, and thats basically a stringified version of the value.

Thus its not really possible to create any viewer, unless of course I'm missing something here.

rzhao271 commented 8 months ago

Moving to March for now. Feel free to move back to February if the issue has been verified or once steps are provided and the issue is verifiable in the latest Insiders.

Edit: I confirmed using the sample extension that the viewer does not report the variable name.

amunger commented 7 months ago

verification:

  1. make sure you have jupyter and python extensions enabled
  2. enable the notebook variable view "notebook.experimental.variablesView": true
  3. use the sample extension or create your own
  4. run some notebook cells that create variables and open the debug sidebar to see the notebook variable view
  5. ensure that the command contributed to the notebook/variables/context menu is provided information about the variable (expression should be the expression that would access that variable)