4031: Improve provenance graph tests for readability, use fixtures instead of
[arvados.git] / sdk / python / arvados / config.py
1 # config.py - configuration settings and global variables for Arvados clients
2 #
3 # Arvados configuration settings are taken from $HOME/.config/arvados.
4 # Environment variables override settings in the config file.
5
6 import os
7 import re
8
9 _settings = None
10 if os.environ.get('HOME') != None:
11     default_config_file = os.environ['HOME'] + '/.config/arvados/settings.conf'
12 else:
13     default_config_file = ''
14
15 EMPTY_BLOCK_LOCATOR = 'd41d8cd98f00b204e9800998ecf8427e+0'
16
17 def initialize(config_file=default_config_file):
18     global _settings
19     _settings = {}
20     if os.path.exists(config_file):
21         with open(config_file, "r") as f:
22             for config_line in f:
23                 if re.match('^\s*#', config_line):
24                     continue
25                 var, val = config_line.rstrip().split('=', 2)
26                 _settings[var] = val
27     for var in os.environ:
28         if var.startswith('ARVADOS_'):
29             _settings[var] = os.environ[var]
30
31 def flag_is_true(key):
32     return get(key, '').lower() in set(['1', 't', 'true', 'y', 'yes'])
33
34 def get(key, default_val=None):
35     return settings().get(key, default_val)
36
37 def settings():
38     if _settings is None:
39         initialize()
40     return _settings