Author: johannes
Date: 2007-11-16 04:29:24 -0600 (Fri, 16 Nov 2007)
New Revision: 9816
Modified:
trunk/gnue-common/src/apps/GConfig.py
Log:
More code cleanup (according to pylint)
Modified: trunk/gnue-common/src/apps/GConfig.py
===================================================================
--- trunk/gnue-common/src/apps/GConfig.py 2007-11-16 09:43:52 UTC (rev 9815)
+++ trunk/gnue-common/src/apps/GConfig.py 2007-11-16 10:29:24 UTC (rev 9816)
@@ -92,142 +92,205 @@
__builtin__.__dict__[name] = alias.gConfig
- #
- # loadApplicationConfig
- #
- # Loads the specified file only once.
- # Subsequent calls setup the defaults for any missing values
- #
+ # -------------------------------------------------------------------------
+ # Load the specified file
+ # -------------------------------------------------------------------------
+
def loadApplicationConfig(self, configFilename="gnue.conf",
homeConfigDir=".gnue", section="DEFAULT", defaults=None):
+ """
+ Load the specified file only once. Subsequent calls setup the defaults
+ for any missing values.
- assert gDebug(2,'Reading configuration info from %s section %s' %
+ @raises InvalidFormatError: if parsing of the configuration file fails,
+ this error will indicate why.
+ """
+
+ assert gDebug(2, 'Reading configuration info from %s section %s' %
(configFilename, section))
- #
# Create parser and populate it if it doesn't exist
- #
if not self._loadedConfigs.has_key(configFilename):
if defaults is None:
parser = GConfigParser(GCConfig.ConfigOptions)
else:
parser = GConfigParser(defaults + GCConfig.ConfigOptions)
- self._loadedConfigs[configFilename]=parser
+ self._loadedConfigs[configFilename] = parser
+
# Build valid file list
- fileLocations = []
+ file_locations = []
etc_base = getInstalledBase('%s_etc' % section, 'common_etc')
# system config file
if etc_base:
- fileLocations.append(os.path.join(etc_base,configFilename))
+ file_locations.append(os.path.join(etc_base, configFilename))
# user config file
try:
- fileLocations.append(os.path.join(os.environ['HOME'],
+ file_locations.append(os.path.join(os.environ['HOME'],
homeConfigDir, configFilename))
except KeyError:
pass
# system fixed config file
if etc_base:
- fileLocations.append(os.path.join(etc_base,
- configFilename+'.fixed'))
+ file_locations.append(os.path.join(etc_base,
+ configFilename + '.fixed'))
- #
# Load the values from the files specified
- #
try:
- parser.read(fileLocations)
+ parser.read(file_locations)
assert gDebug(2, \
'Configuration files were read in this order: %s' % \
- fileLocations)
+ file_locations)
+
except ConfigParser.DuplicateSectionError:
raise InvalidFormatError, \
u_('Configuration file has duplicate sections.')
+
except ConfigParser.MissingSectionHeaderError:
raise InvalidFormatError, \
u_('Configuration file has no sections.')
+
except:
raise InvalidFormatError, \
u_('Configuration file cannot be parsed:\n%s') % \
sys.exc_value
- #
- # Common only needs checked once
- #
- # Load any [common] defaults
- self._integrateDefaultDict(configFilename, 'common',
- self._buildDefaults(GCConfig.ConfigOptions))
+ # Common only needs checked once, load any [common] defaults
+ self.__integrate_default_dict(configFilename, 'common',
+ self.__build_defaults(GCConfig.ConfigOptions))
- #
# Load anything set in the DEFAULT section
- #
- self._integrateDefaultDict(configFilename, section,
+ self.__integrate_default_dict(configFilename, section,
self._loadedConfigs[configFilename].defaults())
- #
- # If any values are still blank after loading from file's
- # specific section and then the default section then load the
- # defaults specified by the application itself.
- #
- self._integrateDefaultDict(configFilename, section,
- self._buildDefaults(defaults))
+ # If any values are still blank after loading from file's specific
+ # section and then the default section then load the defaults specified
+ # by the application itself.
+ self.__integrate_default_dict(configFilename, section,
+ self.__build_defaults(defaults))
- def _integrateDefaultDict(self,filename, section,defaults):
+ # -------------------------------------------------------------------------
+ # Integrate default values from a dictionary into a configuration section
+ # -------------------------------------------------------------------------
+
+ def __integrate_default_dict(self, filename, section, defaults):
+
try:
self._loadedConfigs[filename].add_section(section)
+
except ConfigParser.DuplicateSectionError:
pass
- for key in defaults.keys():
- # Only set the value to the default if config file didn't contain
- # custom setting.
+
+ # Only set the value to the default if config file didn't contain
+ # custom setting.
+ for key in defaults:
try:
- self._loadedConfigs[filename].get(section,key)
+ self._loadedConfigs[filename].get(section, key)
+
except ConfigParser.NoOptionError:
- self._loadedConfigs[filename].set(section,key,defaults[key])
+ self._loadedConfigs[filename].set(section, key, defaults[key])
+ # -------------------------------------------------------------------------
+ # Create a dictionary of default values from a definition dictionary
+ # -------------------------------------------------------------------------
+
+ def __build_defaults(self, definitions):
+
+ defaults = {}
+ if definitions:
+ for item in definitions:
+ defaults[item['Name'].lower()] = str(item['Default'])
+
+ return defaults
+
+
+ # -------------------------------------------------------------------------
+ # Retrieve an option value from a configuration files' section
+ # -------------------------------------------------------------------------
+
def gConfig(self, var_name, configFilename=None, section=None):
- if not configFilename: configFilename = self._default_config_filename
- if not section: section = self._default_section
+ """
+ Retrieve an option from a section in a configuration file
+
+ @param var_name: name of the option to retrieve
+ @type var_name: string
+
+ @param configFilename: name of the configuration file to retrieve the
+ option from. If None, the default configuration file will be used.
+ @type configFilename: string
+
+ @param section: name of the section to retrieve the option from. If
+ None, the default section will be used.
+
+ @returns: the retrieve option value
+ """
+
+ if not configFilename:
+ configFilename = self._default_config_filename
+ if not section:
+ section = self._default_section
+
+ cfg_parser = self._loadedConfigs[configFilename]
+
try:
- return self._loadedConfigs[configFilename].get(section,var_name)
+ return cfg_parser.get(section, var_name)
+
except ConfigParser.NoSectionError:
- self._loadedConfigs[configFilename].add_section(section)
- return self._loadedConfigs[configFilename].get(section,var_name)
+ cfg_parser.add_section(section)
+ return cfg_parser.get(section, var_name)
+
except ConfigParser.NoOptionError:
section = 'common'
try:
- return self._loadedConfigs[configFilename].get(section,var_name)
+ return cfg_parser.get(section, var_name)
+
except ConfigParser.NoSectionError:
- self._loadedConfigs[configFilename].add_section(section)
- return self._loadedConfigs[configFilename].get(section,var_name)
+ cfg_parser.add_section(section)
+ return cfg_parser.get(section, var_name)
+
+ # -------------------------------------------------------------------------
+ # Get a dictionary with all configuration options in a section
+ # -------------------------------------------------------------------------
+
def gConfigDict(self, configFilename=None, section=None):
- if not configFilename: configFilename = self._default_config_filename
- if not section: section = self._default_section
+ """
+ Build a dictionary containing all configuration options of a given
+ section within a given configuration file.
- c = self._loadedConfigs[configFilename]
- if c.has_section(section):
- options = {}
- for option in c.options(section):
- options[option] = c.get(section, option.lower())
- return options
- else:
- return {}
+ @param configFilename: name of the configuration file to retrieve the
+ options from. If None, the default configuration file will be
+ used.
+ @type configFilename: string
+ @param section: name of the section to retrieve the options from. If
+ None, the default section will be used.
- def _buildDefaults(self, defaultDefinitions):
- defaults = {}
- if defaultDefinitions:
- for definition in defaultDefinitions:
- defaults[definition['Name'].lower()] = \
- str(definition['Default'])
- return defaults
+ @returns: dictionary containing the options and their values
+ @rtype: dict
+ """
+ if not configFilename:
+ configFilename = self._default_config_filename
+ if not section:
+ section = self._default_section
+ cfg_parser = self._loadedConfigs[configFilename]
+
+ result = {}
+ if cfg_parser.has_section(section):
+ for option in cfg_parser.options(section):
+ result[option] = cfg_parser.get(section, option.lower())
+
+ return result
+
+
+
# =============================================================================
# GNUe Config Parser class supporting the GTypecast system
# =============================================================================
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.