mirror of
https://github.com/denoland/deno.git
synced 2024-12-25 00:29:09 -05:00
bf07604113
This commit adds "deno jupyter" subcommand which provides a Deno kernel for Jupyter notebooks. The implementation is mostly based on Deno's REPL and reuses large parts of it (though there's some clean up that needs to happen in follow up PRs). Not all functionality of Jupyter kernel is implemented and some message type are still not implemented (eg. "inspect_request") but the kernel is fully working and provides all the capatibilities that the Deno REPL has; including TypeScript transpilation and npm packages support. Closes https://github.com/denoland/deno/issues/13016 --------- Co-authored-by: Adam Powers <apowers@ato.ms> Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>
620 lines
11 KiB
Text
620 lines
11 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "182aef1d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Integration Tests for Deno Jupyter\n",
|
|
"This notebook contains a number of tests to ensure that Jupyter is working as expected. You should be able to select \"Kernel -> Restart Kernel and Run All\" in Jupyter's notebook UI to run the tests."
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "d7705d88",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Passing Tests"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "669f972e",
|
|
"metadata": {
|
|
"heading_collapsed": true
|
|
},
|
|
"source": [
|
|
"### Simple Tests"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "e7e8a512",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### This test should print \"hi\".\n",
|
|
"If this doesn't work, everything else will probably fail :)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "a5d38758",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {},
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"hi\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"console.log(\"hi\")"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "bc5ce8e3",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### Top-level await"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "f7fa885a",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"x is \u001b[33m42\u001b[39m\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"let x = await Promise.resolve(42);\n",
|
|
"console.log(\"x is\", x);"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "c21455ae",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### TypeScript transpiling\n",
|
|
"Credit to [typescriptlang.org](https://www.typescriptlang.org/docs/handbook/interfaces.html) for this code"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "08a17340",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"{ color: \u001b[32m\"red\"\u001b[39m, area: \u001b[33m10000\u001b[39m }"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"interface SquareConfig {\n",
|
|
" color?: string;\n",
|
|
" width?: number;\n",
|
|
"}\n",
|
|
" \n",
|
|
"function createSquare(config: SquareConfig): { color: string; area: number } {\n",
|
|
" return {\n",
|
|
" color: config.color || \"red\",\n",
|
|
" area: config.width ? config.width * config.width : 20,\n",
|
|
" };\n",
|
|
"}\n",
|
|
" \n",
|
|
"createSquare({ colour: \"red\", width: 100 });"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "eaa0ebc0",
|
|
"metadata": {
|
|
"heading_collapsed": true
|
|
},
|
|
"source": [
|
|
"### Return Values"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "52876276",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### undefined should not return a value"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "bbf2c09b",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"undefined"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "e175c803",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### null should return \"null\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "d9801d80",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1mnull\u001b[22m"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"null"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "a2a716dc",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### boolean should return the boolean"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "cfaac330",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[33mtrue\u001b[39m"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"true"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "8d9f1aba",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### number should return the number"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "ec3be2da",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[33m42\u001b[39m"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"42"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "60965915",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### string should return the string"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "997cf2d7",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[32m\"this is a test of the emergency broadcast system\"\u001b[39m"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"\"this is a test of the emergency broadcast system\""
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "fe38dc27",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### bigint should return the bigint in literal format"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "44b63807",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[33m31337n\u001b[39m"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"31337n"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "843ccb6c",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### symbol should return a string describing the symbol"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "e10c0d31",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[32mSymbol(foo)\u001b[39m"
|
|
]
|
|
},
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"Symbol(\"foo\")"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "171b817f",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### object should describe the object inspection"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "81c99233",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"{ foo: \u001b[32m\"bar\"\u001b[39m }"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"{foo: \"bar\"}"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"id": "6caeb583",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"source": [
|
|
"#### resolve returned promise"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "43c1581b",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Promise { \u001b[32m\"it worked!\"\u001b[39m }"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"Promise.resolve(\"it worked!\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "9a34b725",
|
|
"metadata": {
|
|
"hidden": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Promise {\n",
|
|
" \u001b[36m<rejected>\u001b[39m Error: it failed!\n",
|
|
" at <anonymous>:2:16\n",
|
|
"}"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"Promise.reject(new Error(\"it failed!\"));"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "b5c7b819",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"ename": "Error: this is a test\n at foo (<anonymous>:3:9)\n at <anonymous>:4:3",
|
|
"evalue": "",
|
|
"output_type": "error",
|
|
"traceback": []
|
|
}
|
|
],
|
|
"source": [
|
|
"(function foo() {\n",
|
|
" throw new Error(\"this is a test\")\n",
|
|
"})()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "72d01fdd",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Promise {\n",
|
|
" \u001b[36m<rejected>\u001b[39m TypeError: Expected string at position 0\n",
|
|
" at Object.readFile (ext:deno_fs/30_fs.js:716:29)\n",
|
|
" at <anonymous>:2:6\n",
|
|
"}"
|
|
]
|
|
},
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"Deno.readFile(1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "28cf59d0-6908-4edc-bb10-c325beeee362",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"console.log(\"Hello from Deno!\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8d5485c3-0da3-43fe-8ef5-a61e672f5e81",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"console.log(\"%c Hello Deno \", \"background-color: #15803d; color: white;\");"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1401d9d5-6994-4c7b-b55a-db3c16a1e2dc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"\"Cool 🫡\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "7afdaa0a-a2a0-4f52-8c7d-b6c5f237aa0d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"console.table([1, 2, 3])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8e93df23-06eb-414b-98d4-51fbebb53d1f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Deno",
|
|
"language": "typescript",
|
|
"name": "deno"
|
|
},
|
|
"language_info": {
|
|
"file_extension": ".ts",
|
|
"mimetype": "text/x.typescript",
|
|
"name": "typescript",
|
|
"nb_converter": "script",
|
|
"pygments_lexer": "typescript",
|
|
"version": "5.2.2"
|
|
},
|
|
"toc": {
|
|
"base_numbering": 1,
|
|
"nav_menu": {},
|
|
"number_sections": true,
|
|
"sideBar": true,
|
|
"skip_h1_title": false,
|
|
"title_cell": "Table of Contents",
|
|
"title_sidebar": "Contents",
|
|
"toc_cell": false,
|
|
"toc_position": {},
|
|
"toc_section_display": true,
|
|
"toc_window_display": true
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|