<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) 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" pages="4">
  <diagram id="hOmXKEejxs12YvGsgwzY" name="usage">
    <mxGraphModel dx="1835" dy="870" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1169" pageHeight="1654" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="mpo9OLShC69Xrk_bo134-23" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-284" y="212" width="1088" height="695" as="geometry" />
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-3" value="" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;dashed=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" source="mpo9OLShC69Xrk_bo134-2" target="OUoE7w_y1vDqKte6qC6K-2" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="13" y="642" as="sourcePoint" />
            <mxPoint x="63" y="592" as="targetPoint" />
            <Array as="points">
              <mxPoint x="-60" y="757" />
              <mxPoint x="-63" y="601" />
              <mxPoint x="13" y="592" />
              <mxPoint x="21" y="550" />
              <mxPoint x="96" y="500" />
              <mxPoint x="132" y="373" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="OUoE7w_y1vDqKte6qC6K-1" value="Publishing repo" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
          <mxGeometry x="150" y="286" width="250" height="240" as="geometry" />
        </mxCell>
        <mxCell id="OUoE7w_y1vDqKte6qC6K-2" value=".github | .azure" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="OUoE7w_y1vDqKte6qC6K-1" vertex="1">
          <mxGeometry y="30" width="250" height="30" as="geometry" />
        </mxCell>
        <mxCell id="f8mjkT4uyn7sIpw7mGKf-1" value="&lt;div&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;.paa&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" parent="OUoE7w_y1vDqKte6qC6K-1" vertex="1">
          <mxGeometry y="60" width="250" height="30" as="geometry" />
        </mxCell>
        <mxCell id="OUoE7w_y1vDqKte6qC6K-5" value="python_modules" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="OUoE7w_y1vDqKte6qC6K-1" vertex="1">
          <mxGeometry y="90" width="250" height="30" as="geometry" />
        </mxCell>
        <mxCell id="OUoE7w_y1vDqKte6qC6K-6" value="additional dirs for optional files" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="OUoE7w_y1vDqKte6qC6K-1" vertex="1">
          <mxGeometry y="120" width="250" height="30" as="geometry" />
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-1" value=".paa.config and other config files" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="OUoE7w_y1vDqKte6qC6K-1">
          <mxGeometry y="150" width="250" height="30" as="geometry" />
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-3" value="README" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="OUoE7w_y1vDqKte6qC6K-1">
          <mxGeometry y="180" width="250" height="30" as="geometry" />
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-2" value="LICENSE" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="OUoE7w_y1vDqKte6qC6K-1">
          <mxGeometry y="210" width="250" height="30" as="geometry" />
        </mxCell>
        <mxCell id="nKNuT7gZOhR22zOLDPsV-2" value="&amp;lt;package_name&amp;gt;.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-116" y="291" width="151" height="114" as="geometry" />
        </mxCell>
        <mxCell id="nKNuT7gZOhR22zOLDPsV-4" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fillColor=default;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="47" y="399.44" as="sourcePoint" />
            <mxPoint x="120" y="399" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="nKNuT7gZOhR22zOLDPsV-5" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="506" y="393" as="sourcePoint" />
            <mxPoint x="571" y="393" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="nKNuT7gZOhR22zOLDPsV-6" value="Package storage" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
          <mxGeometry x="566" y="329" width="204" height="133" as="geometry" />
        </mxCell>
        <mxCell id="nKNuT7gZOhR22zOLDPsV-12" value="CI/CD" style="triangle;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="428" y="353" width="60" height="80" as="geometry" />
        </mxCell>
        <mxCell id="nKNuT7gZOhR22zOLDPsV-8" value="" style="curved=1;endArrow=block;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="nKNuT7gZOhR22zOLDPsV-12" target="f8mjkT4uyn7sIpw7mGKf-1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="424" y="378" as="sourcePoint" />
            <mxPoint x="400" y="451" as="targetPoint" />
            <Array as="points">
              <mxPoint x="435" y="313" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-2" value="Contains paa ci/cd pipeline that prepares the package, publishes it, updates tracking files and optionally updates README." style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-28" y="752" width="153" height="124" as="geometry" />
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-4" value="Folder where .py files are stored. Each .py file is named as a package.&lt;br&gt;Subfolders can be used for local, unpackaged dependancies." style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-40" y="633" width="200" height="111" as="geometry" />
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-5" value="" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;dashed=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" source="mpo9OLShC69Xrk_bo134-4" target="OUoE7w_y1vDqKte6qC6K-5" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-139" y="694" as="sourcePoint" />
            <mxPoint x="138" y="414" as="targetPoint" />
            <Array as="points">
              <mxPoint x="79" y="611" />
              <mxPoint x="89" y="559" />
              <mxPoint x="125" y="432" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-6" value="Optional folder to store .ipynb files with corresponding name to .py files to be used as package description. Other similar folders to store extra docs, api, cli interfaces etc.&amp;nbsp;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="173" y="631" width="200" height="111" as="geometry" />
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-7" value="" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;dashed=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" source="mpo9OLShC69Xrk_bo134-6" target="OUoE7w_y1vDqKte6qC6K-6" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="51" y="705" as="sourcePoint" />
            <mxPoint x="136" y="457" as="targetPoint" />
            <Array as="points">
              <mxPoint x="196" y="615" />
              <mxPoint x="145" y="605" />
              <mxPoint x="100" y="570" />
              <mxPoint x="116" y="504" />
              <mxPoint x="129" y="438" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-8" value="Folder to store files persisted after publishing like laterst versions, logs, release notes, as well as optional user provided mappings and requirements." style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="198.5" y="751" width="153" height="121" as="geometry" />
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-9" value="" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;dashed=1;fillColor=#60a917;strokeColor=#2D7600;" parent="1" source="mpo9OLShC69Xrk_bo134-8" target="f8mjkT4uyn7sIpw7mGKf-1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="52" y="749" as="sourcePoint" />
            <mxPoint x="150" y="451" as="targetPoint" />
            <Array as="points">
              <mxPoint x="384" y="759" />
              <mxPoint x="388" y="602" />
              <mxPoint x="243" y="602" />
              <mxPoint x="205" y="602" />
              <mxPoint x="139" y="620" />
              <mxPoint x="108" y="598" />
              <mxPoint x="84" y="548" />
              <mxPoint x="128" y="409" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-16" value="The pipeline makes a package, publishes the package and pushes change to version tracking files and requirements files." style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="550" y="627" width="153" height="112" as="geometry" />
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-18" value="&lt;div style=&quot;&quot;&gt;A .py file with a code to be packaged, that follows some minimal requirements.&amp;nbsp;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;align=center;" parent="1" vertex="1">
          <mxGeometry x="-231" y="658" width="153" height="149" as="geometry" />
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-20" value="" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=0;exitX=-0.002;exitY=0.441;exitDx=0;exitDy=0;dashed=1;entryPerimeter=0;exitPerimeter=0;" parent="1" source="mpo9OLShC69Xrk_bo134-18" target="nKNuT7gZOhR22zOLDPsV-2" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-494" y="671" as="sourcePoint" />
            <mxPoint x="-217" y="391" as="targetPoint" />
            <Array as="points">
              <mxPoint x="-255" y="710" />
              <mxPoint x="-241" y="535" />
              <mxPoint x="-215" y="376" />
              <mxPoint x="-142" y="338" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="mpo9OLShC69Xrk_bo134-21" value="" style="curved=1;endArrow=none;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;endFill=0;" parent="1" source="nKNuT7gZOhR22zOLDPsV-12" target="mpo9OLShC69Xrk_bo134-16" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="576" y="525" as="sourcePoint" />
            <mxPoint x="626" y="475" as="targetPoint" />
            <Array as="points">
              <mxPoint x="485" y="631" />
              <mxPoint x="627" y="603" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-4" value="Optional files (.py, .ipynb, .drawio, .md, .png)" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="-100.5" y="422" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-8" value="" style="curved=1;endArrow=block;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="nKNuT7gZOhR22zOLDPsV-12" target="YOx7Jvs6nTXKDSO9EBSK-3">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="468" y="383" as="sourcePoint" />
            <mxPoint x="410" y="371" as="targetPoint" />
            <Array as="points">
              <mxPoint x="445" y="353" />
              <mxPoint x="427" y="338" />
              <mxPoint x="408" y="368" />
              <mxPoint x="418" y="475" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-9" value="Config files like .paa.config, tox.ini, .pylintrc to change behaviour of some elements of the publishing pipeline." style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
          <mxGeometry x="400" y="752" width="153" height="121" as="geometry" />
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-10" value="" style="curved=1;endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.464;entryY=-0.029;entryDx=0;entryDy=0;dashed=1;endFill=0;entryPerimeter=0;" edge="1" parent="1" source="YOx7Jvs6nTXKDSO9EBSK-1" target="YOx7Jvs6nTXKDSO9EBSK-9">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="148" y="449" as="sourcePoint" />
            <mxPoint x="317" y="663" as="targetPoint" />
            <Array as="points">
              <mxPoint x="122" y="497" />
              <mxPoint x="125" y="556" />
              <mxPoint x="231" y="567" />
              <mxPoint x="471" y="592" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-12" value="tests and linters&amp;nbsp; in PR" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeColor=default;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="49" y="321" width="60" height="48" as="geometry" />
        </mxCell>
        <mxCell id="YOx7Jvs6nTXKDSO9EBSK-13" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" target="YOx7Jvs6nTXKDSO9EBSK-12">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="80" y="391" as="sourcePoint" />
            <mxPoint x="112" y="430" as="targetPoint" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram name="input_output_files" id="WLMHj4V7T1tkh2896ld8">
    <mxGraphModel dx="3254" dy="2043" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-6" value="tests" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
          <mxGeometry x="-628.5" y="327" width="132.5" height="78" as="geometry" />
        </mxCell>
        <mxCell id="gH9P8Dfxt6CHixhxEZe5-3" value="module_name.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-828" y="-308" width="114" height="127" as="geometry" />
        </mxCell>
        <mxCell id="Jrc1zMWoi0aU3mgSClnk-2" value="&lt;h1&gt;Inputs&lt;/h1&gt;" style="text;html=1;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-647.5" y="-523" width="133" height="66" as="geometry" />
        </mxCell>
        <mxCell id="Jrc1zMWoi0aU3mgSClnk-44" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
          <mxGeometry x="-622.5" y="-308" width="322.5" height="245" as="geometry" />
        </mxCell>
        <mxCell id="Jrc1zMWoi0aU3mgSClnk-46" value="dep_name_1.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-604" y="-257" width="108" height="76" as="geometry" />
        </mxCell>
        <mxCell id="Jrc1zMWoi0aU3mgSClnk-47" value="dep_name_2.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-471" y="-257" width="104" height="77" as="geometry" />
        </mxCell>
        <mxCell id="Jrc1zMWoi0aU3mgSClnk-48" value="Local dependacies" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-620" y="-298" width="138" height="29" as="geometry" />
        </mxCell>
        <mxCell id="rKDuYdVevO0EODqZjKq1-14" value="essential files" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-809" y="-366" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rKDuYdVevO0EODqZjKq1-15" value="optional files" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-492.5" y="-371" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rKDuYdVevO0EODqZjKq1-19" value=".paa tracking files" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="556" y="-358" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="JQHpRhmS8jQEJa0AJP20-1" value="packaged files" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="74.25" y="-371" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="JQHpRhmS8jQEJa0AJP20-2" value="module_name.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#FFFF66;strokeWidth=4;" parent="1" vertex="1">
          <mxGeometry x="171" y="-319" width="110" height="73" as="geometry" />
        </mxCell>
        <mxCell id="JQHpRhmS8jQEJa0AJP20-3" value="__init__.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#B3B3B3;strokeWidth=4;" parent="1" vertex="1">
          <mxGeometry x="-93" y="-319" width="112" height="72" as="geometry" />
        </mxCell>
        <mxCell id="JQHpRhmS8jQEJa0AJP20-4" value="cli.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#b1ddf0;strokeColor=#10739e;" parent="1" vertex="1">
          <mxGeometry x="-88" y="-220" width="109" height="54" as="geometry" />
        </mxCell>
        <mxCell id="JQHpRhmS8jQEJa0AJP20-5" value="README.md" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fad9d5;strokeColor=#CCCCCC;strokeWidth=4;" parent="1" vertex="1">
          <mxGeometry x="171" y="-219" width="113" height="74" as="geometry" />
        </mxCell>
        <mxCell id="JQHpRhmS8jQEJa0AJP20-6" value="setup.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#B3B3B3;strokeWidth=4;" parent="1" vertex="1">
          <mxGeometry x="38" y="-275" width="111" height="65" as="geometry" />
        </mxCell>
        <mxCell id="JFXNRwP1D9T0VtGkk8EZ-3" value="routes.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
          <mxGeometry x="38" y="-200" width="117" height="60" as="geometry" />
        </mxCell>
        <mxCell id="JFXNRwP1D9T0VtGkk8EZ-4" value="LICENSE" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="172" y="-124" width="112" height="79" as="geometry" />
        </mxCell>
        <mxCell id="BzhZQ1S24n3nSU8fOKG9-1" value="cli.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=21;fillColor=#b1ddf0;strokeColor=#10739e;" parent="1" vertex="1">
          <mxGeometry x="-627.25" y="420" width="98" height="40" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-1" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-120" y="63" width="463" height="397" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-2" value=".paa.tracking" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-112" y="71" width="84" height="28" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-3" value=".paa.config" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
          <mxGeometry x="-112" y="111" width="99" height="57" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-4" value="notebook.ipynb" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
          <mxGeometry x="6" y="108.5" width="99" height="57" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-5" value=".paa.version" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;strokeColor=#B3B3B3;strokeWidth=3;" parent="1" vertex="1">
          <mxGeometry x="232" y="108.5" width="99" height="57" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-12" value="mkdocs" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#CCCCCC;strokeWidth=4;" parent="1" vertex="1">
          <mxGeometry x="-108" y="-139" width="129" height="83" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-14" value="artifacts" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
          <mxGeometry x="-108" y="-48.5" width="129" height="83" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-17" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-365" y="-229" width="60" height="34" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-19" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
          <mxGeometry x="-627.5" y="-36" width="322.5" height="145.5" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-20" value="extra_docs" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-611.5" y="-33" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="jS9VcDbqMC5c32hotzqq-21" value="doc1.md" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-615.5" y="-3" width="122.25" height="38" as="geometry" />
        </mxCell>
        <mxCell id="HDovtEMkiylPtLjFxC3v-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
          <mxGeometry x="-628" y="120.5" width="323" height="193.5" as="geometry" />
        </mxCell>
        <mxCell id="HDovtEMkiylPtLjFxC3v-2" value="artifacts" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-613" y="120.5" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="HDovtEMkiylPtLjFxC3v-3" value="artifact_1" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-620.5" y="166.5" width="115" height="56" as="geometry" />
        </mxCell>
        <mxCell id="HDovtEMkiylPtLjFxC3v-5" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-507" y="185.5" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-2" value="routes.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=21;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
          <mxGeometry x="-514.75" y="423" width="98" height="40" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-4" value="module_name.ipynb" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=21;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
          <mxGeometry x="-629.75" y="470" width="230" height="40" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-5" value="doc_n.png" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-434.5" y="49" width="121" height="38" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-6" value="artifact_n" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-459.5" y="166.5" width="115" height="56" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-7" value="MANIFEST.in" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#B3B3B3;strokeWidth=5;" parent="1" vertex="1">
          <mxGeometry x="171" y="-33" width="141.5" height="58" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-8" value="doc_n.png" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-613.5" y="49" width="121" height="38" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-9" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-494.5" y="55" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-10" value="doc_n.md" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-434.5" y="-6" width="121" height="38" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-11" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-494.5" y="2" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-12" value="tests" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
          <mxGeometry x="32" y="-48.5" width="129" height="83" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-13" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-105" y="245" width="418.5" height="142" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-14" value="python_modules" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-111.5" y="251" width="122.5" height="30" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-15" value="package_name.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
          <mxGeometry x="-93" y="316" width="99" height="57" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-16" value="Local dependencies&amp;nbsp;&lt;div&gt;for package_name&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
          <mxGeometry x="85" y="265.5" width="212" height="112.5" as="geometry" />
        </mxCell>
        <mxCell id="iJYY7QMdzL_WmRZI-q_U-17" value="components" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="74" y="268" width="122.5" height="30" as="geometry" />
        </mxCell>
        <mxCell id="vES-BqMGwAYMSnsNv8OG-1" value="streamlit.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=21;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1">
          <mxGeometry x="-403.75" y="423" width="98" height="40" as="geometry" />
        </mxCell>
        <mxCell id="vES-BqMGwAYMSnsNv8OG-2" value="streamlit.py" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1">
          <mxGeometry x="38" y="-124" width="117" height="60" as="geometry" />
        </mxCell>
        <mxCell id="vES-BqMGwAYMSnsNv8OG-3" value=".drawio" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;fillColor=#bac8d3;strokeColor=#23445d;" parent="1" vertex="1">
          <mxGeometry x="123" y="108.5" width="99" height="57" as="geometry" />
        </mxCell>
        <mxCell id="vES-BqMGwAYMSnsNv8OG-4" value="module_name.drawio" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=21;fillColor=#bac8d3;strokeColor=#23445d;" parent="1" vertex="1">
          <mxGeometry x="-629.5" y="519" width="229.5" height="40" as="geometry" />
        </mxCell>
        <mxCell id="Kg0pDtONjwEeAY3U2Hdf-1" value="" style="endArrow=none;html=1;rounded=0;entryX=0.206;entryY=0.895;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="Kg0pDtONjwEeAY3U2Hdf-3" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-203" y="613" as="sourcePoint" />
            <mxPoint x="-201" y="-445" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Kg0pDtONjwEeAY3U2Hdf-2" value="&lt;h1&gt;Outputs&lt;/h1&gt;" style="text;html=1;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="222" y="-527" width="171" height="66" as="geometry" />
        </mxCell>
        <mxCell id="Kg0pDtONjwEeAY3U2Hdf-3" value="&lt;b&gt;paa ci/cd&lt;/b&gt;" style="triangle;whiteSpace=wrap;html=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
          <mxGeometry x="-215" y="-539" width="74" height="80" as="geometry" />
        </mxCell>
        <mxCell id="Kg0pDtONjwEeAY3U2Hdf-10" value="subdir of local dep 1" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-608" y="-149" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Kg0pDtONjwEeAY3U2Hdf-11" value="subdir of local dep 2" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-476" y="-149" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Kg0pDtONjwEeAY3U2Hdf-12" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-356" y="-136" width="60" height="34" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-1" value="link to artifact_1" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;" parent="1" vertex="1">
          <mxGeometry x="-620.5" y="237" width="115" height="56" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-2" value="link to artifact_k" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;" parent="1" vertex="1">
          <mxGeometry x="-459.5" y="243" width="115" height="56" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-3" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-507" y="253" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="HDovtEMkiylPtLjFxC3v-1" target="HDovtEMkiylPtLjFxC3v-1" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-7" value="LICENSE" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-390.25" y="475.75" width="87" height="84" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-11" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#DAEDD9;strokeColor=#82b366;" parent="1" vertex="1">
          <mxGeometry x="366" y="-300.75" width="463" height="164" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-12" value=".paa" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="359" y="-301.25" width="70" height="28" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-13" value="lsts_package_versions.yml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;strokeColor=#B3B3B3;strokeWidth=3;" parent="1" vertex="1">
          <mxGeometry x="381" y="-198.75" width="214" height="57" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-14" value="package_mapping.json" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;strokeColor=#97D077;strokeWidth=3;" parent="1" vertex="1">
          <mxGeometry x="609.5" y="-266.25" width="211" height="56" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-15" value="package_licenses.json" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;strokeColor=#97D077;strokeWidth=3;" parent="1" vertex="1">
          <mxGeometry x="609.5" y="-203.75" width="211" height="56" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-16" value="release_notes.md" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;fillColor=#ffff88;strokeColor=#CCCCCC;strokeWidth=3;" parent="1" vertex="1">
          <mxGeometry x="496" y="-263" width="99" height="57" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-17" value="version_logs.csv" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=15;strokeColor=#B3B3B3;strokeWidth=3;" parent="1" vertex="1">
          <mxGeometry x="381.5" y="-265.75" width="99" height="57" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-19" value="tracking files" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAEDD9;" parent="1" vertex="1">
          <mxGeometry x="-108.25" y="188" width="434.25" height="46" as="geometry" />
        </mxCell>
        <mxCell id="9ltnNQeTjUeMNFoU3jiS-21" value="" style="curved=1;endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;endFill=0;" parent="1" source="9ltnNQeTjUeMNFoU3jiS-11" target="9ltnNQeTjUeMNFoU3jiS-19" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="512" y="63" as="sourcePoint" />
            <mxPoint x="562" y="13" as="targetPoint" />
            <Array as="points">
              <mxPoint x="323" y="-89" />
              <mxPoint x="412" y="19" />
              <mxPoint x="421" y="113" />
              <mxPoint x="391" y="211" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="1Zm162SSalw6I1Q0xWVj-1" value="extra_docs" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
          <mxGeometry x="-105" y="400" width="420" height="42" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="FzBXp8KW7ioups8E5STR" name="package_structure">
    <mxGraphModel dx="2488" dy="1424" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="O6DLvgTc-NirzbKMDfsa-68" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFBED;" parent="1" vertex="1">
          <mxGeometry x="-430" y="989" width="164" height="195" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFBED;strokeColor=#d6b656;" parent="1" vertex="1">
          <mxGeometry x="429" y="78" width="384" height="539" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-19" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="477" y="439" width="280" height="163" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-1" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;Package structure&lt;/h1&gt;&lt;div&gt;The way the package could be wired together is shown in this diagram. It allows for a combination of design patterns for the sake of maximum flexibility and reusability, as well as ease of use both in creation and usage of package created with paa. There could be different design patterns possible within this structure but only a recommended combination is show here.&amp;nbsp;&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-757" y="-358" width="350" height="176" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-2" value="&lt;b&gt;package_name.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
          <mxGeometry x="48" y="262" width="147" height="157" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-4" value="&lt;b&gt;local_dep 1&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="511" y="112" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-5" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="477" y="244" width="280" height="163" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-6" value="&lt;b&gt;local_dep 1&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="519" y="275.5" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-7" value="&lt;b&gt;local_dep l&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="642" y="275.5" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-8" value="&lt;b&gt;local_dep n&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="645" y="115" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-13" value="&lt;b&gt;local_dep 1&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="519" y="463.5" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-14" value="&lt;b&gt;local_dep p&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="642" y="463.5" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-15" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="587" y="154" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-16" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="591" y="318" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-17" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="591" y="404" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-18" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="591" y="500.5" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-20" value="&lt;b&gt;routes.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#006600;" parent="1" vertex="1">
          <mxGeometry x="42.5" y="-17" width="147" height="157" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-21" value="&lt;b&gt;cli.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#663300;" parent="1" vertex="1">
          <mxGeometry x="-201" y="101" width="147" height="157" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-22" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.449;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;endFill=0;startArrow=classic;startFill=1;" parent="1" source="O6DLvgTc-NirzbKMDfsa-20" target="O6DLvgTc-NirzbKMDfsa-2" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-20" y="273" as="sourcePoint" />
            <mxPoint x="30" y="223" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-23" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.997;exitY=0.548;exitDx=0;exitDy=0;exitPerimeter=0;entryX=-0.007;entryY=0.312;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endFill=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-21" target="O6DLvgTc-NirzbKMDfsa-2" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-25" y="496" as="sourcePoint" />
            <mxPoint x="25" y="446" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-24" value="" style="endArrow=ERmany;html=1;strokeWidth=1;rounded=0;exitX=0.983;exitY=0.513;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-2" target="O6DLvgTc-NirzbKMDfsa-3" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="230" y="231" as="sourcePoint" />
            <mxPoint x="280" y="181" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-25" value="&lt;b&gt;bundle 1&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="477" y="244" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-26" value="&lt;b&gt;bundle m&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="480" y="439" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-27" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F1EBF2;strokeColor=#9673a6;" parent="1" vertex="1">
          <mxGeometry x="-17.75" y="511" width="278.5" height="230" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-28" value="&lt;b&gt;artifact 1&lt;/b&gt;" style="shape=card;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="3" y="529" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-29" value="&lt;b&gt;artifact k&lt;/b&gt;" style="shape=card;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="153" y="529" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-30" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="86" y="572" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-31" value="" style="endArrow=classic;html=1;strokeWidth=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;startArrow=ERmany;startFill=0;endFill=1;" parent="1" source="O6DLvgTc-NirzbKMDfsa-27" target="O6DLvgTc-NirzbKMDfsa-2" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="108" y="512" as="sourcePoint" />
            <mxPoint x="158" y="462" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-34" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.014;entryY=0.672;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-35" target="O6DLvgTc-NirzbKMDfsa-2" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-91" y="397" as="sourcePoint" />
            <mxPoint x="-29" y="392" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-35" value="Paa is meant to produce &quot;single module package&quot;, meaning that only a single .py file is expected to be imported from a package like this. Local dependencies could also be access through it allowing 3 types of patterns.&amp;nbsp;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-394" y="397" width="317" height="99" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-37" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;1. Module pattern&lt;/h1&gt;&lt;div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;A single package_name.py exists but no local dependencies, or a single local dependency wired through a package_name.py for packaging but no extra code in package_name.py. This pattern is good for packaging super simple packages and select local dependency.&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-655" y="833" width="267" height="151" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-39" value="" style="endArrow=none;dashed=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-40" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-161" y="312" as="sourcePoint" />
            <mxPoint x="117" y="195" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-40" value="Fastapi routes, streamlit app and cli files are meant to contain cli interfaces that expose code from the package. The code could also be stored excusively within these files, but package_name.py should still exist even if all it has is a docstring and metadata. 2 types of pattern are recomended here." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-349" y="269" width="227" height="123" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-45" value="package-auto-assembler" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;size=7;fillColor=#DDE8DC;strokeColor=#97D077;" parent="1" vertex="1">
          <mxGeometry x="-245" y="560" width="142" height="61" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-46" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-249" y="595" as="sourcePoint" />
            <mxPoint x="-360" y="595" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-47" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0;entryDx=142;entryDy=34;entryPerimeter=0;exitX=0.007;exitY=0.358;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-27" target="O6DLvgTc-NirzbKMDfsa-45" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-78" y="626" as="sourcePoint" />
            <mxPoint x="-28" y="576" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-48" value="target destination" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeColor=#CC0000;" parent="1" vertex="1">
          <mxGeometry x="-449" y="556.5" width="80" height="80" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-49" value="package-auto-assembler" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;size=7;strokeColor=#97D077;fillColor=#DDE8DC;" parent="1" vertex="1">
          <mxGeometry x="57" y="-173" width="142" height="61" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-50" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.387;entryY=0.958;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.463;exitY=0.003;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-20" target="O6DLvgTc-NirzbKMDfsa-49" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="42.5" y="-9" as="sourcePoint" />
            <mxPoint x="109" y="-160" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-51" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0;exitDx=142;exitDy=34;exitPerimeter=0;width=5;endSize=6.28;strokeColor=#004C99;" parent="1" source="O6DLvgTc-NirzbKMDfsa-49" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="246" y="-136" as="sourcePoint" />
            <mxPoint x="266" y="-193" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-53" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;width=5;endSize=6.28;strokeColor=#004C99;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="202" y="-136" as="sourcePoint" />
            <mxPoint x="280" y="-136" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-54" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;width=5;endSize=6.28;strokeColor=#004C99;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="199" y="-135" as="sourcePoint" />
            <mxPoint x="259" y="-72" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-55" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-56" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-98" y="-41" as="sourcePoint" />
            <mxPoint x="65" y="-46" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-56" value="Additional interfaces like api routes are meant to be either extracted in select location or run within fastapi application with a use of paa package that provides tools for that." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-308" y="-86" width="202" height="81" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-57" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="47" y="-146" as="sourcePoint" />
            <mxPoint x="-64" y="-146" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-58" value="target destination" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeColor=#CC0000;" parent="1" vertex="1">
          <mxGeometry x="-153" y="-187" width="80" height="80" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-59" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;entryX=0.006;entryY=0.621;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="O6DLvgTc-NirzbKMDfsa-27" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-92" y="703" as="sourcePoint" />
            <mxPoint x="-56" y="593" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-60" value="The purpose of packaging artifacts is either to be trasported with the code that relies on them, or simply to be versioned within a package artifact and extracted with a use of paa package that provides tools for that." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-276" y="676" width="187" height="84" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-61" value="Local dependencies reffers to files stored within packaging repositry. There are independent components that could be shared between multiple packages but are not packaged themselves as is (could be though separate package_name.py)." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="440" y="-93" width="296" height="80" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-62" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;entryX=0.44;entryY=0.931;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="O6DLvgTc-NirzbKMDfsa-61" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="569" y="75" as="sourcePoint" />
            <mxPoint x="615" y="17" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-64" value="&lt;b&gt;package_name.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-640" y="1022" width="124" height="135" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-66" value="&lt;b&gt;Components&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="441" y="78" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-67" value="&lt;b&gt;local_dep&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="-388" y="1039" width="80" height="100" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-69" value="&lt;b&gt;Components&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-413" y="992" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-70" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.98;exitY=0.563;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-64" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-510" y="1099" as="sourcePoint" />
            <mxPoint x="-429" y="1098" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-71" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFBED;" parent="1" vertex="1">
          <mxGeometry x="97" y="993" width="169" height="245.5" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-72" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;2. Facade + Module pattern&lt;/h1&gt;&lt;div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;Multiple components are packaged through package_name,py but the file itself does not integrate them in any way or contain its own code. This pattern is good if multiple components need to be bundled together into a single package.&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-128" y="837" width="324" height="148" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-73" value="&lt;b&gt;package_name.py&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;local_dep 1 imports&lt;/div&gt;&lt;div&gt;...&lt;br&gt;&lt;/div&gt;&lt;div&gt;local_dep n imports&lt;br&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-114" y="1026" width="124" height="135" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-74" value="&lt;b&gt;local_dep 1&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="133" y="1030.5" width="88" height="78.5" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-75" value="&lt;b&gt;Components&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="114" y="996" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-76" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.98;exitY=0.563;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-73" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="17" y="1103" as="sourcePoint" />
            <mxPoint x="98" y="1102" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-77" value="&lt;b&gt;local_dep n&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="133" y="1146.5" width="88" height="78.5" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-78" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="146" y="1112.5" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-79" value="local_dep imports" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-643" y="1101" width="137" height="42" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-83" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFBED;" parent="1" vertex="1">
          <mxGeometry x="606" y="985" width="169" height="245.5" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-84" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;3. Facade + Mediator pattern&lt;/h1&gt;&lt;div&gt;Multiple independent components, combined into a tool that integrates them, manages data flow, and provides a single interface that abstracts greater complexity. This pattern is good for more complex packages, where modularity is prefered and individual components and ability to overwrite some of the components post-packaging may be useful.&amp;nbsp;&lt;br&gt;&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="381" y="829" width="396" height="149" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-85" value="&lt;b&gt;package_name.py&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;integrated&lt;/div&gt;&lt;div&gt;local dep 1 ...&amp;nbsp;&lt;/div&gt;&lt;div&gt;local dep n&amp;nbsp;&lt;/div&gt;&lt;div&gt;+&amp;nbsp; single interface&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=16;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="398" y="1018" width="124" height="135" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-86" value="&lt;b&gt;local_dep 1&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="642" y="1022.5" width="88" height="78.5" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-87" value="&lt;b&gt;Components&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="623" y="988" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-88" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.98;exitY=0.563;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-85" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="526" y="1095" as="sourcePoint" />
            <mxPoint x="607" y="1094" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-89" value="&lt;b&gt;local_dep n&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
          <mxGeometry x="642" y="1138.5" width="88" height="78.5" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-90" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="655" y="1104.5" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-95" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;4. Facade + Adapter pattern&lt;/h1&gt;&lt;div&gt;An integrated interface is reshaped and exposed via way of accessing code like cli or api routes. This pattern is particularly useful when a prefered way of usage would something different then import into a script or jupyter notebook. Defining most of the code in a normal way and packaging api routes that take advantage of it may it easier to test&amp;nbsp; and debug the code while allowing any potential missmatches of packaged code and api based around it.&lt;br&gt;&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-651" y="1264" width="396" height="149" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-96" value="&lt;b&gt;package_name.py&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;integrated&lt;/div&gt;&lt;div&gt;local deps&lt;/div&gt;&lt;div&gt;+&amp;nbsp; single interface&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=16;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-558" y="1535.5" width="124" height="135" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-102" value="&lt;b&gt;cli.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#663300;" parent="1" vertex="1">
          <mxGeometry x="-676" y="1440" width="85" height="95" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-103" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.424;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-102" target="O6DLvgTc-NirzbKMDfsa-96" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-641" y="1566.5" as="sourcePoint" />
            <mxPoint x="-554" y="1566" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-104" value="&lt;b&gt;package_name.py&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;integrated&lt;/div&gt;&lt;div&gt;local deps&lt;/div&gt;&lt;div&gt;+&amp;nbsp; single interface&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=16;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-299" y="1537.5" width="124" height="135" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-105" value="&lt;b&gt;routes.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#006600;" parent="1" vertex="1">
          <mxGeometry x="-417" y="1442" width="85" height="95" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-106" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.424;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-105" target="O6DLvgTc-NirzbKMDfsa-104" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-382" y="1568.5" as="sourcePoint" />
            <mxPoint x="-295" y="1568" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-107" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;5. Bridge + Interpreter pattern&lt;/h1&gt;&lt;div&gt;Decoupled route definition stored within some package and application logic contained within paa tools that can use routes, defined in different packages to extend its capability. This pattern is useful to take advantange of routes defined within packages in unified way, which in turn could potentially make api deployment significatly simpler, as the the code from the package would not need to be integrated into the application but instead define an extension for an application.&amp;nbsp;&lt;br&gt;&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-134" y="1259" width="404" height="162" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-115" value="package-auto-assembler" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;size=7;fillColor=#DDE8DC;strokeColor=#97D077;" parent="1" vertex="1">
          <mxGeometry x="1.75" y="1473" width="142" height="61" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-116" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.458;entryY=1.008;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.463;exitY=0.003;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="O6DLvgTc-NirzbKMDfsa-115" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="66.81100000000015" y="1614.471" as="sourcePoint" />
            <mxPoint x="145.75" y="1459" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-117" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0;exitDx=142;exitDy=34;exitPerimeter=0;width=5;endSize=6.28;strokeColor=#004C99;" parent="1" source="O6DLvgTc-NirzbKMDfsa-115" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="190.75" y="1510" as="sourcePoint" />
            <mxPoint x="210.75" y="1453" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-118" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;width=5;endSize=6.28;strokeColor=#004C99;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="146.75" y="1510" as="sourcePoint" />
            <mxPoint x="224.75" y="1510" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-119" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;width=5;endSize=6.28;strokeColor=#004C99;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="143.75" y="1511" as="sourcePoint" />
            <mxPoint x="203.75" y="1574" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-120" value="&lt;b&gt;package_name.py&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;integrated&lt;/div&gt;&lt;div&gt;local deps&lt;/div&gt;&lt;div&gt;+&amp;nbsp; single interface&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=16;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="162.25" y="1615" width="124" height="135" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-121" value="&lt;b&gt;routes.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#006600;" parent="1" vertex="1">
          <mxGeometry x="31.75" y="1620" width="85" height="95" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-122" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0;exitY=0;exitDx=85;exitDy=62.5;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-121" target="O6DLvgTc-NirzbKMDfsa-120" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="66.75" y="1746.5" as="sourcePoint" />
            <mxPoint x="153.75" y="1746" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-138" value="&lt;b&gt;link to artifact 1&lt;/b&gt;" style="shape=card;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="4" y="647" width="78" height="64" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-139" value="&lt;b&gt;link to artifact j&lt;/b&gt;" style="shape=card;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="154" y="647" width="78" height="64" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-140" value="..." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="91.5" y="662" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-152" value=".paa.api.config" style="shape=card;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-118" y="1473" width="88" height="57" as="geometry" />
        </mxCell>
        <mxCell id="O6DLvgTc-NirzbKMDfsa-153" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0;entryDx=0;entryDy=26.999999999999996;entryPerimeter=0;" parent="1" source="O6DLvgTc-NirzbKMDfsa-152" target="O6DLvgTc-NirzbKMDfsa-115" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-42" y="1618" as="sourcePoint" />
            <mxPoint x="8" y="1568" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="M2zpjB8zH9T06V5sSRz7-1" value="&lt;b&gt;streamlit.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#006600;" parent="1" vertex="1">
          <mxGeometry x="153" y="21" width="147" height="157" as="geometry" />
        </mxCell>
        <mxCell id="M2zpjB8zH9T06V5sSRz7-6" value="&lt;b&gt;ui.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#006600;" parent="1" vertex="1">
          <mxGeometry x="-7" y="1681" width="85" height="95" as="geometry" />
        </mxCell>
        <mxCell id="M2zpjB8zH9T06V5sSRz7-8" value="&lt;b&gt;package_name.py&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;integrated&lt;/div&gt;&lt;div&gt;local deps&lt;/div&gt;&lt;div&gt;+&amp;nbsp; single interface&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=16;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-299" y="1704.5" width="124" height="135" as="geometry" />
        </mxCell>
        <mxCell id="M2zpjB8zH9T06V5sSRz7-9" value="&lt;b&gt;ui.py&lt;/b&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;strokeColor=#006600;" parent="1" vertex="1">
          <mxGeometry x="-417" y="1609" width="85" height="95" as="geometry" />
        </mxCell>
        <mxCell id="M2zpjB8zH9T06V5sSRz7-10" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;exitX=0.424;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="M2zpjB8zH9T06V5sSRz7-9" target="M2zpjB8zH9T06V5sSRz7-8" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-382" y="1735.5" as="sourcePoint" />
            <mxPoint x="-295" y="1735" as="targetPoint" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="itUOjZ2PARoFwjgDQYso" name="cli_capabilities">
    <mxGraphModel dx="2638" dy="2470" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="30ptACNt8gm-0zBYw62X-1" value="extract metadata from module" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-591" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-2" value="check if metadata is present" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-733" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-3" value="convert drawio to png" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-299" y="-533" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-4" value="test-install" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-871" y="-1228" width="106" height="34" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-5" value="make-package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-871" y="-1050" width="106" height="34" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-6" value="assign default vesion" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
          <mxGeometry x="-516" y="-1232" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-7" value="prepare setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-444" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-8" value="extract requirements from module/cli/routes/ui" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
          <mxGeometry x="-158" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-9" value="merge local dependecies" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
          <mxGeometry x="-301" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-10" value="prepare setup file" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="231" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-11" value="make package" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="360" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-12" value="test install" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="484" y="-1232" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-13" value="add/update version" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
          <mxGeometry x="-509" y="-1070" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-14" value="extract readme from notebooks/ extra docs" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-91" y="-1072" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-15" value="run mkdocs documentation for package" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-21" y="-535" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-16" value="&lt;b&gt;Main cli tools&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-952" y="-1141" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-17" value="&lt;b&gt;Other cli&amp;nbsp;&lt;/b&gt;&lt;div&gt;&lt;b&gt;tools&lt;/b&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-952" y="-507" width="60" height="30" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-18" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-985" y="-554" as="sourcePoint" />
            <mxPoint x="500" y="-554" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-19" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-982" y="-404" as="sourcePoint" />
            <mxPoint x="503" y="-404" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-20" value="check-vulnerabilities" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-879" y="-936" width="131" height="29" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-21" value="check of metadata is present" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;" parent="1" vertex="1">
          <mxGeometry x="-733" y="-949" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-22" value="extract metadata from module" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;" parent="1" vertex="1">
          <mxGeometry x="-588" y="-949" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-23" value="prepare setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-444" y="-951.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-24" value="extract requirements from module/cli" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
          <mxGeometry x="-158" y="-951.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-25" value="merge local dependecies" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
          <mxGeometry x="-296" y="-951.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-26" value="remove setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
          <mxGeometry x="614.5" y="-951.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-27" value="extract release notes from commit messages" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-365" y="-1072" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-28" value="update-release-notes" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-886" y="-735" width="131" height="29" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-29" value="extract messages from commit history with approprite label" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-667.5" y="-756" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-30" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-533.5" y="-704" as="sourcePoint" />
            <mxPoint x="-533.5" y="-748" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-31" value="process provided notes" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-519.5" y="-756" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-32" value="analyse notes or pull from pypi latest version and increment version" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-371.5" y="-756" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-33" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-238.64" y="-704" as="sourcePoint" />
            <mxPoint x="-238.64" y="-748" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-34" value="assign version provided from messages or as parameter" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-226.5" y="-756" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-35" value="create entry in release notes file with appropriate version and notes" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-81.5" y="-756" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-36" value="show list of paa packages" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-705" y="-533" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-37" value="show list of requirements for selected paa package" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-705" y="-470" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-38" value="show info for selected paa package" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-576" y="-533" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-39" value="check-licenses" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-879" y="-846" width="131" height="29" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-40" value="check of metadata is present" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;" parent="1" vertex="1">
          <mxGeometry x="-733" y="-859" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-41" value="extract metadata from module" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;" parent="1" vertex="1">
          <mxGeometry x="-588" y="-859" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-42" value="prepare setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
          <mxGeometry x="-444" y="-861.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-43" value="extract requirements from module/cli" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
          <mxGeometry x="-158" y="-861.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-44" value="merge local dependecies" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
          <mxGeometry x="-296" y="-861.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-45" value="remove setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
          <mxGeometry x="614.5" y="-873" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-46" value="remove setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
          <mxGeometry x="614.5" y="-1232" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-47" value="check licenses for modules" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-21" y="-861.5" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-48" value="show license labels in dependencies tree" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-576" y="-470" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-49" value="run api routes" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-21" y="-470" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-50" value="extract api routes from packages" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="258" y="-537" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-51" value="show packages artifacts" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-447" y="-533" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-52" value="extract module artifacts" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="398" y="-537" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-53" value="extract static mkdocs site" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="398" y="-473" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-54" value="prepare mkdocs site" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-30" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-55" value="show packages artifact links" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-447" y="-470" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-56" value="refresh/download artifacts from links" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="105" y="-470" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-57" value="add artifacts" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="99" y="-1150" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-58" value="run streamlit app" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="107" y="-537" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="30ptACNt8gm-0zBYw62X-59" value="extract streamlit app from packages" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="258" y="-470" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="hpPu8RiEhnpST6cjoHfG-1" value="run pylint test for the whole module" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
          <mxGeometry x="-144" y="-470" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="hpPu8RiEhnpST6cjoHfG-2" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;PAA cli capabilities&lt;/h1&gt;&lt;div&gt;The diagram shows different available cli tools and what kind of actions are performed within them.&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
          <mxGeometry x="-994" y="-1391" width="256" height="120" as="geometry" />
        </mxCell>
        <mxCell id="SBN4ytptIrcirpAwcVPO-1" value="extract-module-requirements" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
          <mxGeometry x="-898.5" y="-652" width="170" height="29" as="geometry" />
        </mxCell>
        <mxCell id="SBN4ytptIrcirpAwcVPO-2" value="prepare setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
          <mxGeometry x="-444" y="-680" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="SBN4ytptIrcirpAwcVPO-4" value="merge local dependecies" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
          <mxGeometry x="-301" y="-680" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="SBN4ytptIrcirpAwcVPO-5" value="extract requirements from module/cli/routes/ui" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
          <mxGeometry x="-158" y="-680" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="SBN4ytptIrcirpAwcVPO-6" value="remove setup dir" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
          <mxGeometry x="614.5" y="-690" width="120" height="60" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
