Source code for pycif.plugins.obsoperators.standard.transforms.utils.propagate_dates



[docs] def propagate_dates(all_transforms, mapper): # Propagates backwards to precursors for transform in all_transforms.attributes[::-1]: transf = getattr(all_transforms, transform) transf_mapper = mapper[transform] # Propagate outputs to inputs for trid_in in transf_mapper["inputs"]: if "input_dates" in transf_mapper["inputs"][trid_in]: continue for trid_out in transf_mapper["outputs"]: # If dates_from_previous = True, # then forbid backwards propagation if transf_mapper["outputs"][trid_out].get( "dates_from_previous", False): continue if "input_dates" in transf_mapper["outputs"][trid_out]: transf_mapper["inputs"][trid_in]["input_dates"] = \ transf_mapper["outputs"][trid_out]["input_dates"] # Loop over precursors to propagate info to them precursors = transf_mapper["precursors"] for trid in precursors: if "input_dates" not in transf_mapper["inputs"][trid]: continue for tr in precursors[trid]: if "input_dates" not in mapper[tr]["outputs"][trid]: mapper[tr]["outputs"][trid]["input_dates"] = \ transf_mapper["inputs"][trid]["input_dates"] # Propagates forwards to successors for transform in all_transforms.attributes: transf = getattr(all_transforms, transform) transf_mapper = mapper[transform] # Propagate inputs to outputs for trid_out in transf_mapper["outputs"]: if "input_dates" in transf_mapper["outputs"][trid_out]: continue for trid_in in transf_mapper["inputs"]: if "input_dates" in transf_mapper["inputs"][trid_in]: transf_mapper["outputs"][trid_out]["input_dates"] = \ transf_mapper["inputs"][trid_in]["input_dates"] # Loop over precursors to propagate info to them successors = transf_mapper["successors"] for trid in successors: if "input_dates" not in transf_mapper["outputs"][trid]: continue for tr in successors[trid]: if "input_dates" not in mapper[tr]["inputs"][trid]: mapper[tr]["inputs"][trid]["input_dates"] = \ transf_mapper["outputs"][trid]["input_dates"]