in auto_sizing/targets.py [0:0]
def from_file(self, target_dict: Dict, path: TextIO) -> List[Segment]:
if "segments" not in target_dict.keys():
raise SegmentsTagNotFoundException(path)
segments_dict = target_dict["segments"]
if "import_from_metric_hub" in segments_dict.keys():
for app_id, segments in segments_dict["import_from_metric_hub"].items():
for segment in segments:
segments_dict[segment] = ConfigLoader.get_segment(segment, app_id)
segments_dict.pop("import_from_metric_hub")
if (
"data_sources" in segments_dict.keys()
and "import_from_metric_hub" in segments_dict["data_sources"].keys()
):
for app_id, segment_data_sources in segments_dict["data_sources"][
"import_from_metric_hub"
].items():
for segment_data_source in segment_data_sources:
segments_dict["data_sources"][segment_data_source] = (
ConfigLoader.get_segment_data_source(segment_data_source, app_id)
)
segments_dict["data_sources"].pop("import_from_metric_hub")
Segment_list = []
for key, value in segments_dict.items():
if key == "data_sources":
continue
if isinstance(value, Segment):
Segment_list.append(value)
else:
data_source = segments_dict["data_sources"][value["data_source"]]
Segment_list.append(
Segment(
name=key,
data_source=SegmentDataSource(
name="", from_expr=data_source["from_expression"]
),
select_expr=ConfigLoader.configs.get_env()
.from_string(value["select_expression"])
.render(),
)
)
return Segment_list