def _get_paths(base_path, smlt): # extract the path names for the source models listed in the smlt file for model in source.collect_source_model_paths(smlt): for name in model.split(): assert_relpath(name, smlt) fname = os.path.abspath(os.path.join(base_path, name)) if os.path.exists(fname): # consider only real paths yield fname
def _get_paths(smlt): # extract the path names for the source models listed in the smlt file base_path = os.path.dirname(smlt) for model in source.collect_source_model_paths(smlt): for name in model.split(): if os.path.isabs(name): raise InvalidFile('%s: %s must be a relative path' % (smlt, name)) fname = os.path.abspath(os.path.join(base_path, name)) if os.path.exists(fname): # consider only real paths yield fname
def gen_sm_paths(smlt): """ Yields the path names for the source models listed in the smlt file, a block at the time. """ base_path = os.path.dirname(smlt) for model in source.collect_source_model_paths(smlt): paths = [] for name in model.split(): if os.path.isabs(name): raise InvalidFile('%s: %s must be a relative path' % (smlt, name)) fname = os.path.abspath(os.path.join(base_path, name)) if os.path.exists(fname): # consider only real paths paths.append(fname) yield paths
def get_params(job_inis): """ Parse one or more INI-style config files. :param job_inis: List of configuration files (or list containing a single zip archive) :returns: A dictionary of parameters """ if len(job_inis) == 1 and job_inis[0].endswith('.zip'): job_inis = extract_from_zip( job_inis[0], ['job_hazard.ini', 'job_haz.ini', 'job.ini', 'job_risk.ini']) not_found = [ini for ini in job_inis if not os.path.exists(ini)] if not_found: # something was not found raise IOError('File not found: %s' % not_found[0]) cp = configparser.ConfigParser() cp.read(job_inis) # drectory containing the config files we're parsing job_ini = os.path.abspath(job_inis[0]) base_path = os.path.dirname(job_ini) params = dict(base_path=base_path, inputs={'job_ini': job_ini}) for sect in cp.sections(): for key, value in cp.items(sect): if key.endswith(('_file', '_csv')): input_type, _ext = key.rsplit('_', 1) path = value if os.path.isabs(value) else os.path.join( base_path, value) params['inputs'][input_type] = possibly_gunzip(path) else: params[key] = value # populate the 'source' list smlt = params['inputs'].get('source_model_logic_tree') if smlt: params['inputs']['source'] = [ os.path.join(base_path, src_path) for src_path in source.collect_source_model_paths(smlt) ] return params
def get_params(job_inis): """ Parse one or more INI-style config files. :param job_inis: List of configuration files (or list containing a single zip archive) :returns: A dictionary of parameters """ if len(job_inis) == 1 and job_inis[0].endswith('.zip'): job_inis = extract_from_zip( job_inis[0], ['job_hazard.ini', 'job_haz.ini', 'job.ini', 'job_risk.ini']) not_found = [ini for ini in job_inis if not os.path.exists(ini)] if not_found: # something was not found raise IOError('File not found: %s' % not_found[0]) cp = configparser.ConfigParser() cp.read(job_inis) # drectory containing the config files we're parsing job_ini = os.path.abspath(job_inis[0]) base_path = os.path.dirname(job_ini) params = dict(base_path=base_path, inputs={'job_ini': job_ini}) for sect in cp.sections(): for key, value in cp.items(sect): if key.endswith(('_file', '_csv')): input_type, _ext = key.rsplit('_', 1) path = value if os.path.isabs(value) else os.path.join( base_path, value) params['inputs'][input_type] = possibly_gunzip(path) else: params[key] = value # populate the 'source' list smlt = params['inputs'].get('source_model_logic_tree') if smlt: params['inputs']['source'] = [ os.path.join(base_path, src_path) for src_path in sorted(source.collect_source_model_paths(smlt))] return params