def write_conf(self, config_file_type, opener=open): option_iterator = functools.partial(self.walk_config, blocked_keys=self.admin_controls_list) with opener() as config_fp: value_sources.write(config_file_type, option_iterator, config_fp)
def write_conf(self, config_file_type, opener, skip_keys=None): """write a configuration file to a file-like object. parameters: config_file_type - a string containing a registered file type OR a for_XXX module from the value_source package. Passing in an string that is unregistered will result in a KeyError opener - a callable object or function that returns a file like object that works as a context in a with statement.""" blocked_keys = self.admin_controls_list if skip_keys: blocked_keys.extend(skip_keys) option_iterator = functools.partial(self._walk_config, blocked_keys=blocked_keys) with opener() as config_fp: value_sources.write(config_file_type, option_iterator, config_fp)
def write_conf(self, config_file_type, opener, skip_keys=None): """write a configuration file to a file-like object. parameters: config_file_type - a string containing a registered file type OR a for_XXX module from the value_source package. Passing in an string that is unregistered will result in a KeyError opener - a callable object or function that returns a file like object that works as a context in a with statement.""" blocked_keys = self.admin_controls_list if skip_keys: blocked_keys.extend(skip_keys) if blocked_keys: option_defs = self.option_definitions.safe_copy() for a_blocked_key in blocked_keys: try: del option_defs[a_blocked_key] except (AttributeError, KeyError): # okay that key isn't here pass # remove empty namespaces all_keys = [k for k in option_defs.keys_breadth_first(include_dicts=True)] for key in all_keys: candidate = option_defs[key] if (isinstance(candidate, Namespace) and not len(candidate)): del option_defs[key] else: option_defs = self.option_definitions if self.option_definitions.admin.migration.default: self._migrate_options_for_acquisition(option_defs) value_sources.write(config_file_type, option_defs, opener)
def write_conf(self, config_file_type, opener, skip_keys=None): """write a configuration file to a file-like object. parameters: config_file_type - a string containing a registered file type OR a for_XXX module from the value_source package. Passing in an string that is unregistered will result in a KeyError opener - a callable object or function that returns a file like object that works as a context in a with statement.""" blocked_keys = self.admin_controls_list if skip_keys: blocked_keys.extend(skip_keys) if blocked_keys: option_defs = self.option_definitions.safe_copy() for a_blocked_key in blocked_keys: try: del option_defs[a_blocked_key] except (AttributeError, KeyError): # okay that key isn't here pass # remove empty namespaces all_keys = [ k for k in option_defs.keys_breadth_first(include_dicts=True) ] for key in all_keys: candidate = option_defs[key] if (isinstance(candidate, Namespace) and not len(candidate)): del option_defs[key] else: option_defs = self.option_definitions if self.option_definitions.admin.migration.default: self._migrate_options_for_acquisition(option_defs) value_sources.write(config_file_type, option_defs, opener)