<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17">
  <diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
    <mxGraphModel dx="2261" dy="956" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
        <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-0" value="TimeseriesGenerator" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
          <mxGeometry x="125" y="300" width="290" height="268" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-1" value="+ objects: pd.DataFrame" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="26" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-4" value="+ raise_on_error: bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="52" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-20" value="+ dependency_resolver: DependencyResolver" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="78" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-21" value="+ result_collector: ResultCollector" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="104" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-2" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="130" width="290" height="8" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-3" value="+ add_object(obj: dict)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="138" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-22" value="+ add_objects_from_dict(objs: list[dict])" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="164" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-23" value="+ add_objects_from_df(df: pd.DataFrame)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="190" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-24" value="+ generate(data: dict): Tuple" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="216" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-25" value="+ generate_sequential(data: dict): Tuple" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-0" vertex="1">
          <mxGeometry y="242" width="290" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-5" value="DependencyResolver" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
          <mxGeometry x="-210" y="710" width="260" height="112" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-6" value="+ cache: dict" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-5" vertex="1">
          <mxGeometry y="26" width="260" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-8" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="0DEu2SfM4y5Dg59nm3sH-5" vertex="1">
          <mxGeometry y="52" width="260" height="8" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-9" value="+ resolve(methods: dict): list" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-5" vertex="1">
          <mxGeometry y="60" width="260" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-32" value="+ visualize_dependencies(methods: dict)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-5" vertex="1">
          <mxGeometry y="86" width="260" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-10" value="ResultCollector" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
          <mxGeometry x="130" y="710" width="280" height="242" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-11" value="+ summary_list: list" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="26" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-12" value="+ timeseries_dict: dict" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="52" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-13" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="78" width="280" height="8" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-14" value="+ collect(results: list): Tuple" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="86" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-27" value="+ get_summary_df(): pd.DataFrame" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="112" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-28" value="+ get_timeseries_dict(): dict" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="138" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-29" value="+ export_summary(filepath: str, file_format: str)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="164" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-30" value="+ export_timeseries(directory: str, file_format: str)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="190" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-31" value="+ reset()" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-10" vertex="1">
          <mxGeometry y="216" width="280" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-15" value="Registry" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
          <mxGeometry x="490" y="710" width="320" height="112" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-16" value="+ VALID_TYPES: list[str]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-15" vertex="1">
          <mxGeometry y="26" width="320" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-18" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="0DEu2SfM4y5Dg59nm3sH-15" vertex="1">
          <mxGeometry y="52" width="320" height="8" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-19" value="+ get_method(name: str): callable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-15" vertex="1">
          <mxGeometry y="60" width="320" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-26" value="+ get_method_by_type(timeseries_type: str): list[callable]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="0DEu2SfM4y5Dg59nm3sH-15" vertex="1">
          <mxGeometry y="86" width="320" height="26" as="geometry" />
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-37" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="0DEu2SfM4y5Dg59nm3sH-0" target="0DEu2SfM4y5Dg59nm3sH-15" edge="1">
          <mxGeometry width="160" relative="1" as="geometry">
            <mxPoint x="400" y="590" as="sourcePoint" />
            <mxPoint x="600" y="700" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-41" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="0DEu2SfM4y5Dg59nm3sH-37" vertex="1" connectable="0">
          <mxGeometry x="0.9143" y="1" relative="1" as="geometry">
            <mxPoint x="4" y="-3" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-38" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="0DEu2SfM4y5Dg59nm3sH-5" target="0DEu2SfM4y5Dg59nm3sH-0" edge="1">
          <mxGeometry x="-0.9524" y="10" relative="1" as="geometry">
            <mxPoint x="460" y="680" as="sourcePoint" />
            <mxPoint x="200" y="570" as="targetPoint" />
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-42" value="Aggregate" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="0DEu2SfM4y5Dg59nm3sH-38" vertex="1" connectable="0">
          <mxGeometry x="-0.1097" y="2" relative="1" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-39" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" target="0DEu2SfM4y5Dg59nm3sH-0" edge="1">
          <mxGeometry x="-0.8597" relative="1" as="geometry">
            <mxPoint x="270" y="710" as="sourcePoint" />
            <mxPoint x="208" y="578" as="targetPoint" />
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="0DEu2SfM4y5Dg59nm3sH-43" value="Aggregate" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="0DEu2SfM4y5Dg59nm3sH-39" vertex="1" connectable="0">
          <mxGeometry x="-0.256" y="-1" relative="1" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
