comparison env/lib/python3.9/site-packages/galaxy/util/facts.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 """Return various facts for string formatting.
2 """
3 import socket
4 from collections.abc import MutableMapping
5
6
7 class Facts(MutableMapping):
8 """A dict-like object that evaluates values at access time."""
9
10 def __init__(self, config=None, **kwargs):
11 config = config or {}
12 self.__dict__ = {}
13 self.__set_defaults(config)
14 self.__set_config(config)
15 self.__dict__.update(dict(**kwargs))
16
17 def __set_defaults(self, config):
18 # config here may be a Galaxy config object, or it may just be a dict
19 defaults = {
20 'server_name': lambda: config.get('base_server_name', 'main'),
21 'server_id': None,
22 'instance_id': None,
23 'pool_name': None,
24 'fqdn': lambda: socket.getfqdn(),
25 'hostname': lambda: socket.gethostname().split('.', 1)[0],
26 }
27 self.__dict__.update(defaults)
28
29 def __set_config(self, config):
30 if config is not None:
31 for name in dir(config):
32 if not name.startswith('_') and isinstance(getattr(config, name), str):
33 self.__dict__['config_' + name] = lambda name=name: getattr(config, name)
34
35 def __getitem__(self, key):
36 item = self.__dict__.__getitem__(key)
37 if callable(item):
38 return item()
39 else:
40 return item
41
42 # Other methods pass through to the corresponding dict methods
43
44 def __setitem__(self, key, value):
45 return self.__dict__.__setitem__(key, value)
46
47 def __delitem__(self, key):
48 return self.__dict__.__delitem__(key)
49
50 def __iter__(self):
51 return self.__dict__.__iter__()
52
53 def __len__(self):
54 return self.__dict__.__len__()
55
56 def __str__(self):
57 return self.__dict__.__str__()
58
59 def __repr__(self):
60 return self.__dict__.__repr__()
61
62
63 def get_facts(config=None, **kwargs):
64 return Facts(config=config, **kwargs)