Configurable¶
Configurable.py
Provides configuration file functionality.
- class MiscUtils.Configurable.Configurable¶
Bases:
object
Abstract superclass for configuration file functionality.
Subclasses should override:
- defaultConfig() to return a dictionary of default settings
such as {‘Frequency’: 5}
- configFilename() to return the filename by which users can
override the configuration such as ‘Pinger.config’
Subclasses typically use the setting() method, for example:
time.sleep(self.setting(‘Frequency’))
They might also use the printConfig() method, for example:
self.printConfig() # or self.printConfig(file)
Users of your software can create a file with the same name as configFilename() and selectively override settings. The format of the file is a Python dictionary.
Subclasses can also override userConfig() in order to obtain the user configuration settings from another source.
- __init__()¶
- commandLineConfig()¶
Return the settings that came from the command-line.
These settings come via addCommandLineSetting().
- config()¶
Return the configuration of the object as a dictionary.
This is a combination of defaultConfig() and userConfig(). This method caches the config.
- configFilename()¶
Return the full name of the user config file.
Users can override the configuration by this config file. Subclasses must override to specify a name. Returning None is valid, in which case no user config file will be loaded.
- configName()¶
Return the name of the configuration file without the extension.
This is the portion of the config file name before the ‘.config’. This is used on the command-line.
- configReplacementValues()¶
Return a dictionary for substitutions in the config file.
This must be a dictionary suitable for use with “string % dict” that should be used on the text in the config file. If an empty dictionary (or None) is returned, then no substitution will be attempted.
- defaultConfig()¶
Return a dictionary with all the default values for the settings.
This implementation returns {}. Subclasses should override.
- hasSetting(name)¶
Check whether a configuration setting has been changed.
- printConfig(dest=None)¶
Print the configuration to the given destination.
The default destination is stdout. A fixed with font is assumed for aligning the values to start at the same column.
- static readConfig(filename)¶
Read the configuration from the file with the given name.
Raises an UIError if the configuration cannot be read.
This implementation assumes the file is stored in utf-8 encoding with possible BOM at the start, but also tries to read as latin-1 if it cannot be decoded as utf-8. Subclasses can override this behavior.
- setSetting(name, value)¶
Set a particular configuration setting.
- setting(name, default=<class 'MiscUtils.NoDefault'>)¶
Return the value of a particular setting in the configuration.
- userConfig()¶
Return the user config overrides.
These settings can be found in the optional config file. Returns {} if there is no such file.
The config filename is taken from configFilename().
- exception MiscUtils.Configurable.ConfigurationError¶
Bases:
Exception
Error in configuration file.
- __init__(*args, **kwargs)¶
- add_note()¶
Exception.add_note(note) – add a note to the exception
- args¶
- with_traceback()¶
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- MiscUtils.Configurable.addCommandLineSetting(name, value)¶
Override the configuration with a command-line setting.
Take a setting, like “Application.Verbose=0”, and call addCommandLineSetting(‘Application.Verbose’, ‘0’), and it will override any settings in Application.config
- MiscUtils.Configurable.commandLineSetting(configName, settingName, default=<class 'MiscUtils.NoDefault'>)¶
Retrieve a command-line setting.
You can use this with non-existent classes, like “Context.Root=/Webware”, and then fetch it back with commandLineSetting(‘Context’, ‘Root’).