Skip to content

Commit b993b34

Browse files
authored
Port joyceerhl's commits from vscode-python since the split to vscode-jupyter (#194)
* Fix sample notebook to state that you can double click to edit a cell (#14238) * Disable surveys if running in codespaces (#14332) * Disable surveys if running in codespaces * Disable gather survey in codespaces too * For gather, show a description without the survey * Fixes for IW tests where UIKind is not defined * Fix all the tests where UIKind is not defined * Appease hygiene * Disable mailing list if running in Codespaces (#14347) * Show tensor dimensions in variable explorer (#14244) * Fix markdown cell marker formatting for export to Python (#14360)
1 parent abdb271 commit b993b34

File tree

15 files changed

+70
-17
lines changed

15 files changed

+70
-17
lines changed

.github/dependabot.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ updates:
44
directory: /
55
schedule:
66
interval: daily
7+
labels:
8+
- 'skip news'
79

810
- package-ecosystem: 'pip'
911
directory: /
@@ -14,6 +16,8 @@ updates:
1416
directory: /news
1517
schedule:
1618
interval: monthly
19+
labels:
20+
- 'skip news'
1721
# Activate when we feel ready to keep up with frequency.
1822
# - package-ecosystem: 'npm'
1923
# directory: /

news/2 Fixes/14359.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix markdown cell marker when exporting a notebook to a Python script.

package.nls.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,8 +513,10 @@
513513
"DataScience.findJupyterCommandProgressCheckInterpreter": "Checking {0}.",
514514
"DataScience.findJupyterCommandProgressSearchCurrentPath": "Searching current path.",
515515
"DataScience.gatherError": "Gather internal error",
516-
"DataScience.gatheredScriptDescription": "# This file was generated by the Gather Extension.\n# It requires version 2020.7.94776 (or newer) of the Jupyter Extension.\n#\n# The intent is that it contains only the code required to produce\n# the same results as the cell originally selected for gathering.\n# Please note that the Python analysis is quite conservative, so if\n# it is unsure whether a line of code is necessary for execution, it\n# will err on the side of including it.\n#\n# Please let us know if you are satisfied with what was gathered here:\n# https://aka.ms/gatherfeedback\n\n",
517-
"DataScience.gatheredNotebookDescriptionInMarkdown": "## Gathered Notebook\nGathered from ```{0}```\n\n| | |\n|---|---|\n|  &nbsp|This notebook was generated by the Gather Extension. It requires version 2020.7.94776 (or newer) of the Jupyter Extension, please update [here](https://command:jupyter.latestExtension). The intent is that it contains only the code and cells required to produce the same results as the cell originally selected for gathering. Please note that the Python analysis is quite conservative, so if it is unsure whether a line of code is necessary for execution, it will err on the side of including it.|\n\n**Are you satisfied with the code that was gathered?**\n\n[Yes](https://command:jupyter.gatherquality?yes) [No](https://command:jupyter.gatherquality?no)",
516+
"DataScience.gatheredScriptDescription": "# This file was generated by the Gather Extension.\n# It requires version 2020.7.94776 (or newer) of the Python Extension.\n#\n# The intent is that it contains only the code required to produce\n# the same results as the cell originally selected for gathering.\n# Please note that the Python analysis is quite conservative, so if\n# it is unsure whether a line of code is necessary for execution, it\n# will err on the side of including it.\n#\n# Please let us know if you are satisfied with what was gathered here:\n# https://aka.ms/gatherfeedback\n\n",
517+
"DataScience.gatheredNotebookDescriptionInMarkdown": "## Gathered Notebook\nGathered from ```{0}```\n\n| | |\n|---|---|\n|  &nbsp|This notebook was generated by the Gather Extension. It requires version 2020.7.94776 (or newer) of the Python Extension, please update [here](https://command:python.datascience.latestExtension). The intent is that it contains only the code and cells required to produce the same results as the cell originally selected for gathering. Please note that the Python analysis is quite conservative, so if it is unsure whether a line of code is necessary for execution, it will err on the side of including it.|\n\n**Are you satisfied with the code that was gathered?**\n\n[Yes](https://command:python.datascience.gatherquality?yes) [No](https://command:python.datascience.gatherquality?no)",
518+
"DataScience.gatheredScriptDescriptionWithoutSurvey": "# This file was generated by the Gather Extension.\n# It requires version 2020.7.94776 (or newer) of the Python Extension.\n#\n# The intent is that it contains only the code required to produce\n# the same results as the cell originally selected for gathering.\n# Please note that the Python analysis is quite conservative, so if\n# it is unsure whether a line of code is necessary for execution, it\n# will err on the side of including it.\n",
519+
"DataScience.gatheredNotebookDescriptionInMarkdownWithoutSurvey": "## Gathered Notebook\nGathered from ```{0}```\n\n| | |\n|---|---|\n|  &nbsp|This notebook was generated by the Gather Extension. It requires version 2020.7.94776 (or newer) of the Python Extension, please update [here](https://command:python.datascience.latestExtension). The intent is that it contains only the code and cells required to produce the same results as the cell originally selected for gathering. Please note that the Python analysis is quite conservative, so if it is unsure whether a line of code is necessary for execution, it will err on the side of including it.|\n\n",
518520
"DataScience.savePngTitle": "Save Image",
519521
"DataScience.jupyterSelectURIQuickPickTitle": "Pick how to connect to Jupyter",
520522
"DataScience.jupyterSelectURIQuickPickPlaceholder": "Choose an option",

pythonFiles/Notebooks intro.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
"\n",
6464
"You are currently viewing what we call our Notebook Editor. It is an interactive document based on Jupyter Notebooks that supports the intermixing of code, outputs and markdown documentation. \n",
6565
"\n",
66-
"This cell is a markdown cell. To edit the text in this cell, simply click on the cell to change it into edit mode.\n",
66+
"This cell is a markdown cell. To edit the text in this cell, simply double click on the cell to change it into edit mode.\n",
6767
"\n",
6868
"<p>The next cell below is a code cell. You can switch a cell between code and markdown by clicking on the code <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n",
6969
"<path style=\"fill: currentColor !important; fill-rule: evenodd !important; clip-rule: evenodd !important\" d=\"M6 2.98361V2.97184V2H5.91083C5.59743 2 5.29407 2.06161 5.00128 2.18473C4.70818 2.30798 4.44942 2.48474 4.22578 2.71498C4.00311 2.94422 3.83792 3.19498 3.73282 3.46766L3.73233 3.46898C3.63382 3.7352 3.56814 4.01201 3.53533 4.29917L3.53519 4.30053C3.50678 4.5805 3.4987 4.86844 3.51084 5.16428C3.52272 5.45379 3.52866 5.74329 3.52866 6.03279C3.52866 6.23556 3.48974 6.42594 3.412 6.60507L3.4116 6.60601C3.33687 6.78296 3.23423 6.93866 3.10317 7.07359C2.97644 7.20405 2.82466 7.31055 2.64672 7.3925C2.4706 7.46954 2.28497 7.5082 2.08917 7.5082H2V7.6V8.4V8.4918H2.08917C2.28465 8.4918 2.47001 8.53238 2.64601 8.61334L2.64742 8.61396C2.82457 8.69157 2.97577 8.79762 3.10221 8.93161L3.10412 8.93352C3.23428 9.0637 3.33659 9.21871 3.41129 9.39942L3.41201 9.40108C3.48986 9.58047 3.52866 9.76883 3.52866 9.96721C3.52866 10.2567 3.52272 10.5462 3.51084 10.8357C3.4987 11.1316 3.50677 11.4215 3.53516 11.7055L3.53535 11.7072C3.56819 11.9903 3.63387 12.265 3.73232 12.531L3.73283 12.5323C3.83793 12.805 4.00311 13.0558 4.22578 13.285C4.44942 13.5153 4.70818 13.692 5.00128 13.8153C5.29407 13.9384 5.59743 14 5.91083 14H6V13.2V13.0164H5.91083C5.71095 13.0164 5.52346 12.9777 5.34763 12.9008C5.17396 12.8191 5.02194 12.7126 4.89086 12.5818C4.76386 12.4469 4.66104 12.2911 4.58223 12.1137C4.50838 11.9346 4.47134 11.744 4.47134 11.541C4.47134 11.3127 4.4753 11.0885 4.48321 10.8686C4.49125 10.6411 4.49127 10.4195 4.48324 10.2039C4.47914 9.98246 4.46084 9.76883 4.42823 9.56312C4.39513 9.35024 4.33921 9.14757 4.26039 8.95536C4.18091 8.76157 4.07258 8.57746 3.93616 8.40298C3.82345 8.25881 3.68538 8.12462 3.52283 8C3.68538 7.87538 3.82345 7.74119 3.93616 7.59702C4.07258 7.42254 4.18091 7.23843 4.26039 7.04464C4.33913 6.85263 4.39513 6.65175 4.42826 6.44285C4.46082 6.2333 4.47914 6.01973 4.48324 5.80219C4.49127 5.58262 4.49125 5.36105 4.48321 5.13749C4.4753 4.9134 4.47134 4.68725 4.47134 4.45902C4.47134 4.26019 4.50833 4.07152 4.58238 3.89205C4.66135 3.71034 4.76421 3.55475 4.89086 3.42437C5.02193 3.28942 5.17461 3.18275 5.34802 3.10513C5.5238 3.02427 5.71113 2.98361 5.91083 2.98361H6ZM10 13.0164V13.0282V14H10.0892C10.4026 14 10.7059 13.9384 10.9987 13.8153C11.2918 13.692 11.5506 13.5153 11.7742 13.285C11.9969 13.0558 12.1621 12.805 12.2672 12.5323L12.2677 12.531C12.3662 12.2648 12.4319 11.988 12.4647 11.7008L12.4648 11.6995C12.4932 11.4195 12.5013 11.1316 12.4892 10.8357C12.4773 10.5462 12.4713 10.2567 12.4713 9.96721C12.4713 9.76444 12.5103 9.57406 12.588 9.39493L12.5884 9.39399C12.6631 9.21704 12.7658 9.06134 12.8968 8.92642C13.0236 8.79595 13.1753 8.68945 13.3533 8.6075C13.5294 8.53046 13.715 8.4918 13.9108 8.4918H14V8.4V7.6V7.5082H13.9108C13.7153 7.5082 13.53 7.46762 13.354 7.38666L13.3526 7.38604C13.1754 7.30844 13.0242 7.20238 12.8978 7.06839L12.8959 7.06648C12.7657 6.9363 12.6634 6.78129 12.5887 6.60058L12.588 6.59892C12.5101 6.41953 12.4713 6.23117 12.4713 6.03279C12.4713 5.74329 12.4773 5.45379 12.4892 5.16428C12.5013 4.86842 12.4932 4.57848 12.4648 4.29454L12.4646 4.29285C12.4318 4.00971 12.3661 3.73502 12.2677 3.46897L12.2672 3.46766C12.1621 3.19499 11.9969 2.94422 11.7742 2.71498C11.5506 2.48474 11.2918 2.30798 10.9987 2.18473C10.7059 2.06161 10.4026 2 10.0892 2H10V2.8V2.98361H10.0892C10.2891 2.98361 10.4765 3.0223 10.6524 3.09917C10.826 3.18092 10.9781 3.28736 11.1091 3.41823C11.2361 3.55305 11.339 3.70889 11.4178 3.88628C11.4916 4.0654 11.5287 4.25596 11.5287 4.45902C11.5287 4.68727 11.5247 4.91145 11.5168 5.13142C11.5088 5.35894 11.5087 5.58049 11.5168 5.79605C11.5209 6.01754 11.5392 6.23117 11.5718 6.43688C11.6049 6.64976 11.6608 6.85243 11.7396 7.04464C11.8191 7.23843 11.9274 7.42254 12.0638 7.59702C12.1765 7.74119 12.3146 7.87538 12.4772 8C12.3146 8.12462 12.1765 8.25881 12.0638 8.40298C11.9274 8.57746 11.8191 8.76157 11.7396 8.95536C11.6609 9.14737 11.6049 9.34825 11.5717 9.55715C11.5392 9.7667 11.5209 9.98027 11.5168 10.1978C11.5087 10.4174 11.5087 10.6389 11.5168 10.8625C11.5247 11.0866 11.5287 11.3128 11.5287 11.541C11.5287 11.7398 11.4917 11.9285 11.4176 12.1079C11.3386 12.2897 11.2358 12.4452 11.1091 12.5756C10.9781 12.7106 10.8254 12.8173 10.652 12.8949C10.4762 12.9757 10.2889 13.0164 10.0892 13.0164H10Z\"/>\n",

pythonFiles/tests/ipython/getJupyterVariableList.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
from IPython import get_ipython as _VSCODE_get_ipython
66

77
# _VSCode_supportsDataExplorer will contain our list of data explorer supported types
8-
_VSCode_supportsDataExplorer = "['list', 'Series', 'dict', 'ndarray', 'DataFrame']"
8+
_VSCode_supportsDataExplorer = (
9+
"['list', 'Series', 'dict', 'ndarray', 'DataFrame', 'Tensor']"
10+
)
911

1012
# who_ls is a Jupyter line magic to fetch currently defined vars
1113
_VSCode_JupyterVars = _VSCODE_get_ipython().run_line_magic("who_ls", "")

pythonFiles/vscode_datascience_helpers/dataframes/vscodeGetVariableInfo.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@
55
import builtins as _VSCODE_builtins
66
import vscodeDataFrameHelpers as _VSCODE_dataFrameHelpers
77

8+
9+
def _VSCODE_maybeParseTensorShape(var, result):
10+
try:
11+
vartype = type(var)
12+
if (hasattr(vartype, "__name__")) and vartype.__name__ == "Tensor":
13+
varshape = str(var.shape)
14+
start = varshape.index("[")
15+
end = varshape.index("]")
16+
if start > 0 and end > 0:
17+
res = "(" + varshape[start + 1 : end] + ")"
18+
result["shape"] = res
19+
except TypeError:
20+
pass
21+
22+
823
# Function to do our work. It will return the object
924
def _VSCODE_getVariableInfo(var):
1025
# Start out without the information
@@ -26,6 +41,7 @@ def _VSCODE_getVariableInfo(var):
2641
):
2742
result["shape"] = _VSCODE_shapeStr
2843
del _VSCODE_shapeStr
44+
_VSCODE_maybeParseTensorShape(var, result)
2945
except TypeError:
3046
pass
3147

