Как можно отключить уведомление контрольной точки? - PullRequest
0 голосов
/ 08 ноября 2018

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

На этом скриншоте:

GUI layout space for checkpoint creation notification

видно пустое пространство между пунктом меню «Справка» и значком состояния «Доверенные». Это пространство используется для временного всплывающего уведомления «Создана контрольная точка» с интервалом автоматического создания контрольной точки.

Теперь, когда окно браузера достаточно тонкое, так что

Checkpoint created <timestamp>

не вписывается в это пространство, менеджер компоновки временно создает новую строку в заголовке, и весь блокнот прокручивается вниз на одну строку, только для прокрутки вверх на одну строку несколькими секундами позже. Я нахожу это поведение очень раздражающим, поэтому я хотел бы, чтобы Jupyter сделал свои контрольные точки, не сообщая мне об этом. Мне действительно не нужно это уведомление. Можно ли как-то настроить?

1 Ответ

0 голосов
/ 17 ноября 2018

Похоже, что отключение двух обработчиков событий должно достичь нужного вам результата. Просто поместите код ниже в первую ячейку вашего ноутбука

%%javascript
IPython.notebook.events.off('checkpoint_created.Notebook');
IPython.notebook.events.off('notebook_saved.Notebook');

Я нашел эти обработчики в коде ноутбука jupyter:

Создание расширения

Если вам требуется поведение на всех ваших ноутбуках, я предлагаю создать простое расширение.

Сначала создайте каталог расширения в нужном вам каталоге:

$ mkdir -p ~/Documents/checkpoint_disable

Создать main.js файл в директории выше

Содержимое main.js:

define([
    'require',
    'jquery',
    'base/js/namespace',
], function (
    requirejs,
    $,
    Jupyter,
) {
    "use strict";

    var initialize = function () {
        <b>Jupyter.notebook.events.off('checkpoint_created.Notebook');
        Jupyter.notebook.events.off('notebook_saved.Notebook');
        Jupyter.notebook.events.on(
            'notebook_saved.Notebook',
            function() {
                console.log('Notebook saved');
            })</b>
    };

    var load_ipython_extension = function () {
        return Jupyter.notebook.config.loaded.then(initialize);
    };

    // return object to export public methods
    return {
        load_ipython_extension : load_ipython_extension
    };
});

ПРИМЕЧАНИЕ Отключение двух упомянутых обработчиков событий влияет только на пользовательский интерфейс. Под капотом ноутбук все еще сохраняется автоматически , если с момента последнего сохранения появилось новое содержимое

Установка nbextension

Вам необходимо использовать команду jupyter-nbextension, которая уже есть в jupyter.

Сначала установите расширение

$ jupyter-nbextension install --user ~/Documents/checkpoint_disable

Далее включить расширение

$ jupyter-nbextension enable checkpoint_disable/main

Вы можете проверить, что расширение установлено, вызвав

$ jupyter-nbextension list

И все готово. Расширение должно загрузиться автоматически. Вы можете убедиться, что это правда, если вы видите в браузере журнал консоли JavaScript, подобный приведенному ниже:

load_extensions 
Arguments { 0: "jupyter-js-widgets/extension", 1: "checkpoint_disable/main", … }
utils.js:60
Loading extension: checkpoint_disable/main

Ресурсы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...