def get_config_manager(cls):
     try:
         # single-user notebook server tests use cls.notebook for app
         return cls.notebook.config_manager
     except AttributeError:
         # jupyterhub-based tests don't (can't) have cls.notebook defined,
         # so we must construct a ConfigManager from scratch
         return ConfigManager(log=cls.log,
                              config_dir=os.path.join(
                                  _get_config_dir(user=True), 'nbconfig'))
 def get_config_manager(cls):
     try:
         # single-user notebook server tests use cls.notebook for app
         return cls.notebook.config_manager
     except AttributeError:
         # jupyterhub-based tests don't (can't) have cls.notebook defined,
         # so we must construct a ConfigManager from scratch
         return ConfigManager(
             log=cls.log,
             config_dir=os.path.join(_get_config_dir(user=True), 'nbconfig')
         )
 def check_extension_enabled(cls, section, require, expected_status=True,
                             timeout=10, check_period=0.5):
     try:
         # single-user notebook server tests use cls.notebook for app
         cm = cls.notebook.config_manager
     except AttributeError:
         # jupyterhub-based tests don't (can't) have cls.notebook defined,
         # so we must construct a ConfigManager from scratch
         cm = ConfigManager(
             log=cls.log,
             config_dir=os.path.join(_get_config_dir(user=True), 'nbconfig')
         )
     for ii in range(0, max(1, int(timeout / check_period))):
         load_exts = cm.get(section).get('load_extensions', {})
         enabled = [req for req, en in load_exts.items() if en]
         if (require in enabled) == expected_status:
             break
         time.sleep(check_period)
     assert_func = (
         nt.assert_in if expected_status else nt.assert_not_in)
     assert_func(require, enabled,
                 'nbxtension should {}be in enabled list'.format(
                     '' if expected_status else 'not '))
示例#4
0
def toggle_install(install,
                   user=False,
                   sys_prefix=False,
                   overwrite=False,
                   symlink=False,
                   prefix=None,
                   nbextensions_dir=None,
                   logger=None):
    """Install or remove all jupyter_contrib_nbextensions."""
    if notebook_is_running():
        raise NotebookRunningError(
            'Cannot configure while the Jupyter notebook server is running')
    _check_conflicting_kwargs(user=user,
                              sys_prefix=sys_prefix,
                              prefix=prefix,
                              nbextensions_dir=nbextensions_dir)
    config_dir = nbextensions._get_config_dir(user=user, sys_prefix=sys_prefix)

    verb = 'Installing' if install else 'Uninstalling'
    if logger:
        logger.info(
            '{} jupyter_contrib_nbextensions, using config in {}'.format(
                verb, config_dir))

    # Configure the jupyter_nbextensions_configurator serverextension to load
    if install:
        serverextensions.toggle_serverextension_python(
            'jupyter_nbextensions_configurator',
            enabled=True,
            user=user,
            sys_prefix=sys_prefix,
            logger=logger)

    # nbextensions:
    kwargs = dict(user=user,
                  sys_prefix=sys_prefix,
                  prefix=prefix,
                  nbextensions_dir=nbextensions_dir,
                  logger=logger)
    if install:
        nbextensions.install_nbextension_python(
            jupyter_contrib_nbextensions.__name__,
            overwrite=overwrite,
            symlink=symlink,
            **kwargs)
    else:
        nbextensions.uninstall_nbextension_python(
            jupyter_contrib_nbextensions.__name__, **kwargs)

    # Set extra template path, pre- and post-processors for nbconvert
    cm = BaseJSONConfigManager(config_dir=config_dir)
    config_basename = 'jupyter_nbconvert_config'
    config = cm.get(config_basename)
    # avoid warnings about unset version
    config.setdefault('version', 1)
    if logger:
        logger.info(u'- Editing config: {}'.format(
            cm.file_name(config_basename)))

    # Set extra template path, pre- and post-processors for nbconvert
    if logger:
        logger.info('--  Configuring nbconvert template path')
    # our templates directory
    _update_config_list(config, 'Exporter.template_path', [
        '.',
        jupyter_contrib_nbextensions.nbconvert_support.templates_directory(),
    ], install)
    # our preprocessors
    if logger:
        logger.info('--  Configuring nbconvert preprocessors')
    proc_mod = 'jupyter_contrib_nbextensions.nbconvert_support'
    _update_config_list(config, 'Exporter.preprocessors', [
        proc_mod + '.CodeFoldingPreprocessor',
        proc_mod + '.PyMarkdownPreprocessor',
    ], install)
    # our postprocessor class
    if logger:
        logger.info('--  Configuring nbconvert postprocessor_class')
    if install:
        config.setdefault(
            'NbConvertApp',
            Config())['postprocessor_class'] = (proc_mod +
                                                '.EmbedPostProcessor')
    else:
        nbconvert_conf = config.get('NbConvertApp', Config())
        if (nbconvert_conf.get('postprocessor_class') == proc_mod +
                '.EmbedPostProcessor'):
            nbconvert_conf.pop('postprocessor_class')
            if len(nbconvert_conf) < 1:
                config.pop('NbConvertApp')
    if logger:
        logger.info(u'- Writing config: {}'.format(
            cm.file_name(config_basename)))
    _set_managed_config(cm, config_basename, config, logger=logger)
