def interpret_easy_algo_config(filename, data): """ Interprets the family config """ basename = os.path.basename(filename) family_name = dtu.id_from_basename_pattern(basename, EasyAlgoDB.pattern) instances_pattern = '*.%s.yaml' % family_name # tests_pattern = '*.%s_test.yaml' % family_name dtu.dt_check_isinstance('contents', data, dict) description = data.pop('description') dtu.dt_check_isinstance('description', description, str) interface = data.pop('interface') dtu.dt_check_isinstance('interface', interface, str) locations = data.pop('locations', None) default_constructor = data.pop('default_constructor', None) if data: msg = 'Extra keys in configuration: %s' % list(data) raise dtu.DTConfigException(msg) return EasyAlgoFamily(interface=interface, family_name=family_name, filename=filename, instances=None, instances_pattern=instances_pattern, description=description, valid=True, locations=locations, default_constructor=default_constructor, error_if_invalid=False)
def interpret_instance_spec(filename, data): dtu.dt_check_isinstance('data', data, dict) basename = os.path.basename(filename) instance_name = dtu.id_from_basename_pattern( basename, c.instances_pattern) if c.default_constructor is not None and not 'constructor' in data: description = '(not given)' constructor = c.default_constructor parameters = OrderedDict(data) else: description = data.pop('description') dtu.dt_check_isinstance('description', description, str) constructor = data.pop('constructor') dtu.dt_check_isinstance('constructor', constructor, str) parameters = data.pop('parameters') dtu.dt_check_isinstance('parameters', parameters, (dict, NoneType)) if parameters is None: parameters = {} return EasyAlgoInstance(family_name=c.family_name, instance_name=instance_name, description=description, filename=filename, constructor=constructor, parameters=parameters, valid=True, error_if_invalid=None)