From afca602fc5e996f8518f4a5708242dd0d8f9b3b7 Mon Sep 17 00:00:00 2001 From: Mish Ushakov <10400064+mishushakov@users.noreply.github.com> Date: Wed, 13 May 2026 15:34:59 +0200 Subject: [PATCH 1/2] Remove Deno kernel Drops the Deno Jupyter kernel from the template along with its language tests, kernel spec, env vars, and language branches in the messaging server. Co-Authored-By: Claude Opus 4.7 --- js/tests/languages/deno.test.ts | 99 ----------------------------- python/tests/languages/test_deno.py | 97 ---------------------------- template/deno.json | 14 ---- template/server/messaging.py | 8 --- template/template.py | 14 +--- 5 files changed, 1 insertion(+), 231 deletions(-) delete mode 100644 js/tests/languages/deno.test.ts delete mode 100644 python/tests/languages/test_deno.py delete mode 100644 template/deno.json diff --git a/js/tests/languages/deno.test.ts b/js/tests/languages/deno.test.ts deleted file mode 100644 index a595f7a9..00000000 --- a/js/tests/languages/deno.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { expect } from 'vitest' - -import { sandboxTest } from '../setup' - -sandboxTest.skip('js simple', async ({ sandbox }) => { - const result = await sandbox.runCode('console.log("Hello, World!")', { - language: 'deno', - }) - - expect(result.logs.stdout.join().trim()).toEqual('Hello, World!') -}) - -sandboxTest.skip('js import', async ({ sandbox }) => { - const result = await sandbox.runCode( - 'import isOdd from "npm:is-odd"\nisOdd(3)', - { language: 'deno' } - ) - - expect(result.results[0].text).toEqual('true') -}) - -sandboxTest.skip('js top level await', async ({ sandbox }) => { - const result = await sandbox.runCode( - ` - async function main() { - return 'Hello, World!' - } - - await main() - `, - { language: 'deno' } - ) - expect(result.results[0].text).toEqual('Hello, World!') -}) - -sandboxTest.skip('js es6', async ({ sandbox }) => { - const result = await sandbox.runCode( - ` - const add = (x, y) => x + y; - add(1, 2)`, - { language: 'deno' } - ) - expect(result.results[0].text).toEqual('3') -}) - -sandboxTest.skip('js context', async ({ sandbox }) => { - await sandbox.runCode('const z = 1', { language: 'deno' }) - const result = await sandbox.runCode('z', { language: 'deno' }) - expect(result.results[0].text).toEqual('1') -}) - -sandboxTest.skip('js cwd', async ({ sandbox }) => { - const result = await sandbox.runCode('process.cwd()', { language: 'deno' }) - expect(result.results[0].text).toEqual('/home/user') - - const ctx = await sandbox.createCodeContext({ - cwd: '/home', - language: 'deno', - }) - const result2 = await sandbox.runCode('process.cwd()', { context: ctx }) - expect(result2.results[0].text).toEqual('/home') -}) - -sandboxTest.skip('ts simple', async ({ sandbox }) => { - const result = await sandbox.runCode( - ` -function subtract(x: number, y: number): number { - return x - y; -} - -subtract(1, 2) -`, - { language: 'deno' } - ) - - expect(result.results[0].text).toEqual('-1') -}) - -sandboxTest.skip('test display', async ({ sandbox }) => { - const result = await sandbox.runCode( - ` - { - [Symbol.for("Jupyter.display")]() { - return { - // Plain text content - "text/plain": "Hello world!", - - // HTML output - "text/html": "

Hello world!

", - } - } -} -`, - { language: 'deno' } - ) - - expect(result.results[0].html).toBe('

Hello world!

') - expect(result.results[0].text).toBe('Hello world!') -}) diff --git a/python/tests/languages/test_deno.py b/python/tests/languages/test_deno.py deleted file mode 100644 index 74c3e57b..00000000 --- a/python/tests/languages/test_deno.py +++ /dev/null @@ -1,97 +0,0 @@ -import pytest - -from e2b_code_interpreter import AsyncSandbox - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_javascript(async_sandbox: AsyncSandbox): - code = """ - console.log('Hello, World!') - """ - execution = await async_sandbox.run_code(code, language="deno") - assert execution.logs.stdout == ["Hello, World!\n"] - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_import(async_sandbox: AsyncSandbox): - code = """ - import isOdd from 'npm:is-odd' - isOdd(3) - """ - execution = await async_sandbox.run_code(code, language="deno") - assert execution.results[0].text == "true" - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_toplevel_await(async_sandbox: AsyncSandbox): - code = """ - async function main() { - return 'Hello, World!' - } - - await main() - """ - execution = await async_sandbox.run_code(code, language="deno") - assert execution.results[0].text == "Hello, World!" - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_es6(async_sandbox: AsyncSandbox): - code = """ -const add = (x, y) => x + y; -add(1, 2); - """ - execution = await async_sandbox.run_code(code, language="deno") - assert execution.results[0].text == "3" - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_context(async_sandbox: AsyncSandbox): - await async_sandbox.run_code("const x = 1", language="deno") - execution = await async_sandbox.run_code("x", language="deno") - assert execution.results[0].text == "1" - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_cwd(async_sandbox: AsyncSandbox): - execution = await async_sandbox.run_code("process.cwd()", language="deno") - assert execution.results[0].text == "/home/user" - - ctx = await async_sandbox.create_code_context("/home", language="deno") - execution = await async_sandbox.run_code("process.cwd()", context=ctx) - assert execution.results[0].text == "/home" - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_typescript(async_sandbox: AsyncSandbox): - execution = await async_sandbox.run_code( - """ -function subtract(x: number, y: number): number { - return x - y; -} - -subtract(1, 2); -""", - language="deno", - ) - assert execution.results[0].text == "-1" - - -@pytest.mark.skip(reason="Deno is not supported yet") -async def test_display(async_sandbox: AsyncSandbox): - code = """ -{ - [Symbol.for("Jupyter.display")]() { - return { - // Plain text content - "text/plain": "Hello world!", - - // HTML output - "text/html": "

Hello world!

", - } - } -} - """ - execution = await async_sandbox.run_code(code, language="deno") - assert execution.results[0].text == "Hello world!" - assert execution.results[0].html == "

Hello world!

" diff --git a/template/deno.json b/template/deno.json deleted file mode 100644 index 3c491e44..00000000 --- a/template/deno.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "argv": [ - "/usr/bin/deno", - "jupyter", - "--kernel", - "--conn", - "{connection_file}" - ], - "display_name": "Deno", - "env": { - "NO_COLOR": "1" - }, - "language": "typescript" -} diff --git a/template/server/messaging.py b/template/server/messaging.py index d5fdb270..0db59af0 100644 --- a/template/server/messaging.py +++ b/template/server/messaging.py @@ -154,8 +154,6 @@ def _set_env_var_snippet(self, key: str, value: str) -> str: return f"import os; os.environ['{key}'] = '{value}'" elif self.language in ["javascript", "typescript"]: return f"process.env['{key}'] = '{value}'" - elif self.language == "deno": - return f"Deno.env.set('{key}', '{value}')" elif self.language == "r": return f'Sys.setenv({key} = "{value}")' elif self.language == "java": @@ -170,8 +168,6 @@ def _delete_env_var_snippet(self, key: str) -> str: return f"import os; del os.environ['{key}']" elif self.language in ["javascript", "typescript"]: return f"delete process.env['{key}']" - elif self.language == "deno": - return f"Deno.env.delete('{key}')" elif self.language == "r": return f"Sys.unsetenv('{key}')" elif self.language == "java": @@ -297,10 +293,6 @@ async def change_current_directory( self._executions[message_id] = Execution(in_background=True) if language == "python": request = self._get_execute_request(message_id, f"%cd {path}", True) - elif language == "deno": - request = self._get_execute_request( - message_id, f"Deno.chdir('{path}')", True - ) elif language in ("javascript", "typescript"): request = self._get_execute_request( message_id, f"process.chdir('{path}')", True diff --git a/template/template.py b/template/template.py index 9101636a..62fec9e2 100644 --- a/template/template.py +++ b/template/template.py @@ -2,7 +2,7 @@ def make_template( - kernels: list[str] = ["python", "r", "javascript", "deno", "bash", "java"], + kernels: list[str] = ["python", "r", "javascript", "bash", "java"], is_docker: bool = False, ): enabled_kernels = set(["python", "javascript"] + kernels) @@ -20,8 +20,6 @@ def make_template( "JAVA_VERSION": "11", "JAVA_HOME": "/usr/lib/jvm/jdk-${JAVA_VERSION}", "IJAVA_VERSION": "1.3.0", - "DENO_INSTALL": "/opt/deno", - "DENO_VERSION": "v2.4.0", "R_VERSION": "4.5.*", } ) @@ -62,16 +60,6 @@ def make_template( g=True, ).run_cmd("ijsinstall --install=global") - # Install Deno Kernel if requested - if "deno" in enabled_kernels: - template = template.run_cmd( - [ - "curl -fsSL https://deno.land/install.sh | sh -s ${DENO_VERSION}", - "PATH=$DENO_INSTALL/bin:$PATH", - "deno jupyter --unstable --install", - ] - ).copy("deno.json", ".local/share/jupyter/kernels/deno/kernel.json") - # Install Bash Kernel if requested if "bash" in enabled_kernels: template = template.pip_install("bash_kernel").run_cmd( From 25325b5857dde9ce51ae5d263ef67119e8a9a0f2 Mon Sep 17 00:00:00 2001 From: Mish Ushakov <10400064+mishushakov@users.noreply.github.com> Date: Wed, 13 May 2026 20:30:47 +0200 Subject: [PATCH 2/2] Add changeset for Deno kernel removal Co-Authored-By: Claude Opus 4.7 --- .changeset/remove-deno-kernel.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/remove-deno-kernel.md diff --git a/.changeset/remove-deno-kernel.md b/.changeset/remove-deno-kernel.md new file mode 100644 index 00000000..6de7819d --- /dev/null +++ b/.changeset/remove-deno-kernel.md @@ -0,0 +1,5 @@ +--- +'@e2b/code-interpreter-template': minor +--- + +remove Deno kernel