def toggle_install_config(install, user=False, sys_prefix=False,
                          skip_running_check=False, logger=None):
    """Install/remove contrib nbextensions to/from jupyter_nbconvert_config."""
    _err_on_running(skip_running_check=skip_running_check)
    _check_conflicting_kwargs(user=user, sys_prefix=sys_prefix)
    config_dir = nbextensions._get_config_dir(user=user, sys_prefix=sys_prefix)
    if logger:
        logger.info(
            '{} jupyter_contrib_nbextensions items {} config in {}'.format(
                'Installing' if install else 'Uninstalling',
                'to' if install else 'from',
                config_dir))

    # Configure the jupyter_nbextensions_configurator serverextension to load
    if install:
        configurator_app = EnableJupyterNbextensionsConfiguratorApp(
            user=user, sys_prefix=sys_prefix, logger=logger)
        configurator_app.start()
        nbextensions.enable_nbextension(
            'notebook', 'contrib_nbextensions_help_item/main',
            user=user, sys_prefix=sys_prefix, logger=logger)
    else:
        nbconf_cm = BaseJSONConfigManager(
            config_dir=os.path.join(config_dir, 'nbconfig'))
        for require, section in {
                'contrib_nbextensions_help_item/main': 'notebook'}.items():
            if logger:
                logger.info('- Disabling {}'.format(require))
                logger.info(
                    '--  Editing config: {}'.format(
                        nbconf_cm.file_name(section)))
            nbconf_cm.update(section, {'load_extensions': {require: None}})

    # Set extra template path, pre- and post-processors for nbconvert
    cm = BaseJSONConfigManager(config_dir=config_dir)
    config_basename = 'jupyter_nbconvert_config'
    config = cm.get(config_basename)
    # avoid warnings about unset version
    config.setdefault('version', 1)
    if logger:
        logger.info(
            u'- Editing config: {}'.format(cm.file_name(config_basename)))

    # Set extra template path, pre- and post-processors for nbconvert
    if logger:
        logger.info('--  Configuring nbconvert template path')
    # our templates directory
    _update_config_list(config, 'Exporter.template_path', [
        '.',
        jupyter_contrib_nbextensions.nbconvert_support.templates_directory(),
    ], install)
    # our preprocessors
    if logger:
        logger.info('--  Configuring nbconvert preprocessors')
    proc_mod = 'jupyter_contrib_nbextensions.nbconvert_support'
    _update_config_list(config, 'Exporter.preprocessors', [
        proc_mod + '.CodeFoldingPreprocessor',
        proc_mod + '.PyMarkdownPreprocessor',
    ], install)
    if logger:
        logger.info(
            u'- Writing config: {}'.format(cm.file_name(config_basename)))
    _set_managed_config(cm, config_basename, config, logger=logger)
