# NotebookEdit

Модифікує одну клітинку в Jupyter-ноутбуці (`.ipynb`). Підтримує заміну вихідного коду клітинки, вставку нової клітинки або видалення наявної клітинки зі збереженням решти структури ноутбука.

## Коли використовувати

- Виправлення чи оновлення клітинки з кодом в аналітичному ноутбуці без переписування всього файлу
- Заміна markdown-клітинки для покращення оповіді чи додавання документації
- Вставка нової клітинки з кодом чи markdown у відому позицію в наявному ноутбуці
- Видалення застарілої чи зламаної клітинки, щоб подальші клітинки більше не залежали від неї
- Підготовка відтворюваного ноутбука шляхом ітерацій над клітинками по одній

## Параметри

- `notebook_path` (string, обовʼязковий): Абсолютний шлях до файлу `.ipynb`. Відносні шляхи відхиляються.
- `new_source` (string, обовʼязковий): Новий вихідний код клітинки. Для `replace` та `insert` стає тілом клітинки; для `delete` ігнорується, але все одно вимагається схемою.
- `cell_id` (string, необовʼязковий): ID цільової клітинки. У режимах `replace` та `delete` інструмент діє на цю клітинку. У режимі `insert` нова клітинка вставляється одразу після клітинки з цим ID; опустіть, щоб вставити на початку ноутбука.
- `cell_type` (enum, необовʼязковий): Або `code`, або `markdown`. Обовʼязковий, коли `edit_mode` — `insert`. Коли опущено під час `replace`, тип наявної клітинки зберігається.
- `edit_mode` (enum, необовʼязковий): `replace` (за замовчуванням), `insert` або `delete`.

## Приклади

### Приклад 1: Заміна баґової клітинки з кодом
Викличте `NotebookEdit` з `notebook_path`, встановленим на абсолютний шлях, `cell_id`, встановленим на ID цільової клітинки, та `new_source`, що містить виправлений код Python. Залиште `edit_mode` за замовчуванням `replace`.

### Приклад 2: Вставка markdown-пояснення
Щоб додати markdown-клітинку одразу після наявної клітинки `setup`, встановіть `edit_mode: "insert"`, `cell_type: "markdown"`, `cell_id` на ID клітинки setup і помістіть оповідь у `new_source`.

### Приклад 3: Видалення застарілої клітинки
Встановіть `edit_mode: "delete"` і надайте `cell_id` клітинки для видалення. Надайте будь-який рядок для `new_source`; його не буде застосовано.

## Примітки

- Завжди передавайте абсолютний шлях. `NotebookEdit` не розвʼязує відносні шляхи відносно робочого каталогу.
- Інструмент переписує лише цільову клітинку; лічильники виконання, виводи та метадані для непов'язаних клітинок залишаються недоторканими.
- Вставка без `cell_id` розміщує нову клітинку на самому початку ноутбука.
- `cell_type` обовʼязковий для вставок. Для замін опускайте його, якщо ви явно не хочете перетворити клітинку з кодом на markdown або навпаки.
- Щоб перевірити клітинки та отримати їхні ID, використовуйте спочатку інструмент `Read` на ноутбуці; він повертає клітинки з їхнім вмістом та виводами.
- Використовуйте звичайний `Edit` для простих файлів вихідного коду; `NotebookEdit` специфічний для JSON `.ipynb` і розуміє його структуру клітинок.
