def _uninstall_pre_config(logger=None): """Undo config settings inserted by an old (pre-themysto) installation.""" # for application json config files cm = BaseJSONConfigManager(config_dir=jupyter_config_dir()) # ------------------------------------------------------------------------- # notebook json config config_basename = 'jupyter_notebook_config' config = Config(cm.get(config_basename)) config_path = cm.file_name(config_basename) if config and logger: logger.info('- Removing old config values from {}'.format(config_path)) to_remove = ['nbextensions'] # remove from notebook >= 4.2 key nbserver_extensions section = config.get('NotebookApp', Config()) server_extensions = section.get('nbserver_extensions', {}) for se in to_remove: server_extensions.pop(se, None) if len(server_extensions) == 0: section.pop('nbserver_extensions', None) # and notebook < 4.2 key server_extensions _update_config_list(config, 'NotebookApp.server_extensions', to_remove, False) _update_config_list(config, 'NotebookApp.extra_template_paths', [ os.path.join(jupyter_data_dir(), 'templates'), ], False) _set_managed_config(cm, config_basename, config, logger) # ------------------------------------------------------------------------- # nbconvert json config config_basename = 'jupyter_nbconvert_config' config = Config(cm.get(config_basename)) if config and logger: logger.info('- Removing old config values from {}'.format(config_path)) _update_config_list(config, 'Exporter.template_path', [ '.', os.path.join(jupyter_data_dir(), 'templates'), ], False) _update_config_list(config, 'Exporter.preprocessors', [ 'pre_codefolding.CodeFoldingPreprocessor', 'pre_pymarkdown.PyMarkdownPreprocessor', ], False) section = config.get('NbConvertApp', {}) if (section.get('postprocessor_class') == 'post_embedhtml.EmbedPostProcessor'): section.pop('postprocessor_class', None) if len(section) == 0: config.pop('NbConvertApp', None) _set_managed_config(cm, config_basename, config, logger) # ------------------------------------------------------------------------- # Remove old config lines from .py configuration files for config_basename in ('jupyter_notebook_config.py', 'jupyter_nbconvert_config.py'): py_config_path = os.path.join(jupyter_config_dir(), config_basename) if not os.path.isfile(py_config_path): continue if logger: logger.info( '-- Removing now-empty config file {}'.format(py_config_path)) with io.open(py_config_path, 'r') as f: lines = f.readlines() marker = '#--- nbextensions configuration ---' marker_inds = [ii for ii, l in enumerate(lines) if l.find(marker) >= 0] if len(marker_inds) >= 2: lines = lines[0:marker_inds[0]] + lines[marker_inds[1] + 1:] if [l for l in lines if l.strip]: with io.open(py_config_path, 'w') as f: f.writelines(lines) else: if logger: logger.info('Removing now-empty config file {}'.format( py_config_path)) try: os.remove(py_config_path) except OSError as ex: if ex.errno != errno.ENOENT: raise
def _uninstall_pre_config(logger=None): """Undo config settings inserted by an old (pre-themysto) installation.""" # for application json config files cm = BaseJSONConfigManager(config_dir=jupyter_config_dir()) # ------------------------------------------------------------------------- # notebook json config config_basename = 'jupyter_notebook_config' config = Config(cm.get(config_basename)) config_path = cm.file_name(config_basename) if config and logger: logger.info('- Removing old config values from {}'.format(config_path)) to_remove = ['nbextensions'] # remove from notebook >= 4.2 key nbserver_extensions section = config.get('NotebookApp', Config()) server_extensions = section.get('nbserver_extensions', {}) for se in to_remove: server_extensions.pop(se, None) if len(server_extensions) == 0: section.pop('nbserver_extensions', None) # and notebook < 4.2 key server_extensions _update_config_list( config, 'NotebookApp.server_extensions', to_remove, False) _update_config_list(config, 'NotebookApp.extra_template_paths', [ os.path.join(jupyter_data_dir(), 'templates'), ], False) _set_managed_config(cm, config_basename, config, logger) # ------------------------------------------------------------------------- # nbconvert json config config_basename = 'jupyter_nbconvert_config' config = Config(cm.get(config_basename)) if config and logger: logger.info('- Removing old config values from {}'.format(config_path)) _update_config_list(config, 'Exporter.template_path', [ '.', os.path.join(jupyter_data_dir(), 'templates'), ], False) _update_config_list(config, 'Exporter.preprocessors', [ 'pre_codefolding.CodeFoldingPreprocessor', 'pre_pymarkdown.PyMarkdownPreprocessor', ], False) section = config.get('NbConvertApp', {}) if (section.get('postprocessor_class') == 'post_embedhtml.EmbedPostProcessor'): section.pop('postprocessor_class', None) if len(section) == 0: config.pop('NbConvertApp', None) _set_managed_config(cm, config_basename, config, logger) # ------------------------------------------------------------------------- # Remove old config lines from .py configuration files for config_basename in ('jupyter_notebook_config.py', 'jupyter_nbconvert_config.py'): py_config_path = os.path.join(jupyter_config_dir(), config_basename) if not os.path.isfile(py_config_path): continue if logger: logger.info( '-- Removing now-empty config file {}'.format(py_config_path)) with io.open(py_config_path, 'r') as f: lines = f.readlines() marker = '#--- nbextensions configuration ---' marker_inds = [ii for ii, l in enumerate(lines) if l.find(marker) >= 0] if len(marker_inds) >= 2: lines = lines[0:marker_inds[0]] + lines[marker_inds[1] + 1:] if [l for l in lines if l.strip]: with io.open(py_config_path, 'w') as f: f.writelines(lines) else: if logger: logger.info( 'Removing now-empty config file {}'.format( py_config_path)) try: os.remove(py_config_path) except OSError as ex: if ex.errno != errno.ENOENT: raise