def toggle_install_config(install,
                          user=False,
                          sys_prefix=False,
                          skip_running_check=False,
                          logger=None):
    """Install/remove contrib nbextensions to/from jupyter_nbconvert_config."""
    if not skip_running_check and notebook_is_running():
        raise NotebookRunningError(
            'Cannot configure while the Jupyter notebook server is running')
    _check_conflicting_kwargs(user=user, sys_prefix=sys_prefix)
    config_dir = nbextensions._get_config_dir(user=user, sys_prefix=sys_prefix)
    if logger:
        logger.info(
            '{} jupyter_contrib_nbextensions items {} config in {}'.format(
                'Installing' if install else 'Uninstalling',
                'to' if install else 'from', config_dir))

    # Configure the jupyter_nbextensions_configurator serverextension to load
    if install:
        configurator_app = EnableJupyterNbextensionsConfiguratorApp(
            user=user, sys_prefix=sys_prefix, logger=logger)
        configurator_app.start()
        nbextensions.enable_nbextension('notebook',
                                        'contrib_nbextensions_help_item/main',
                                        user=user,
                                        sys_prefix=sys_prefix,
                                        logger=logger)
    else:
        nbconf_cm = BaseJSONConfigManager(
            config_dir=os.path.join(config_dir, 'nbconfig'))
        for require, section in {
                'contrib_nbextensions_help_item/main': 'notebook'
        }.items():
            if logger:
                logger.info('- Disabling {}'.format(require))
                logger.info('--  Editing config: {}'.format(
                    nbconf_cm.file_name(section)))
            nbconf_cm.update(section, {'load_extensions': {require: None}})

    # Set extra template path, pre- and post-processors for nbconvert
    cm = BaseJSONConfigManager(config_dir=config_dir)
    config_basename = 'jupyter_nbconvert_config'
    config = cm.get(config_basename)
    # avoid warnings about unset version
    config.setdefault('version', 1)
    if logger:
        logger.info(u'- Editing config: {}'.format(
            cm.file_name(config_basename)))

    # Set extra template path, pre- and post-processors for nbconvert
    if logger:
        logger.info('--  Configuring nbconvert template path')
    # our templates directory
    _update_config_list(config, 'Exporter.template_path', [
        '.',
        jupyter_contrib_nbextensions.nbconvert_support.templates_directory(),
    ], install)
    # our preprocessors
    if logger:
        logger.info('--  Configuring nbconvert preprocessors')
    proc_mod = 'jupyter_contrib_nbextensions.nbconvert_support'
    _update_config_list(config, 'Exporter.preprocessors', [
        proc_mod + '.CodeFoldingPreprocessor',
        proc_mod + '.PyMarkdownPreprocessor',
    ], install)
    if logger:
        logger.info(u'- Writing config: {}'.format(
            cm.file_name(config_basename)))
    _set_managed_config(cm, config_basename, config, logger=logger)
def toggle_install(install, user=False, sys_prefix=False, overwrite=False,
                   symlink=False, prefix=None, nbextensions_dir=None,
                   logger=None):
    """Install or remove all jupyter_contrib_nbextensions."""
    if notebook_is_running():
        raise NotebookRunningError(
            'Cannot configure while the Jupyter notebook server is running')

    user = False if sys_prefix else user
    config_dir = nbextensions._get_config_dir(user=user, sys_prefix=sys_prefix)

    verb = 'Installing' if install else 'Uninstalling'
    if logger:
        logger.info(
            '{} jupyter_contrib_nbextensions, using config in {}'.format(
                verb, config_dir))

    # Configure the jupyter_nbextensions_configurator serverextension to load
    if install:
        serverextensions.toggle_serverextension_python(
            'jupyter_nbextensions_configurator',
            enabled=True, user=user, sys_prefix=sys_prefix, logger=logger)

    # nbextensions:
    kwargs = dict(user=user, sys_prefix=sys_prefix, prefix=prefix,
                  nbextensions_dir=nbextensions_dir, logger=logger)
    if install:
        nbextensions.install_nbextension_python(
            jupyter_contrib_nbextensions.__name__,
            overwrite=overwrite, symlink=symlink, **kwargs)
    else:
        nbextensions.uninstall_nbextension_python(
            jupyter_contrib_nbextensions.__name__, **kwargs)

    # Set extra template path, pre- and post-processors for nbconvert
    cm = BaseJSONConfigManager(config_dir=config_dir)
    config_basename = 'jupyter_nbconvert_config'
    config = cm.get(config_basename)
    # avoid warnings about unset version
    config.setdefault('version', 1)
    if logger:
        logger.info(
            u'- Editing config: {}'.format(cm.file_name(config_basename)))

    # Set extra template path, pre- and post-processors for nbconvert
    if logger:
        logger.info('--  Configuring nbconvert template path')
    # our templates directory
    _update_config_list(config, 'Exporter.template_path', [
        '.',
        jupyter_contrib_nbextensions.nbconvert_support.templates_directory(),
    ], install)
    # our preprocessors
    if logger:
        logger.info('--  Configuring nbconvert preprocessors')
    proc_mod = 'jupyter_contrib_nbextensions.nbconvert_support'
    _update_config_list(config, 'Exporter.preprocessors', [
        proc_mod + '.CodeFoldingPreprocessor',
        proc_mod + '.PyMarkdownPreprocessor',
    ], install)
    # our postprocessor class
    if logger:
        logger.info('--  Configuring nbconvert postprocessor_class')
    if install:
        config.setdefault(
            'NbConvertApp', Config())['postprocessor_class'] = (
                proc_mod + '.EmbedPostProcessor')
    else:
        nbconvert_conf = config.get('NbConvertApp', Config())
        if (nbconvert_conf.get('postprocessor_class') ==
                proc_mod + '.EmbedPostProcessor'):
            nbconvert_conf.pop('postprocessor_class')
            if len(nbconvert_conf) < 1:
                config.pop('NbConvertApp')
    if logger:
        logger.info(
            u'- Writing config: {}'.format(cm.file_name(config_basename)))
    _set_managed_config(cm, config_basename, config, logger=logger)