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 '))
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)