{
  "type": "excalidraw",
  "version": 2,
  "source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor",
  "elements": [
    {
      "type": "line",
      "version": 4622,
      "versionNonce": 1623045672,
      "isDeleted": false,
      "id": "twu_PiAvEuQ4l1YYtZLET",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 0,
      "x": 289.8504963515835,
      "y": 91.87474806402287,
      "strokeColor": "#000000",
      "backgroundColor": "#a5d8ff",
      "width": 77.09201683999922,
      "height": 99.49948667804088,
      "seed": 1975340120,
      "groupIds": [
        "9PT4BXPfQ6UoCaB-T-h9A",
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "round",
      "boundElementIds": [],
      "startBinding": null,
      "endBinding": null,
      "lastCommittedPoint": null,
      "startArrowhead": null,
      "endArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          0.2542098813493443,
          75.20117273657175
        ],
        [
          0.011896425679918422,
          83.76249969444815
        ],
        [
          3.970409367559332,
          87.46174320643391
        ],
        [
          17.75573317066317,
          90.59250103325854
        ],
        [
          41.05683533152865,
          91.56737225214069
        ],
        [
          63.319497586673116,
          90.01084754868091
        ],
        [
          75.14781395923075,
          86.28844687220405
        ],
        [
          76.81603792670788,
          83.15042405259751
        ],
        [
          77.05033394391478,
          76.25776215104557
        ],
        [
          76.86643881413028,
          6.3089586511537865
        ],
        [
          76.45188016352971,
          -0.2999144698665015
        ],
        [
          71.50179495549581,
          -3.9936571317850627
        ],
        [
          61.077971898861186,
          -6.132877429442784
        ],
        [
          37.32348754161154,
          -7.932114425900202
        ],
        [
          18.278415656797975,
          -6.859225353587373
        ],
        [
          3.2995959613238286,
          -3.2201165291205287
        ],
        [
          -0.04168289608444441,
          -0.045185660461322996
        ],
        [
          0,
          0
        ]
      ],
      "index": "a1",
      "frameId": null,
      "roundness": {
        "type": 2
      },
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false
    },
    {
      "type": "line",
      "version": 2327,
      "versionNonce": 1593094440,
      "isDeleted": false,
      "id": "hmJk4dH9VpOsfkrCTkhvh",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 0,
      "x": 290.3744257898585,
      "y": 149.00103172175278,
      "strokeColor": "#000000",
      "backgroundColor": "#a5d8ff",
      "width": 77.17198221193564,
      "height": 8.562348957853036,
      "seed": 637665624,
      "groupIds": [
        "9PT4BXPfQ6UoCaB-T-h9A",
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "round",
      "boundElementIds": [],
      "startBinding": null,
      "endBinding": null,
      "lastCommittedPoint": null,
      "startArrowhead": null,
      "endArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          2.033150371639873,
          3.413095389435587
        ],
        [
          10.801287372573954,
          6.276651055277943
        ],
        [
          22.468666942209353,
          8.010803051612635
        ],
        [
          40.747074201802775,
          8.168828515515864
        ],
        [
          62.077348233027564,
          7.0647721921469495
        ],
        [
          74.53446931782398,
          3.04824021069218
        ],
        [
          77.17198221193564,
          -0.3935204423371723
        ]
      ],
      "index": "a2",
      "frameId": null,
      "roundness": {
        "type": 2
      },
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false
    },
    {
      "type": "line",
      "version": 2413,
      "versionNonce": 311708712,
      "isDeleted": false,
      "id": "X1ldVIXm4DfBal5N2Pwn9",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 0,
      "x": 289.3425684673547,
      "y": 120.03697638652972,
      "strokeColor": "#000000",
      "backgroundColor": "#a5d8ff",
      "width": 77.17198221193564,
      "height": 8.562348957853036,
      "seed": 904402520,
      "groupIds": [
        "9PT4BXPfQ6UoCaB-T-h9A",
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "round",
      "boundElementIds": [],
      "startBinding": null,
      "endBinding": null,
      "lastCommittedPoint": null,
      "startArrowhead": null,
      "endArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          2.033150371639873,
          3.413095389435587
        ],
        [
          10.801287372573954,
          6.276651055277943
        ],
        [
          22.468666942209353,
          8.010803051612635
        ],
        [
          40.747074201802775,
          8.168828515515864
        ],
        [
          62.077348233027564,
          7.0647721921469495
        ],
        [
          74.53446931782398,
          3.04824021069218
        ],
        [
          77.17198221193564,
          -0.3935204423371723
        ]
      ],
      "index": "a3",
      "frameId": null,
      "roundness": {
        "type": 2
      },
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false
    },
    {
      "type": "ellipse",
      "version": 5410,
      "versionNonce": 92833576,
      "isDeleted": false,
      "id": "CFhp5ZxSVwHYzGUj4hEn1",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 0,
      "x": 288.28461948527263,
      "y": 84.74247943834126,
      "strokeColor": "#000000",
      "backgroundColor": "#a5d8ff",
      "width": 76.59753601865496,
      "height": 15.49127539284798,
      "seed": 1782811480,
      "groupIds": [
        "9PT4BXPfQ6UoCaB-T-h9A",
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "sharp",
      "boundElementIds": [
        "bxuMGTzXLn7H-uBCptINx"
      ],
      "index": "a4",
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false
    },
    {
      "type": "ellipse",
      "version": 820,
      "versionNonce": 608002600,
      "isDeleted": false,
      "id": "B43R7rWwK2_vdiRHBSSPk",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 0,
      "x": 324.77660659049513,
      "y": 109.21914711824485,
      "strokeColor": "#000000",
      "backgroundColor": "#228be6",
      "width": 11.226103154161754,
      "height": 12.183758484455605,
      "seed": 1298686040,
      "groupIds": [
        "9PT4BXPfQ6UoCaB-T-h9A",
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "sharp",
      "boundElementIds": [],
      "index": "a5",
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false
    },
    {
      "type": "ellipse",
      "version": 1108,
      "versionNonce": 1839127848,
      "isDeleted": false,
      "id": "CkKMb9wkJfVk04T217zSs",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 0,
      "x": 325.12774837442873,
      "y": 135.43576140530996,
      "strokeColor": "#000000",
      "backgroundColor": "#228be6",
      "width": 11.226103154161754,
      "height": 12.183758484455605,
      "seed": 2133497176,
      "groupIds": [
        "9PT4BXPfQ6UoCaB-T-h9A",
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "sharp",
      "boundElementIds": [],
      "index": "a6",
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false
    },
    {
      "type": "ellipse",
      "version": 991,
      "versionNonce": 588838952,
      "isDeleted": false,
      "id": "SHJdKeQPkfpvzSoNH--3o",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 6.239590202363168,
      "x": 325.77660659049513,
      "y": 164.20448797661635,
      "strokeColor": "#000000",
      "backgroundColor": "#228be6",
      "width": 11.226103154161754,
      "height": 12.183758484455605,
      "seed": 81668696,
      "groupIds": [
        "9PT4BXPfQ6UoCaB-T-h9A",
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "sharp",
      "boundElementIds": [],
      "index": "a7",
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false
    },
    {
      "type": "text",
      "version": 489,
      "versionNonce": 2023207720,
      "isDeleted": false,
      "id": "vUSyMBPup0jZ71CYXKyGb",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "angle": 0,
      "x": 280.1846389770508,
      "y": 185.79462957545917,
      "strokeColor": "#000000",
      "backgroundColor": "#a5d8ff",
      "width": 95.63072204589844,
      "height": 23.595161071904883,
      "seed": 425140056,
      "groupIds": [
        "dp_TZJyYdyPIH1hOkAPlb"
      ],
      "strokeSharpness": "sharp",
      "boundElementIds": [],
      "fontSize": 17.4778970902999,
      "fontFamily": 1,
      "text": "dataset.db",
      "baseline": 16.595161071904883,
      "textAlign": "center",
      "verticalAlign": "top",
      "index": "a8",
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1758646548051,
      "link": null,
      "locked": false,
      "containerId": null,
      "originalText": "dataset.db",
      "autoResize": true,
      "lineHeight": 1.350000000000001
    },
    {
      "id": "R7pU0VP6CFKCAwuvt0xsr",
      "type": "text",
      "x": 295.5,
      "y": 342,
      "width": 374,
      "height": 225,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a9",
      "roundness": null,
      "seed": 705463336,
      "version": 1130,
      "versionNonce": 72522328,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758648226024,
      "link": null,
      "locked": false,
      "text": "class Extract(Action):\n    # Static\n    + type : ActionTypes = Extract\n    \n    # Properties\n    - db_connection: Path\n    - query: str\n    - query_parameters: [str]\n    - output_mapper: [str]",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Extract(Action):\n    # Static\n    + type : ActionTypes = Extract\n    \n    # Properties\n    - db_connection: Path\n    - query: str\n    - query_parameters: [str]\n    - output_mapper: [str]",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "G1xIRcJgm34_NMEWQFFlW",
      "type": "text",
      "x": 1419.5,
      "y": 110,
      "width": 253,
      "height": 75,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aA",
      "roundness": null,
      "seed": 651981400,
      "version": 256,
      "versionNonce": 138082856,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758646570344,
      "link": null,
      "locked": false,
      "text": "class Pipeline\n    - actions: [Action]\n    ",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Pipeline\n    - actions: [Action]\n    ",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "TBVy3JbJCkbA9kjVEJ8lv",
      "type": "text",
      "x": 694,
      "y": 100,
      "width": 495,
      "height": 150,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aB",
      "roundness": null,
      "seed": 680960040,
      "version": 560,
      "versionNonce": 85012520,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758649442239,
      "link": null,
      "locked": false,
      "text": "class Action\n    + type: ActionTypes\n    + name: str\n    + depends_on: [str]\n\n    + execute(mem) -> [Dict<str, any>] | Void",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Action\n    + type: ActionTypes\n    + name: str\n    + depends_on: [str]\n\n    + execute(mem) -> [Dict<str, any>] | Void",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "an7KRTzWpCytKNKgHftKC",
      "type": "text",
      "x": 1528.5,
      "y": 365.5,
      "width": 187,
      "height": 150,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aC",
      "roundness": null,
      "seed": 1974317656,
      "version": 306,
      "versionNonce": 1574962264,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758648154009,
      "link": null,
      "locked": false,
      "text": "enum ActionTypes:\n    + Extract\n    + Aggregate\n    + Filter\n    + Map\n    + Dump",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "enum ActionTypes:\n    + Extract\n    + Aggregate\n    + Filter\n    + Map\n    + Dump",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "2pQ5EULirrWs_QZPbClhh",
      "type": "text",
      "x": 785,
      "y": 332.5,
      "width": 418,
      "height": 375,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aH",
      "roundness": null,
      "seed": 1402251560,
      "version": 742,
      "versionNonce": 680432168,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758649532881,
      "link": null,
      "locked": false,
      "text": "class Aggregate(Action):\n    # Static\n    + type: ActionTypes = Aggregate\n\n    # Properties\n    - actionIDs: [str]\n    - associations: [Association]\n    - output_mapper: [str]\n\n    + execute(mem):\n        tables = mem.gather(actionIDs)\n\n        for join in association:\n            \n            ",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Aggregate(Action):\n    # Static\n    + type: ActionTypes = Aggregate\n\n    # Properties\n    - actionIDs: [str]\n    - associations: [Association]\n    - output_mapper: [str]\n\n    + execute(mem):\n        tables = mem.gather(actionIDs)\n\n        for join in association:\n            \n            ",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "O0fso8DJqFfwJEzmpUikM",
      "type": "text",
      "x": 1289,
      "y": 195,
      "width": 594,
      "height": 100,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aI",
      "roundness": null,
      "seed": 1582329944,
      "version": 459,
      "versionNonce": 1080077144,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758647067031,
      "link": null,
      "locked": false,
      "text": "input_mapper: \n    - key: ActionID (name) that produced such output\n    - value: list of strings that represent the values\n                to take",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "input_mapper: \n    - key: ActionID (name) that produced such output\n    - value: list of strings that represent the values\n                to take",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "v0kzO6vlBWOdJCV3yoG69",
      "type": "text",
      "x": 1379.5,
      "y": 718.5,
      "width": 286,
      "height": 175,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aL",
      "roundness": null,
      "seed": 1462407976,
      "version": 635,
      "versionNonce": 1012998696,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758649495598,
      "link": null,
      "locked": false,
      "text": "class Association:\n    - from_actionID: str\n    - from_key_name: str\n    - from_value_name: str\n    - to_actionID: str\n    - to_value_name: str\n    - type: Type",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Association:\n    - from_actionID: str\n    - from_key_name: str\n    - from_value_name: str\n    - to_actionID: str\n    - to_value_name: str\n    - type: Type",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "WK34n9xeVxntypCtrlK6p",
      "type": "text",
      "x": 256.5,
      "y": 787.5,
      "width": 517,
      "height": 175,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aM",
      "roundness": null,
      "seed": 1166526296,
      "version": 318,
      "versionNonce": 1042162520,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758649002604,
      "link": null,
      "locked": false,
      "text": "class Filter(Action):\n    # Static\n    + type: ActionTypes = Filter\n\n    # Properties\n    - compare: function(Dict<str, any>) -> bool\n    - output_mapper: [str]",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Filter(Action):\n    # Static\n    + type: ActionTypes = Filter\n\n    # Properties\n    - compare: function(Dict<str, any>) -> bool\n    - output_mapper: [str]",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "NY9jyUFLFFCNPE2sh00SX",
      "type": "text",
      "x": 1639,
      "y": 606.5,
      "width": 407,
      "height": 200,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aP",
      "roundness": null,
      "seed": 20345896,
      "version": 168,
      "versionNonce": 627282472,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758649426380,
      "link": null,
      "locked": false,
      "text": "class Map(Action):\n    # Static\n    + type: ActionTypes = Map\n\n    # Properties\n    - compare_mapper: [str]\n    - mapper: function(any...) -> any\n    - output_mapper: [str]",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Map(Action):\n    # Static\n    + type: ActionTypes = Map\n\n    # Properties\n    - compare_mapper: [str]\n    - mapper: function(any...) -> any\n    - output_mapper: [str]",
      "autoResize": true,
      "lineHeight": 1.25
    },
    {
      "id": "SkhaoW-3TTKDZzEii3Lf6",
      "type": "text",
      "x": 1457.5,
      "y": 955.5,
      "width": 121,
      "height": 50,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "#228be6",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aQ",
      "roundness": null,
      "seed": 2071523672,
      "version": 37,
      "versionNonce": 105260376,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1758648834435,
      "link": null,
      "locked": false,
      "text": "class Dump:\n    -",
      "fontSize": 20,
      "fontFamily": 8,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "class Dump:\n    -",
      "autoResize": true,
      "lineHeight": 1.25
    }
  ],
  "appState": {
    "gridSize": 20,
    "gridStep": 5,
    "gridModeEnabled": false,
    "viewBackgroundColor": "#ffffff"
  },
  "files": {}
}