diff --git a/build/ci/vscode-python-pr-validation.yaml b/build/ci/vscode-python-pr-validation.yaml
index 1d60dd550c82..f46d58cbef18 100644
--- a/build/ci/vscode-python-pr-validation.yaml
+++ b/build/ci/vscode-python-pr-validation.yaml
@@ -56,6 +56,7 @@ stages:
'DataScience':
TestsToRun: 'testDataScience'
NeedsPythonTestReqs: true
+ NeedsPythonFunctionalReqs: true
'Smoke':
TestsToRun: 'testSmoke'
NeedsPythonTestReqs: true
diff --git a/package.json b/package.json
index 09d8c0370ddd..6504ceee0878 100644
--- a/package.json
+++ b/package.json
@@ -694,6 +694,25 @@
},
"enablement": "python.datascience.notebookeditor.canrestartNotebookkernel"
},
+ {
+ "command": "python.datascience.notebookeditor.trust",
+ "title": "%DataScience.trustNotebookCommandTitle%",
+ "category": "Python",
+ "icon": {
+ "light": "resources/light/un-trusted.svg",
+ "dark": "resources/dark/un-trusted.svg"
+ },
+ "enablement": "notebookEditorFocused && !python.datascience.isnotebooktrusted && python.datascience.trustfeatureenabled"
+ },
+ {
+ "command": "python.datascience.notebookeditor.trusted",
+ "title": "%DataScience.notebookIsTrusted%",
+ "category": "Python",
+ "icon": {
+ "light": "resources/light/trusted.svg",
+ "dark": "resources/dark/trusted.svg"
+ }
+ },
{
"command": "python.datascience.notebookeditor.runallcells",
"title": "%python.command.python.datascience.notebookeditor.runallcells.title%",
@@ -860,6 +879,18 @@
"group": "navigation",
"when": "notebookEditorFocused"
},
+ {
+ "command": "python.datascience.notebookeditor.trust",
+ "title": "%DataScience.trustNotebookCommandTitle%",
+ "group": "navigation@1",
+ "when": "notebookEditorFocused && !python.datascience.isnotebooktrusted && python.datascience.trustfeatureenabled"
+ },
+ {
+ "command": "python.datascience.notebookeditor.trusted",
+ "title": "%DataScience.notebookIsTrusted%",
+ "group": "navigation@1",
+ "when": "notebookEditorFocused && python.datascience.isnotebooktrusted && python.datascience.trustfeatureenabled"
+ },
{
"command": "python.datascience.export",
"title": "%DataScience.notebookExportAs%",
@@ -1138,6 +1169,18 @@
"category": "Python",
"when": "python.datascience.isnativeactive && python.datascience.featureenabled && python.datascience.isnotebooktrusted"
},
+ {
+ "command": "python.datascience.notebookeditor.trust",
+ "title": "%DataScience.trustNotebookCommandTitle%",
+ "category": "Python",
+ "when": "python.datascience.featureenabled && notebookEditorFocused && !python.datascience.isnotebooktrusted && python.datascience.trustfeatureenabled"
+ },
+ {
+ "command": "python.datascience.notebookeditor.trusted",
+ "title": "%DataScience.notebookIsTrusted%",
+ "category": "Python",
+ "when": "config.noExists"
+ },
{
"command": "python.datascience.notebookeditor.runallcells",
"title": "%python.command.python.datascience.notebookeditor.runallcells.title%",
diff --git a/package.nls.json b/package.nls.json
index 244a4ffefc9b..b8941cffecd4 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -370,6 +370,7 @@
"DataScience.fetchingDataViewer": "Fetching data ...",
"DataScience.noRowsInDataViewer": "No rows match current filter",
"DataScience.jupyterServer": "Jupyter Server",
+ "DataScience.trustNotebookCommandTitle": "Trust notebook",
"DataScience.notebookIsTrusted": "Trusted",
"DataScience.notebookIsNotTrusted": "Not Trusted",
"DataScience.noKernel": "No Kernel",
diff --git a/resources/dark/trusted.svg b/resources/dark/trusted.svg
new file mode 100644
index 000000000000..a841903129b0
--- /dev/null
+++ b/resources/dark/trusted.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/resources/dark/un-trusted.svg b/resources/dark/un-trusted.svg
new file mode 100644
index 000000000000..f97f5f561d9e
--- /dev/null
+++ b/resources/dark/un-trusted.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/light/run-file.svg b/resources/light/run-file.svg
index f41a5c8fa2d8..0adc9e411b03 100644
--- a/resources/light/run-file.svg
+++ b/resources/light/run-file.svg
@@ -1,3 +1,4 @@
-