def test_returning_default(self): for dval in [[], ['a', 'b'], {}, {'a': 'b'}]: ass_fn = self.assertListEqual if isinstance( dval, list) else self.assertDictEqual with self.assertRaises( AssertionError): # unsupported file extension from_file(randstr(10)) fname = randstr(8) + '.yaml' ass_fn(from_file(fname, dval), dval) # non existing os.system(f"echo '' > {fname}") ass_fn(from_file(fname, dval), dval) os.system(f"echo 'abcd' > {fname}") ass_fn(from_file(fname, dval), dval)
def load(self, fname: str = None, job_name: str = None): if not fname: fname = Job.job_cache_file(job_name) if os.path.isfile(fname): self.protocol = from_file(fname, default="==FATAL==") self.protocol.setdefault( 'protocolVersion', '1') # v1 protocol (json) has no protocolVersion return self
def test_update_defaults(self): # ! not test global defaults updating, test it in integration tests test_key, test_value = self.get_random_var_name(), randstr(10) # add a default key update_default(test_key, test_value, is_global=False, to_delete=False) self.assertEqual( get_defaults()[test_key], test_value, msg=f"failed to check {test_key} in {LayeredSettings.as_dict()}") # should appear in local self.assertEqual( from_file(self.local_default_file)[test_key], test_value) # delete update_default(test_key, test_value, is_global=False, to_delete=True) with self.assertRaises(KeyError): os.system(f"cat {self.local_default_file}") from_file(self.local_default_file, {})[test_key] # add not allowed test_key = randstr(10) update_default(test_key, test_value, is_global=False, to_delete=False) with self.assertRaises(KeyError): from_file(self.local_default_file, {})[test_key]
def test_reading_failures(self): with self.assertRaises(Exception): # non existing file from_file(randstr(8) + '.yaml') with self.assertRaises(AssertionError): # unsupported file extension from_file(randstr(10)) with self.assertRaises(Exception): fname = randstr(10) + '.json' os.system(f"touch {fname}") from_file(fname)
def __init__(self, name: str, include: list = None, exclude: list = None, file: str = None, values: dict = None, allow_unknown: bool = True): self.name = name self.file = file self.values = from_file(file, {}, silent=True) if file else na( values, {}) self.definitions = OrganizedList(__flags__.default_var_definitions(), _key="name").filter( None, include, exclude) # type: OrganizedList
def load(self, fname: str = None, job_name: str = None, cluster_alias: str = None): if cluster_alias: # load job config from cluster by REST api job_name = na(job_name, self.name) self.protocol = get_cluster(cluster_alias).rest_api_job_info( job_name, 'config') else: # load from local file if not fname: fname = Job(job_name).protocol_file if os.path.isfile(fname): self.protocol = from_file(fname, default="==FATAL==") self.protocol.setdefault( 'protocolVersion', '1') # v1 protocol (json) has no protocolVersion return self
def load(self, fname: str = __cluster_config_file__): self.clusters = from_file(fname, default=[]) ClusterList.validate(self.clusters) return self
def load(self, fname: str=__cluster_config_file__): self.clusters = from_file(fname, default=[]) assert isinstance(self.clusters, list), "contents in %s should be a list" % __cluster_config_file__ return self
def load(self, fname: str = __cluster_config_file__): self.clusters = from_file(fname, default=[]) return self
def load(self, fname: str = None): fname = na(fname, self.default_config_file) self.clusters = OrganizedList(from_file(fname, default=[]), _key="cluster_alias") return self