pythonFiles/vscode_datascience_helpers/getJupyterVariableDataFrameInfo.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import builtins as _VSCODE_builtins
66

77
# _VSCode_sub_supportsDataExplorer will contain our list of data explorer supported types
8-
_VSCode_supportsDataExplorer = "['list', 'Series', 'dict', 'ndarray', 'DataFrame']"
8+
_VSCode_supportsDataExplorer = (
9+
"['list', 'Series', 'dict', 'ndarray', 'DataFrame', 'Tensor']"
10+
)
911

1012
# In IJupyterVariables.getValue this '_VSCode_JupyterTestValue' will be replaced with the json stringified value of the target variable
1113
# Indexes off of _VSCODE_targetVariable need to index types that are part of IJupyterVariable

src/client/application/misc/joinMailingListPrompt.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import { inject, injectable } from 'inversify';
55
import * as querystring from 'querystring';
6+
import { env, UIKind } from 'vscode';
67
import { IExtensionSingleActivationService } from '../../activation/types';
78
import { IApplicationEnvironment, IApplicationShell } from '../../common/application/types';
89
import { Experiments } from '../../common/experiments/groups';
@@ -28,9 +29,9 @@ export class JoinMailingListPrompt implements IExtensionSingleActivationService
2829

2930
public async activate(): Promise<void> {
3031
// Only show the prompt if we have never shown it before. True here, means we have
31-
// shown the prompt before.
32-
if (this.storage.value) {
33-
return Promise.resolve();
32+
// shown the prompt before. Also do not show the prompt if running in Codespaces.
33+
if (this.storage.value || env.uiKind === UIKind?.Web) {
34+
return;
3435
}
3536

3637
let promptContent: string | undefined;

src/client/common/utils/localize.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -765,10 +765,18 @@ export namespace DataScience {
765765
'DataScience.gatheredScriptDescription',
766766
'# This file was generated by the Gather Extension.\n# It requires version 2020.7.94776 (or newer) of the Jupyter Extension.\n#\n# The intent is that it contains only the code required to produce\n# the same results as the cell originally selected for gathering.\n# Please note that the Python analysis is quite conservative, so if\n# it is unsure whether a line of code is necessary for execution, it\n# will err on the side of including it.\n#\n# Please let us know if you are satisfied with what was gathered here:\n# https://aka.ms/gatherfeedback\n\n'
767767
);
768+
export const gatheredScriptDescriptionWithoutSurvey = localize(
769+
'DataScience.gatheredScriptDescriptionWithoutSurvey',
770+
'# This file was generated by the Gather Extension.\n# It requires version 2020.7.94776 (or newer) of the Python Extension.\n#\n# The intent is that it contains only the code required to produce\n# the same results as the cell originally selected for gathering.\n# Please note that the Python analysis is quite conservative, so if\n# it is unsure whether a line of code is necessary for execution, it\n# will err on the side of including it.\n'
771+
);
768772
export const gatheredNotebookDescriptionInMarkdown = localize(
769773
'DataScience.gatheredNotebookDescriptionInMarkdown',
770774
'# Gathered Notebook\nGathered from ```{0}```\n\n| | |\n|---|---|\n|&nbsp;&nbsp;&nbsp|This notebook was generated by the Gather Extension. It requires version 2020.7.94776 (or newer) of the Jupyter Extension, please update [here](https://command:jupyter.latestExtension). The intent is that it contains only the code and cells required to produce the same results as the cell originally selected for gathering. Please note that the Python analysis is quite conservative, so if it is unsure whether a line of code is necessary for execution, it will err on the side of including it.|\n\n**Are you satisfied with the code that was gathered?**\n\n[Yes](https://command:jupyter.gatherquality?yes) [No](https://command:jupyter.gatherquality?no)'
771775
);
776+
export const gatheredNotebookDescriptionInMarkdownWithoutSurvey = localize(
777+
'DataScience.gatheredNotebookDescriptionInMarkdown',
778+
'# Gathered Notebook\nGathered from ```{0}```\n\n| | |\n|---|---|\n|&nbsp;&nbsp;&nbsp|This notebook was generated by the Gather Extension. It requires version 2020.7.94776 (or newer) of the Python Extension, please update [here](https://command:python.datascience.latestExtension). The intent is that it contains only the code and cells required to produce the same results as the cell originally selected for gathering. Please note that the Python analysis is quite conservative, so if it is unsure whether a line of code is necessary for execution, it will err on the side of including it.|\n\n'
779+
);
772780
export const savePngTitle = localize('DataScience.savePngTitle', 'Save Image');
773781
export const fallbackToUseActiveInterpreterAsKernel = localize(
774782
'DataScience.fallbackToUseActiveInterpeterAsKernel',

src/client/datascience/dataScienceSurveyBanner.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
'use strict';
55

66
import { inject, injectable, named } from 'inversify';
7-
import { Event, EventEmitter } from 'vscode';
7+
import { env, Event, EventEmitter, UIKind } from 'vscode';
88
import { IApplicationShell } from '../common/application/types';
99
import '../common/extensions';
1010
import {
@@ -100,7 +100,10 @@ export class DataScienceSurveyBanner implements IPythonExtensionBanner {
100100
this.isInitialized = true;
101101
}
102102
public get enabled(): boolean {
103-
return this.persistentState.createGlobalPersistentState<boolean>(DSSurveyStateKeys.ShowBanner, true).value;
103+
return (
104+
this.persistentState.createGlobalPersistentState<boolean>(DSSurveyStateKeys.ShowBanner, true).value &&
105+
env.uiKind !== UIKind?.Web
106+
);
104107
}
105108

106109
public async showBanner(): Promise<void> {

src/client/datascience/gather/gatherListener.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { inject, injectable } from 'inversify';
22
import { IDisposable } from 'monaco-editor';
33
import * as uuid from 'uuid/v4';
4-
import { Event, EventEmitter, Position, Uri, ViewColumn } from 'vscode';
4+
import { env, Event, EventEmitter, Position, UIKind, Uri, ViewColumn } from 'vscode';
55
import { createMarkdownCell } from '../../../datascience-ui/common/cellFactory';
66
import { IApplicationShell, IDocumentManager } from '../../common/application/types';
77
import { PYTHON_LANGUAGE } from '../../common/constants';
@@ -224,13 +224,20 @@ export class GatherListener implements IInteractiveWindowListener {
224224
const file =
225225
cell.file === Identifiers.EmptyFileName && this.notebookUri ? this.notebookUri.fsPath : cell.file;
226226

227+
const data =
228+
env.uiKind === UIKind?.Web
229+
? createMarkdownCell(
230+
localize.DataScience.gatheredNotebookDescriptionInMarkdownWithoutSurvey().format(file)
231+
)
232+
: createMarkdownCell(localize.DataScience.gatheredNotebookDescriptionInMarkdown().format(file));
233+
227234
let cells: ICell[] = [
228235
{
229236
id: uuid(),
230237
file: '',
231238
line: 0,
232239
state: 0,
233-
data: createMarkdownCell(localize.DataScience.gatheredNotebookDescriptionInMarkdown().format(file))
240+
data
234241
}
235242
];
236243

@@ -290,7 +297,10 @@ export class GatherListener implements IInteractiveWindowListener {
290297
slicedProgram = slicedProgram.replace(re, '');
291298
}
292299

293-
const annotatedScript = `${localize.DataScience.gatheredScriptDescription()}${defaultCellMarker}\n${slicedProgram}`;
300+
const annotatedScript =
301+
env?.uiKind === UIKind?.Web
302+
? `${localize.DataScience.gatheredScriptDescriptionWithoutSurvey()}${defaultCellMarker}\n${slicedProgram}`
303+
: `${localize.DataScience.gatheredScriptDescription()}${defaultCellMarker}\n${slicedProgram}`;
294304

295305
// Don't want to open the gathered code on top of the interactive window
296306
let viewColumn: ViewColumn | undefined;

src/client/datascience/jupyter/jupyterImporter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class JupyterImporter implements INotebookImporter {
3636
{% endblock codecell %}
3737
{% block in_prompt %}{% endblock in_prompt %}
3838
{% block input %}{{ cell.source | ipython2python }}{% endblock input %}
39-
{% block markdowncell scoped %}{0} [markdown]
39+
{% block markdowncell scoped %}{1} [markdown]
4040
{{ cell.source | comment_lines }}
4141
{% endblock markdowncell %}`;
4242
private readonly nbconvert5Null = 'null.tpl';

src/client/datascience/jupyter/kernelVariables.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const DocStringRegex = /.*?\[.*?;31mDocstring:.*?\[0m\s+(.*)/;
3434
const CountRegex = /.*?\[.*?;31mLength:.*?\[0m\s+(.*)/;
3535
const ShapeRegex = /^\s+\[(\d+) rows x (\d+) columns\]/m;
3636

37-
const DataViewableTypes: Set<string> = new Set<string>(['DataFrame', 'list', 'dict', 'ndarray', 'Series']);
37+
const DataViewableTypes: Set<string> = new Set<string>(['DataFrame', 'list', 'dict', 'ndarray', 'Series', 'Tensor']);
3838

3939
interface INotebookState {
4040
currentExecutionCount: number;

0 commit comments

Comments
 (0)