Source documentation

ihih - simple configuration parsers with dictionary-like interface

Source code:GitLab project
License:BSD 3-Clause
class ihih.IHIH(filenames, ignore_errors=False, *args, **kwargs)

Bases: dict

IHIH - simple configuration parser

One key/value pair per line.

encoding = 'utf8'

define the encoding

_escape = '(?<!\\\\)(?:\\\\\\\\)*'

regexp definition of the escape sequence

_escaped_chars = '[\\\\\\\'\\"\\#/\\\\]'

regexp definition of characters to unconditionally un-escape

_separator = '\\='

regexp definition of key/value separator

Must be a fixed-width expression.

_extract = '^\\s*\n (?P<key>.+?)\n \\s*%(separator)s\\s*\n (?P<value>.*)'

extract key = [value] on a single line

_quote = '["\\\']'

define what a quote might be

_quoted = '%(escape)s(?P<quote>%(quote)s)(?P<value>.*?)%(escape)s(?P=quote)'

how to find a quoted value

_bool = '^(?P<false>0|no|false|off|disabled)|(?P<true>1|yes|true|on|enabled)$'

regexp definition of a boolean value (used by get_bool())

__init__(filenames, ignore_errors=False, *args, **kwargs)

attempt to parse a list of filenames

Parameters:
  • filenames (str or list(str)) – one or many path to files
  • ignore_errors (bool) – fail silently on OSError
  • args (list) – passed to dict constructor
  • kwargs (dict) – passed to dict constructor
_comment = '(\\s*%(escape)s(?:\\#|//))'

regexp definition of an in-line comment

ignore_errors = False

do not stop on OSError when reading sources

reload(force=False, ignore_errors=None)

call parse() on each configuration file

Parameters:
  • force (bool) – force (re)loading of files
  • ignore_errors (bool) – ignore unreadable files
Returns:

None

parse(filename, force=False, ignore_errors=None)

parse a configuration file

Parameters:
  • filename (str) – path to file to parse
  • force (bool) – force (re)loading of files
  • ignore_errors (bool) – ignore unreadable files, default: ignore_errors
Returns:

bool

Note

filename should be an absolute path.

_unescape(value, quote=None)

remove escape prefix on “known escape”

See _escaped_chars.

This method attempt to utf8 encode unicode() objects.

_handle_fragment(fragment, quote=None)

handle a fragment of a value

Provided to help on subclassing.

_comment_at(value)

return the position of the begining of a comment

_parse_value(value, data)

parse the “value” part of a “key / value”

This function handle the quoted parts and the comments.

Parameters:
  • value (str) – value to parse
  • data – instance supporting += operator
Returns:

parsed value

Return type:

type of data

__contains__(key)

True if self contains key

Note

The key will be casted as text_type().

__setitem__(key, value)

set item key to value

Note

The key will be casted as text_type().

__getitem__(key)

return key value as internal type

You probably want to use one of the following: get_text(), get_float(), get_int().

Note

The key will be casted as text_type().

__delitem__(key)

delete key from dict

Note

The key will be casted as text_type().

__weakref__

list of weak references to the object (if defined)

get_text(key, default=None)

return key value as text_type() or default if not found

Note

The key will be casted as text_type().

get(key, default=None)

alias to get_text()

get_float(key, default=None, errors='strict')

return key value as float() or default if not found

If errors is “ignore”, return default value instead of raising ValueError on failure.

Note

The key will be casted as text_type().

get_int(key, default=None, errors='strict', base=10)

return key value as int() or default if not found

If errors is “ignore”, return default value instead of raising ValueError on failure.

Note

The key will be casted as text_type().

get_bool(key, default=None)

attempt to coerce key value to a boolean accordingly _bool rules

class ihih.IHIHI(*args, **kwargs)

Bases: ihih.IHIH

IHIH Interpolate - IHIH with variable interpolation

_IHIHI__getkey(key, path=None)

return key value as internal type with interpolated variables

For more informations, see: __getitem__().

_variable = '%(escape)s\\$(?P<value>\\w+|%(escape)s\\{(?P<unquoted>.+?)%(escape)s\\})'

regexp definition of a “variable”

_escaped_chars = '[\\\\\\\'\\"\\#/\\\\\\$\\{\\}]'

regexp definition of characters to unconditionally un-escape

__init__(*args, **kwargs)

attempt to parse a list of filenames

Parameters:
  • filenames (str or list(str)) – one or many path to files
  • ignore_errors (bool) – fail silently on OSError
  • args (list) – passed to dict constructor
  • kwargs (dict) – passed to dict constructor
__setitem__(key, value)

set item key to value

Note

The key will be casted as text_type().

_handle_fragment(fragment, quote=None)

search for variables in fragment

__getitem__(key)

return key value as internal type

You probably want to use one of the following: get_text(), get_float(), get_int().

Note

The key will be casted as text_type().

_recursive(value)

recursive variable handler

Default: empty string

You can overwrite this function when subclassing and chose to return a unexpended version of the variable, raise an error or make a single, non recursive, lookup.