Coverage for causalspyne/conf.py: 0%
44 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-19 14:58 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-19 14:58 +0000
1import argparse
2import configparser
3# ConfigArgParse is a drop-in replacement for argparse that allows options to
4# be set via config files and environment variables.
7class DynamicConfig:
8 def __init__(self, conf):
9 for key, value in conf.items():
10 setattr(self, key, value)
13def parse_args_and_config():
14 parser = argparse.ArgumentParser()
15 # parser = configargparse.ArgumentParser(description='Your program description')
16 parser.add_argument('-c', '--config', help='Config file path')
17 parser.add_argument('--option1', help='Option 1 description')
18 parser.add_argument('--option2', help='Option 2 description')
19 args = parser.parse_args()
21 config = configparser.ConfigParser()
22 if args.config:
23 config.read(args.config)
25 # Merge config file and command line arguments
26 options = {}
27 if 'DEFAULT' in config:
28 options.update(config['DEFAULT'])
29 options.update({k: v for k, v in vars(args).items() if v is not None})
31 return options
32def load_config_from_file(file_path):
33 config = configparser.ConfigParser()
34 config.read(file_path)
35 return config
37def parse(args):
38 if args.config:
39 config = load_config_from_file(args.config)
40 db_host = config.get('database', 'host', fallback=args.db_host)
41 db_port = config.getint('database', 'port', fallback=args.db_port)
42 db_user = config.get('database', 'user', fallback=args.db_user)
43 db_password = config.get('database', 'password', fallback=args.db_password)
44 db_name = config.get('database', 'dbname', fallback=args.db_name)
45 server_host = config.get('server', 'host', fallback=args.server_host)
46 server_port = config.getint('server', 'port', fallback=args.server_port)
47 else:
48 db_host = args.db_host
49 db_port = args.db_port
50 db_user = args.db_user
51 db_password = args.db_password
52 db_name = args.db_name
53 server_host = args.server_host
54 server_port = args.server_port
56def test_args():
57 options = parse_args_and_config()
58 print(options)