Source code for idmtools_calibra.cli.utils
import os
import sys
import json
from importlib import import_module
[docs]def load_config_module(config_name):
# Support of relative paths
config_name = config_name.replace('\\', '/')
if '/' in config_name:
splitted = config_name.split('/')[:-1]
sys.path.append(os.path.join(os.getcwd(), *splitted))
else:
sys.path.append(os.getcwd())
module_name = os.path.splitext(os.path.basename(config_name))[0]
try:
return import_module(module_name)
except ImportError as e:
e.args = ("'%s' during loading module '%s' in %s files: %s." %
(e.msg, module_name, os.getcwd(), os.listdir(os.getcwd())),)
raise e
[docs]def get_calib_manager(config_name, calib_callback="get_manager"):
mod = load_config_module(config_name)
calib_manager = None
if hasattr(mod, calib_callback):
func = getattr(mod, calib_callback)
calib_manager = func()
else:
from idmtools_calibra.calib_manager import CalibManager
for k, v in mod.__dict__.items():
if isinstance(v, CalibManager):
calib_manager = v
break
# print("Sorry, couldn't locate calib_manager!")
if calib_manager is None:
raise Exception(f'Sorry! Unable to locate calib_manager in {config_name}')
return calib_manager
[docs]def read_calib_data(calib_path, force=False):
try:
return json.load(open(calib_path, 'rb'))
except IOError:
if not force:
raise Exception(f'Unable to find metadata in {calib_path}')
else:
return None