Config file format¶
The configuration file parser is provided by kobo
The file follows a Python-like format. It consists of a sequence of variables that have a value assigned to them.
variable = value
The variable names must follow the same convention as Python code: start with a letter and consist of letters, digits and underscores only.
The values can be either an integer, float, boolean (True
or False
), a
string or None
. Strings must be enclosed in either single or double quotes.
Complex types are supported as well.
A list is enclosed in square brackets and items are separated with commas. There can be a comma after the last item as well.
a_list = [1,
2,
3,
]
A tuple works like a list, but is enclosed in parenthesis.
a_tuple = (1, "one")
A dictionary is wrapped in brackets, and consists of key: value
pairs
separated by commas. The keys can only be formed from basic types (int, float,
string).
a_dict = {
'foo': 'bar',
1: None
}
The value assigned to a variable can also be taken from another variable.
one = 1
another = one
Anything on a line after a #
symbol is ignored and functions as a comment.
Importing other files¶
It is possible to include another configuration file. The files are looked up relative to the currently processed file.
The general structure of import is:
from FILENAME import WHAT
The FILENAME
should be just the base name of the file without extension
(which must be .conf
). WHAT
can either be a comma separated list of
variables or *
.
# Opens constants.conf and brings PI and E into current scope.
from constants import PI, E
# Opens common.conf and brings everything defined in that file into current
# file as well.
from common import *
Note
Pungi will copy the configuration file given on command line into the
logs/
directory. Only this single file will be copied, not any included
ones. (Copying included files requires a fix in kobo library.)
The JSON-formatted dump of configuration is correct though.
Formatting strings¶
String interpolation is available as well. It uses a %
-encoded format. See
Python documentation for more details.
joined = "%s %s" % (var_a, var_b)
a_dict = {
"fst": 1,
"snd": 2,
}
another = "%(fst)s %(snd)s" % a_dict