cement.core.config

Cement core config module.

class cement.core.config.ConfigHandler(**kw)[source]

Bases: cement.core.config.ConfigInterface, cement.core.handler.Handler

Config handler implementation.

_parse_file(file_path)[source]

Parse a configuration file at file_path and store it. This function must be provided by the handler implementation (that is sub-classing this).

Parameters:file_path (str) – The file system path to the configuration file.
Returns:True if file was read properly, False otherwise
Return type:bool
parse_file(file_path)[source]

Ensure we are using the absolute/expanded path to file_path, and then call self._parse_file to parse config file settings from it, overwriting existing config settings.

Developers sub-classing from here should generally override _parse_file which handles just the parsing of the file and leaving this function to wrap any checks/logging/etc.

Parameters:file_path (str) – The file system path to the configuration file.
Returns:
True if the given file_path was parsed, and False
otherwise.
Return type:bool
class cement.core.config.ConfigInterface(**kw)[source]

Bases: cement.core.interface.Interface

This class defines the Config Interface. Handlers that implement this interface must provide the methods and attributes defined below. In general, most implementations should sub-class from the provided ConfigHandler base class as a starting point.

class Meta[source]

Bases: object

Handler meta-data.

interface = 'config'

The string identifier of the interface.

add_section(section)[source]

Add a new section if it doesn’t already exist.

Parameters:section – The section label to create.
Returns:None
get(section, key)[source]

Return a configuration value based on section.key. Must honor environment variables if they exist to override the config… for example config['myapp']['foo']['bar'] must be overridable by the environment variable MYAPP_FOO_BAR…. Note that MYAPP_ must prefix all vars, therefore config['redis']['foo'] would be overridable by MYAPP_REDIS_FOO … but config['myapp']['foo']['bar'] would not have a double prefix of MYAPP_MYAPP_FOO_BAR.

Parameters:
  • section (str) – The section of the configuration to pull key values from.
  • key (str) – The configuration key to get the value for.
Returns:

The value of the key in section.

Return type:

unknown

get_dict()[source]

Return a dict of the entire configuration.

Returns:A dictionary of the entire config.
Return type:dict
get_section_dict(section)[source]

Return a dict of configuration parameters for section.

Parameters:section (str) – The config section to generate a dict from (using that sections’ keys).
Returns:A dictionary of the config section.
Return type:dict
get_sections()[source]

Return a list of configuration sections.

Returns:A list of config sections.
Return type:list
has_section(section)[source]

Returns whether or not the section exists.

Parameters:section (str) – The section to test for.
Returns:
True if the configuration section exists, False
otherwise.
Return type:bool
keys(section)[source]

Return a list of configuration keys from section.

Parameters:section (list) – The config section to pull keys from.
Returns:A list of keys in section.
Return type:list
merge(dict_obj, override=True)[source]

Merges a dict object into the configuration.

Parameters:
  • dict_obj (dict) – The dictionary to merge into the config
  • override (bool) – Whether to override existing values or not.
Returns:

None

parse_file(file_path)[source]

Parse config file settings from file_path. Returns True if the file existed, and was parsed successfully. Returns False otherwise.

Parameters:file_path (str) – The path to the config file to parse.
Returns:True if the file was parsed, False otherwise.
Return type:bool
set(section, key, value)[source]

Set a configuration value based at section.key.

Parameters:
  • section (str) – The section of the configuration to pull key value from.
  • key (str) – The configuration key to set the value at.
  • value – The value to set.
Returns:

None