Spec-Zone.ru › Deno 2

Jupyter Kernel для Deno

Deno поставляется со встроенным Jupyter ядром, которое позволяет вам писать JavaScript и TypeScript, использовать Web и Deno API и импортировать пакеты npm прямо в свои интерактивные блокноты.

deno jupyter всегда выполняется с --allow-all

В настоящее время весь код, выполняемый в Jupyter ядре, выполняется со флагом --allow-all. Это временное ограничение, которое будет устранено в будущем.

Быстрый старт

Запустите deno jupyter --unstable и следуйте инструкциям.

Вы можете запустить deno jupyter --unstable --install для принудительной установки ядра. Deno предполагает, что команда jupyter доступна в вашей PATH.

После завершения процесса установки ядро Deno будет доступно в диалоговом окне создания блокнота в JupyterLab и классическом блокноте:

Jupyter notebook kernel selection

Вы можете использовать ядро Deno Jupyter в любом редакторе, поддерживающем Jupyter блокноты.

VS Code

  • Установите расширение VSCode Jupyter
  • Откройте или создайте файл блокнота, открыв палитру команд (Ctrl+Shift+P) и выбрав "Создать: Новый Jupyter блокнот". Это можно сделать вручную, создав файл с расширением ".ipynb".
  • При создании или открытии блокнота выберите "Ядра Jupyter" и затем выберите Deno

Selecting Deno in VS Code

IDE JetBrains

Jupyter блокноты доступны прямо из коробки.

Вывод богатого содержимого

Пространство имен Deno.jupyter предоставляет вспомогательные функции для отображения богатого содержимого в ваших блокнотах с использованием типов MIME, которые поддерживает Jupyter.


Самый простой способ предоставить богатый вывод — вернуть объект, который имеет метод [Symbol.for("Jupyter.display")].

Этот метод должен возвращать словарь, сопоставляющий тип MIME со значением, которое должно быть отображено.

{
  [Symbol.for("Jupyter.display")]() {
    return {
      // Plain text content
      "text/plain": "Hello world!",

      // HTML output
      "text/html": "<h1>Hello world!</h1>",
    }
  }
}

Пример объекта, который возвращает вывод обычного текста и HTML.

Информация

Вы также можете использовать Deno.jupyter.$display вместо ввода Symbol.for("Jupyter.display")

Это обычная функция, поэтому вы можете использовать любую библиотеку для форматирования вывода — например, использовать @std/fmt/colors для предоставления красочного вывода:

import * as colors from "jsr:@std/fmt/colors";

{
  [Deno.jupyter.$display]() {
    return {
      "text/plain": colors.green("Hello world"),
    }
  }
}

Вы также можете использовать функцию Deno.jupyter.display для непосредственного отображения набора MIME:

await Deno.jupyter.display({
  "text/plain": "Hello, world!",
  "text/html": "<h1>Hello, world!</h1>",
  "text/markdown": "# Hello, world!",
}, { raw: true });

 API example

Передний конец вашего блокнота автоматически выберет "наиболее богатый" тип MIME для отображения в зависимости от его возможностей.


Deno.jupyter предоставляет несколько вспомогательных методов для богатого вывода общих типов медиа.

Deno.jupyter.html — это помеченное шаблонное выражение, которое отобразит указанную строку в блокноте как HTML.

Deno.jupyter.html`<h1>Hello, world!</h1>
<h2>From Deno kernel</h2>
<p>Lorem ipsum <i>dolor</i> <b>sit</b> <u>amet</u></p>`;

 API example

Deno.jupyter.md — это помеченное шаблонное выражение, которое отобразит указанную строку в блокноте как Markdown-документ.

Deno.jupyter
  .md`# Notebooks in TypeScript via Deno ![Deno logo](https://github.com/denoland.png?size=32)

**Interactive compute with Jupyter _built into Deno_!**`;

 API example

Deno.jupyter.svg — это помеченное шаблонное выражение, которое отобразит указанную строку в блокноте как SVG-фигуру.

Deno.jupyter.svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
      <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
    </svg>`;

 API example

Deno.jupyter.image — это функция, которая отобразит изображение JPG или PNG. Вы можете передать путь к файлу или уже прочитанные байты:

Deno.jupyter.image("./cat.jpg");

const data = Deno.readFileSync("./dog.png");
Deno.jupyter.image(data);

API prompt и confirm

Вы можете использовать API prompt и confirm Web API для ожидания ввода пользователя в вашем блокноте.

confirm и prompt примеры API

Вещание канала IO pub

Deno.jupyter.broadcast позволяет публиковать сообщения в канал IO pub, что позволяет предоставлять динамические обновления по мере оценки ячейки.

Рассмотрим этот пример, который выводит сообщение перед запуском вычисления и другое, когда вычисление завершено:

await Deno.jupyter.broadcast("display_data", {
  data: { "text/html": "<b>Processing...</b>" },
  metadata: {},
  transient: { display_id: "progress" },
});

// Pretend we're doing an expensive compute
await new Promise((resolve) => setTimeout(resolve, 1500));

await Deno.jupyter.broadcast("update_display_data", {
  data: { "text/html": "<b>Done</b>" },
  metadata: {},
  transient: { display_id: "progress" },
});
Deno.jupyter.broadcast пример API

Примеры

Вот пример использования @observablehq/plot для генерации диаграммы:

import { document, penguins } from "jsr:@ry/jupyter-helper";
import * as Plot from "npm:@observablehq/plot";

let p = await penguins();

Plot.plot({
  marks: [
    Plot.dot(p.toRecords(), {
      x: "culmen_depth_mm",
      y: "culmen_length_mm",
      fill: "species",
    }),
  ],
  document,
});

Example plot generated using  library

См. https://github.com/rgbkrk/denotebooks для более продвинутых примеров, использующих библиотеки анализа и визуализации данных, такие как Polars, Observable и d3.

jupyter console интеграция

Вы также можете использовать Deno Jupyter ядро в jupyter console REPL. Для этого вы должны запустить свою консоль с jupyter console --kernel deno.

Using the Deno kernel in a CLI

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/jupyter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API