From 6f38f7b014f783b1edfdb3861b49b89604d80523 Mon Sep 17 00:00:00 2001 From: Bussonnier Matthias Date: Fri, 12 Dec 2014 15:24:53 +0100 Subject: [PATCH] generalise manager --- IPython/html/services/config/manager.py | 86 ++----------------------- 1 file changed, 5 insertions(+), 81 deletions(-) diff --git a/IPython/html/services/config/manager.py b/IPython/html/services/config/manager.py index 429da07ee..3b9b37cc8 100644 --- a/IPython/html/services/config/manager.py +++ b/IPython/html/services/config/manager.py @@ -2,89 +2,13 @@ """ # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. -import errno -import io -import json + import os -from IPython.config import LoggingConfigurable -from IPython.utils.path import locate_profile -from IPython.utils.py3compat import PY3 -from IPython.utils.traitlets import Unicode +from IPython.config.manager import BaseConfigManager +class ConfigManager(BaseConfigManager): + """Config Manager use for storin Javascript side config""" -def recursive_update(target, new): - """Recursively update one dictionary using another. - - None values will delete their keys. - """ - for k, v in new.items(): - if isinstance(v, dict): - if k not in target: - target[k] = {} - recursive_update(target[k], v) - if not target[k]: - # Prune empty subdicts - del target[k] - - elif v is None: - target.pop(k, None) - - else: - target[k] = v - - -class ConfigManager(LoggingConfigurable): - profile_dir = Unicode() - def _profile_dir_default(self): - return locate_profile() - - @property - def config_dir(self): + def _config_dir(self): return os.path.join(self.profile_dir, 'nbconfig') - - def ensure_config_dir_exists(self): - try: - os.mkdir(self.config_dir, 0o755) - except OSError as e: - if e.errno != errno.EEXIST: - raise - - def file_name(self, section_name): - return os.path.join(self.config_dir, section_name+'.json') - - def get(self, section_name): - """Retrieve the config data for the specified section. - - Returns the data as a dictionary, or an empty dictionary if the file - doesn't exist. - """ - filename = self.file_name(section_name) - if os.path.isfile(filename): - with io.open(filename, encoding='utf-8') as f: - return json.load(f) - else: - return {} - - def set(self, section_name, data): - """Store the given config data. - """ - filename = self.file_name(section_name) - self.ensure_config_dir_exists() - - if PY3: - f = io.open(filename, 'w', encoding='utf-8') - else: - f = open(filename, 'wb') - with f: - json.dump(data, f) - - def update(self, section_name, new_data): - """Modify the config section by recursively updating it with new_data. - - Returns the modified config data as a dictionary. - """ - data = self.get(section_name) - recursive_update(data, new_data) - self.set(section_name, data) - return data