Source code for schedview.collect.resources

from lsst.resources import ResourcePath
from rubin_scheduler.sim_archive import read_archived_sim_metadata


[docs] def find_file_resources(base_resource_uri, file_filter=None): """Find matching files in a resource. Parameters ---------- base_resource_uri : `str` The uri of the resource to search file_filter : `str` or `re.Pattern`, optional Regex to filter out files from the list before it is returned. Returns ------- files : `list` of `str` The list of matching files available at the resource. """ base_resource = ResourcePath(base_resource_uri) accumulated_files = [] for dir_path, dir_names, file_names in base_resource.walk(file_filter=file_filter): for file_name in file_names: qualified_file_name = dir_path.join(file_name).geturl() if qualified_file_name not in accumulated_files: accumulated_files.append(qualified_file_name) return accumulated_files
def find_archive_resources(base_resource_uri, file_key=None, latest_date=None, num_nights=5): """Find matching files in a resource. Parameters ---------- base_resource_uri : `str` The uri of the resource to search file_key : `str` The file time as keyed in the archive metadata files. latest_date : `str`, optional The date of the latest simulation to return. num_nights : `int`, optional The with of the date window to search for simulations. Returns ------- files : `dict` The dictionary of matching resources. """ accumulated_files = {} sim_metadata = read_archived_sim_metadata(base_resource_uri, latest=latest_date, num_nights=num_nights) for sim_uri, sim_metadata in sim_metadata.items(): try: label = sim_metadata["label"] accumulated_files[label] = sim_uri except KeyError: pass return accumulated_files