Configuration¶
-
asab.
Config
¶
The configuration is provided by Config
object which is a singleton. It means that you can access Config
from any place of your code, without need of explicit initialisation.
import asab
# Initialize application object and hence the configuration
app = asab.Application()
# Access configuration values anywhere
my_conf_value = asab.Config['section_name']['key1']
Based on ConfigParser¶
The Config
is inherited from Python Standard Library configparser.ConfigParser
class. which implements a basic configuration language which provides a structure similar to what’s found in Microsoft Windows INI files.
Example of the configuration file:
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no
And this is how you access configuration values:
>>> asab.Config['topsecret.server.com']['ForwardX11']
'no'
Automatic load of configuration¶
If a configuration file name is specified, the configuration is automatically loaded from a configuration file during initialiation time of Application
.
The configuration file name can be specified by one of -c
command-line argument (1), ASAB_CONFIG
environment variable (2) or config [general] config_file
default value (3).
./sample_app.py -c ./etc/sample.conf
Including other configuration files¶
You can specify one or more additional configuration files that are loaded and merged from an main configuration file.
It is done by [general] include
configuration value. Multiple paths are separated by os.pathsep
(:
on Unix).
The path can be specified as a glob (e.g. use of *
and ?
wildcard characters), it will be expanded by glob
module from Python Standard Library.
Included configuration files may not exists, this situation is silently ignored.
[general]
include=./etc/site.conf:./etc/site.d/*.conf
Configuration default values¶
-
Config.
add_defaults
(dictionary)¶
This is how you can extend configuration default values:
asab.Config.add_defaults(
{
'section_name': {
'key1': 'value',
'key2': 'another value'
},
'other_section': {
'key3': 'value',
},
}
)
Environment variables in configration¶
Environment variables found in values are automaticall expanded.
[section_name]
persistent_dir=${HOME}/.myapp/
>>> asab.Config['section_name']['persistent_dir']
'/home/user/.myapp/'