Flowfile 0.3.0.2__tar.gz → 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Flowfile might be problematic. Click here for more details.
- {flowfile-0.3.0.2 → flowfile-0.3.1}/PKG-INFO +23 -11
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/__main__.py +2 -2
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/api.py +20 -10
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/readme.md +3 -6
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/__init__.py +4 -5
- flowfile-0.3.1/flowfile/web/static/favicon.ico +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/flow_frame.py +1 -1
- {flowfile-0.3.0.2 → flowfile-0.3.1}/pyproject.toml +1 -1
- {flowfile-0.3.0.2 → flowfile-0.3.1}/readme-pypi.md +22 -10
- {flowfile-0.3.0.2 → flowfile-0.3.1}/LICENSE +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/build_backends/build_backends/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/build_backends/build_backends/main.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/build_backends/build_backends/main_prd.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/AirbyteReader-1ac35765.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/AirbyteReader-cb0c1d4a.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/CrossJoin-41efa4cb.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/CrossJoin-a514fa59.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseConnectionSettings-0c04b2e5.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseConnectionSettings-f2cecf33.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseManager-83ee3c98.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseReader-dc0c6881.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseReader-f50c6558.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseWriter-2f570e53.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/DatabaseWriter-5afe9f8d.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/ExploreData-5bdae813.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/ExploreData-c7ee19cf.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/ExternalSource-17b23a01.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/ExternalSource-e37b6275.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Filter-90856b4f.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Filter-a9d08ba1.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Formula-38b71e9e.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Formula-d60a74f4.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/FuzzyMatch-6857de82.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/FuzzyMatch-d0f1fe81.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/GoogleSheet-854294a4.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/GoogleSheet-92084da7.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/GraphSolver-0c86bbc6.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/GroupBy-ab1ea74b.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/GroupBy-f2772e9f.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Join-41c0f331.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Join-bc3e1cf7.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/ManualInput-03aa0245.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/ManualInput-ac7b9972.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Output-48f81019.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Output-5b35eee8.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Pivot-7164087c.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Pivot-f415e85f.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/PolarsCode-3abf6507.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/PolarsCode-650322d1.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/PopOver-b37ff9be.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/PopOver-bccfde04.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Read-65966a3e.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Read-80dc1675.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/RecordCount-c66c6d6d.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/RecordId-826dc095.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Sample-4ed555c8.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/SecretManager-eac1e97d.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Select-085f05cc.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/SettingsSection-1f5e79c1.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/SettingsSection-9c836ecc.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Sort-3e6cb414.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Sort-7ccfa0fe.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/TextToRows-606349bc.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/TextToRows-c92d1ec2.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/UnavailableFields-5edd5322.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/UnavailableFields-b41976ed.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Union-8d9ac7f9.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Union-fca91665.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Unique-a59f830e.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Unique-b5615727.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/Unpivot-c3815565.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/airbyte-292aa232.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/api-22b338bd.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/cross_join-d30c0290.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/database_reader-ce1e55f3.svg +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/database_writer-b4ad0753.svg +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/designer-2394122a.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/designer-e5bbe26f.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/documentation-08045cf2.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/documentation-12216a74.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/dropDown-35135ba8.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/dropDown-5e7e9a5a.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/dropDownGeneric-50a91b99.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/dropDownGeneric-895680d6.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/element-icons-9c88a535.woff +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/element-icons-de5eb258.ttf +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/explore_data-8a0a2861.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-brands-400-808443ae.ttf +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-brands-400-d7236a19.woff2 +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-regular-400-54cf6086.ttf +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-regular-400-e3456d12.woff2 +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-solid-900-aa759986.woff2 +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-solid-900-d2f05935.ttf +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-v4compatibility-0ce9033c.woff2 +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-v4compatibility-30f6abf6.ttf +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/filter-d7708bda.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/formula-eeeb1611.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fullEditor-178376bb.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fullEditor-705c6ccb.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fuzzy_match-40c161b2.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/genericNodeSettings-65587f20.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/genericNodeSettings-924759c7.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/graph_solver-8b7888b8.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/group_by-80561fc3.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/index-552863fd.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/index-681a3ed0.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/input_data-ab2eb678.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/join-349043ae.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/manual_input-ae98f31d.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/nodeTitle-cf9bae3c.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/old_join-5d0eb604.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/output-06ec0371.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/pivot-9660df51.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/polars_code-05ce5dc6.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/record_count-dab44eb5.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/record_id-0b15856b.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/sample-693a88b5.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/secretApi-3ad510e1.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/select-b0d0437a.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/selectDynamic-b062bc9b.css +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/selectDynamic-bd644891.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/sort-2aa579f0.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/summarize-2a099231.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/text_to_rows-859b29ea.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/union-2d8609f4.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/unique-1958b98a.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/unpivot-d3cb4b5b.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/view-7a0f0be1.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/vue-codemirror.esm-dd17b478.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/vue-content-loader.es-6b36f05e.js +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/flowfile.svg +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/icons/flowfile.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/images/airbyte.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/images/flowfile.svg +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/images/google.svg +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/images/sheets.png +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/index.html +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/vite.svg +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/vue.svg +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/auth/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/auth/jwt.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/auth/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/auth/secrets.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/configs/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/configs/flow_logger.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/configs/node_store/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/configs/node_store/nodes.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/configs/settings.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/database/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/database/connection.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/database/init_db.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/database/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/fileExplorer/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/fileExplorer/funcs.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/fileExplorer/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/FlowfileFlow.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/_extensions/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/_extensions/real_time_interface.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/analytics/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/analytics/analytics_processor.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/analytics/graphic_walker.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/analytics/schemas/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/analytics/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/connection_manager/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/connection_manager/_connection_manager.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/connection_manager/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/database_connection_manager/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/database_connection_manager/db_connections.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/database_connection_manager/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/extensions.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/funcs.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/settings_validator.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/pivot_table.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/sample_data.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/threaded_processes.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/types.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_data_engine/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_node/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_node/flow_node.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_node/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/flow_node/schema_callback.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/handler.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/manage/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/manage/compatibility_enhancements.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/manage/manage_flowfile.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/manage/open_flowfile.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/setting_generator/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/setting_generator/setting_generator.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/setting_generator/settings.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/airbyte.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/settings.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/base_class.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/exchange_rate.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/google_sheet.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/factory.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/util/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/util/calculate_layout.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/util/execution_orderer.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/flowfile/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/main.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/routes/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/routes/auth.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/routes/logs.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/routes/public.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/routes/routes.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/routes/secrets.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/run_lock.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/analysis_schemas/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/defaults.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/external_sources/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/external_sources/airbyte_schemas.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/input_schema.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/output_model.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/schemas.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/schemas/transform_schema.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/secrets/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/secrets/secrets.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/utils/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/utils/arrow_reader.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/utils/excel_file_manager.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/utils/fileManager.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/utils/fl_executor.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_core/flowfile_core/utils/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/adapters.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/expr.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/group_frame.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/join.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/selectors.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_frame/flowfile_frame/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/configs.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/create/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/create/funcs.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/create/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/create/pl_types.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/create/read_excel_tables.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/create/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/cache_manager.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/main.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/settings.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/sql_source/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/sql_source/main.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/external_sources/sql_source/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/flow_logger.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/funcs.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/main.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/polars_fuzzy_match/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/polars_fuzzy_match/matcher.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/polars_fuzzy_match/models.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/polars_fuzzy_match/pre_process.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/polars_fuzzy_match/process.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/polars_fuzzy_match/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/process_manager.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/routes.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/secrets.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/spawner.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile_worker/flowfile_worker/utils.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/test_utils/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/test_utils/postgres/__init__.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/test_utils/postgres/commands.py +0 -0
- {flowfile-0.3.0.2 → flowfile-0.3.1}/test_utils/postgres/fixtures.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: Flowfile
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Project combining flowfile core (backend) and flowfile_worker (compute offloader) and flowfile_frame (api)
|
|
5
5
|
Author: Edward van Eechoud
|
|
6
6
|
Author-email: evaneechoud@gmail.com
|
|
@@ -41,13 +41,25 @@ Requires-Dist: python-multipart (>=0.0.12,<0.1.0)
|
|
|
41
41
|
Requires-Dist: uvicorn (>=0.32.0,<0.33.0)
|
|
42
42
|
Description-Content-Type: text/markdown
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
<h1 align="center">
|
|
45
|
+
<img src="https://raw.githubusercontent.com/Edwardvaneechoud/Flowfile/main/.github/images/logo.png" alt="Flowfile Logo" width="100">
|
|
46
|
+
<br>
|
|
47
|
+
Flowfile
|
|
48
|
+
</h1>
|
|
49
|
+
|
|
50
|
+
<p align="center">
|
|
51
|
+
<b>Main Repository</b>: <a href="https://github.com/Edwardvaneechoud/Flowfile">Edwardvaneechoud/Flowfile</a><br>
|
|
52
|
+
<b>Documentation</b>:
|
|
53
|
+
<a href="https://edwardvaneechoud.github.io/Flowfile/">Website</a> -
|
|
54
|
+
<a href="https://github.com/Edwardvaneechoud/Flowfile/blob/main/flowfile_core/README.md">Core</a> -
|
|
55
|
+
<a href="https://github.com/Edwardvaneechoud/Flowfile/blob/main/flowfile_worker/README.md">Worker</a> -
|
|
56
|
+
<a href="https://github.com/Edwardvaneechoud/Flowfile/blob/main/flowfile_frontend/README.md">Frontend</a> -
|
|
57
|
+
<a href="https://dev.to/edwardvaneechoud/building-flowfile-architecting-a-visual-etl-tool-with-polars-576c">Technical Architecture</a>
|
|
58
|
+
</p>
|
|
59
|
+
|
|
60
|
+
<p>
|
|
48
61
|
Flowfile is a visual ETL tool and Python library suite that combines drag-and-drop workflow building with the speed of Polars dataframes. Build data pipelines visually, transform data using powerful nodes, or define data flows programmatically with Python and analyze results - all with high-performance data processing.
|
|
49
|
-
|
|
50
|
-

|
|
62
|
+
</p>
|
|
51
63
|
|
|
52
64
|
## 🚀 Getting Started
|
|
53
65
|
|
|
@@ -75,8 +87,8 @@ This will:
|
|
|
75
87
|
|
|
76
88
|
**Options:**
|
|
77
89
|
```bash
|
|
78
|
-
# Customize host
|
|
79
|
-
flowfile run ui --host 0.0.0.0
|
|
90
|
+
# Customize host
|
|
91
|
+
flowfile run ui --host 0.0.0.0
|
|
80
92
|
|
|
81
93
|
# Start without opening a browser
|
|
82
94
|
flowfile run ui --no-browser
|
|
@@ -212,8 +224,8 @@ flowfile
|
|
|
212
224
|
flowfile run ui [options]
|
|
213
225
|
|
|
214
226
|
# Run individual services
|
|
215
|
-
flowfile run core --host 0.0.0.0 --port
|
|
216
|
-
flowfile run worker --host 0.0.0.0 --port
|
|
227
|
+
flowfile run core --host 0.0.0.0 --port 63578
|
|
228
|
+
flowfile run worker --host 0.0.0.0 --port 63579
|
|
217
229
|
```
|
|
218
230
|
|
|
219
231
|
## 📚 Resources
|
|
@@ -9,8 +9,8 @@ def main():
|
|
|
9
9
|
|
|
10
10
|
parser = argparse.ArgumentParser(description="FlowFile: A visual ETL tool with a Polars-like API")
|
|
11
11
|
parser.add_argument("command", nargs="?", choices=["run"], help="Command to execute")
|
|
12
|
-
parser.add_argument("component", nargs="?", choices=["
|
|
13
|
-
help="Component to run (
|
|
12
|
+
parser.add_argument("component", nargs="?", choices=["ui", "core", "worker"],
|
|
13
|
+
help="Component to run (ui, core, or worker)")
|
|
14
14
|
parser.add_argument("--host", default="127.0.0.1", help="Host to bind the server to")
|
|
15
15
|
parser.add_argument("--port", type=int, default=63578, help="Port to bind the server to")
|
|
16
16
|
parser.add_argument("--no-browser", action="store_true", help="Don't open a browser window")
|
|
@@ -142,7 +142,14 @@ def build_server_command(module_name: str) -> List[str]:
|
|
|
142
142
|
return command
|
|
143
143
|
|
|
144
144
|
|
|
145
|
-
def
|
|
145
|
+
def check_if_in_single_mode() -> bool:
|
|
146
|
+
response: requests.Response = requests.get(f"{FLOWFILE_BASE_URL}/single_mode", timeout=1)
|
|
147
|
+
if response.ok:
|
|
148
|
+
return response.json() == "1"
|
|
149
|
+
return False
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def start_flowfile_server_process(module_name: str = DEFAULT_MODULE_NAME) -> Tuple[bool, bool]:
|
|
146
153
|
"""
|
|
147
154
|
Start the Flowfile server as a background process if it's not already running.
|
|
148
155
|
Automatically detects and uses Poetry if in a Poetry environment.
|
|
@@ -153,7 +160,8 @@ def start_flowfile_server_process(module_name: str = DEFAULT_MODULE_NAME) -> boo
|
|
|
153
160
|
"""
|
|
154
161
|
global _server_process
|
|
155
162
|
if is_flowfile_running():
|
|
156
|
-
return True
|
|
163
|
+
return True, check_if_in_single_mode()
|
|
164
|
+
|
|
157
165
|
|
|
158
166
|
if _server_process and _server_process.poll() is None:
|
|
159
167
|
logger.warning("Server process object exists but API not responding. Attempting to restart.")
|
|
@@ -179,7 +187,7 @@ def start_flowfile_server_process(module_name: str = DEFAULT_MODULE_NAME) -> boo
|
|
|
179
187
|
time.sleep(1)
|
|
180
188
|
if is_flowfile_running():
|
|
181
189
|
logger.info("Server started successfully.")
|
|
182
|
-
return True
|
|
190
|
+
return True, check_if_in_single_mode()
|
|
183
191
|
else:
|
|
184
192
|
logger.error("Failed to start server: API did not become responsive.")
|
|
185
193
|
if _server_process and _server_process.stderr:
|
|
@@ -189,16 +197,16 @@ def start_flowfile_server_process(module_name: str = DEFAULT_MODULE_NAME) -> boo
|
|
|
189
197
|
except Exception as read_err:
|
|
190
198
|
logger.error(f"Could not read stderr from server process: {read_err}")
|
|
191
199
|
stop_flowfile_server_process()
|
|
192
|
-
return False
|
|
200
|
+
return False, check_if_in_single_mode()
|
|
193
201
|
else:
|
|
194
202
|
stop_flowfile_server_process()
|
|
195
|
-
return False
|
|
203
|
+
return False, check_if_in_single_mode()
|
|
196
204
|
|
|
197
205
|
except FileNotFoundError:
|
|
198
206
|
logger.error(f"Error: Could not execute command: '{' '.join(command)}'.")
|
|
199
207
|
logger.error(f"Ensure '{module_name}' is installed correctly.")
|
|
200
208
|
_server_process = None
|
|
201
|
-
return False
|
|
209
|
+
return False, False
|
|
202
210
|
except Exception as e:
|
|
203
211
|
logger.error(f"An unexpected error occurred while starting the server process: {e}")
|
|
204
212
|
if _server_process and _server_process.stderr:
|
|
@@ -209,7 +217,7 @@ def start_flowfile_server_process(module_name: str = DEFAULT_MODULE_NAME) -> boo
|
|
|
209
217
|
logger.error(f"Could not read stderr from server process: {read_err}")
|
|
210
218
|
stop_flowfile_server_process()
|
|
211
219
|
_server_process = None
|
|
212
|
-
return False
|
|
220
|
+
return False, False
|
|
213
221
|
|
|
214
222
|
|
|
215
223
|
def get_auth_token() -> Optional[str]:
|
|
@@ -361,7 +369,8 @@ def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str]
|
|
|
361
369
|
if not flow_file_path:
|
|
362
370
|
return False
|
|
363
371
|
flow_graph.flow_settings = original_execution_settings
|
|
364
|
-
|
|
372
|
+
flow_running, flow_in_single_mode = start_flowfile_server_process(module_name)
|
|
373
|
+
if not flow_running:
|
|
365
374
|
return False
|
|
366
375
|
|
|
367
376
|
auth_token = get_auth_token()
|
|
@@ -371,7 +380,8 @@ def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str]
|
|
|
371
380
|
flow_id = import_flow_to_editor(flow_file_path, auth_token)
|
|
372
381
|
|
|
373
382
|
if flow_id is not None:
|
|
374
|
-
|
|
383
|
+
if flow_in_single_mode:
|
|
384
|
+
_open_flow_in_browser(flow_id)
|
|
375
385
|
return True
|
|
376
386
|
else:
|
|
377
387
|
return False
|
|
@@ -380,4 +390,4 @@ def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str]
|
|
|
380
390
|
logger.error(f"An unexpected error occurred in open_graph_in_editor: {e}", exc_info=True)
|
|
381
391
|
return False
|
|
382
392
|
finally:
|
|
383
|
-
_cleanup_temporary_storage(temp_dir_obj)
|
|
393
|
+
_cleanup_temporary_storage(temp_dir_obj)
|
|
@@ -29,9 +29,6 @@ You can start the Flowfile web UI using either the Python module or the command-
|
|
|
29
29
|
# Start the web UI with default settings
|
|
30
30
|
flowfile run ui
|
|
31
31
|
|
|
32
|
-
# Customize host and port
|
|
33
|
-
flowfile run ui --host 0.0.0.0 --port 8080
|
|
34
|
-
|
|
35
32
|
# Start without automatically opening a browser window
|
|
36
33
|
flowfile run ui --no-browser
|
|
37
34
|
```
|
|
@@ -45,7 +42,7 @@ import flowfile
|
|
|
45
42
|
flowfile.start_web_ui()
|
|
46
43
|
|
|
47
44
|
# Customize host, port, and browser launch
|
|
48
|
-
flowfile.start_web_ui(host="0.0.0.0", port=
|
|
45
|
+
flowfile.start_web_ui(host="0.0.0.0", port=63578, open_browser=False)
|
|
49
46
|
```
|
|
50
47
|
|
|
51
48
|
## Architecture Overview
|
|
@@ -107,10 +104,10 @@ For development or specialized deployments, you can run the components separatel
|
|
|
107
104
|
|
|
108
105
|
```bash
|
|
109
106
|
# Run only the core service
|
|
110
|
-
flowfile run core --host 0.0.0.0 --port
|
|
107
|
+
flowfile run core --host 0.0.0.0 --port 63578
|
|
111
108
|
|
|
112
109
|
# Run only the worker service
|
|
113
|
-
flowfile run worker --host 0.0.0.0 --port
|
|
110
|
+
flowfile run worker --host 0.0.0.0 --port 63579
|
|
114
111
|
```
|
|
115
112
|
|
|
116
113
|
## Troubleshooting
|
|
@@ -49,10 +49,9 @@ def extend_app(app: FastAPI):
|
|
|
49
49
|
return FileResponse(svg_path, media_type="image/svg+xml")
|
|
50
50
|
return Response(status_code=404)
|
|
51
51
|
|
|
52
|
-
@app.get("/
|
|
53
|
-
async def
|
|
54
|
-
|
|
55
|
-
return WORKER_URL
|
|
52
|
+
@app.get("/single_mode")
|
|
53
|
+
async def in_single_mode():
|
|
54
|
+
return os.environ.get('SINGLE_FILE_MODE', "0")
|
|
56
55
|
|
|
57
56
|
@app.get("/ui", include_in_schema=False)
|
|
58
57
|
async def web_ui_root():
|
|
@@ -142,7 +141,7 @@ def start_server(host="127.0.0.1", port=63578, open_browser=True):
|
|
|
142
141
|
|
|
143
142
|
# Open browser if requested
|
|
144
143
|
if open_browser:
|
|
145
|
-
time.sleep(
|
|
144
|
+
time.sleep(5)
|
|
146
145
|
webbrowser.open_new_tab(f"http://{host}:{port}/ui")
|
|
147
146
|
|
|
148
147
|
print("\n" + "=" * 60)
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "Flowfile"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.1"
|
|
4
4
|
description = "Project combining flowfile core (backend) and flowfile_worker (compute offloader) and flowfile_frame (api)"
|
|
5
5
|
readme = "readme-pypi.md"
|
|
6
6
|
authors = ["Edward van Eechoud <evaneechoud@gmail.com>"]
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/Edwardvaneechoud/Flowfile/main/.github/images/logo.png" alt="Flowfile Logo" width="100">
|
|
3
|
+
<br>
|
|
4
|
+
Flowfile
|
|
5
|
+
</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<b>Main Repository</b>: <a href="https://github.com/Edwardvaneechoud/Flowfile">Edwardvaneechoud/Flowfile</a><br>
|
|
9
|
+
<b>Documentation</b>:
|
|
10
|
+
<a href="https://edwardvaneechoud.github.io/Flowfile/">Website</a> -
|
|
11
|
+
<a href="https://github.com/Edwardvaneechoud/Flowfile/blob/main/flowfile_core/README.md">Core</a> -
|
|
12
|
+
<a href="https://github.com/Edwardvaneechoud/Flowfile/blob/main/flowfile_worker/README.md">Worker</a> -
|
|
13
|
+
<a href="https://github.com/Edwardvaneechoud/Flowfile/blob/main/flowfile_frontend/README.md">Frontend</a> -
|
|
14
|
+
<a href="https://dev.to/edwardvaneechoud/building-flowfile-architecting-a-visual-etl-tool-with-polars-576c">Technical Architecture</a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p>
|
|
5
18
|
Flowfile is a visual ETL tool and Python library suite that combines drag-and-drop workflow building with the speed of Polars dataframes. Build data pipelines visually, transform data using powerful nodes, or define data flows programmatically with Python and analyze results - all with high-performance data processing.
|
|
6
|
-
|
|
7
|
-

|
|
19
|
+
</p>
|
|
8
20
|
|
|
9
21
|
## 🚀 Getting Started
|
|
10
22
|
|
|
@@ -32,8 +44,8 @@ This will:
|
|
|
32
44
|
|
|
33
45
|
**Options:**
|
|
34
46
|
```bash
|
|
35
|
-
# Customize host
|
|
36
|
-
flowfile run ui --host 0.0.0.0
|
|
47
|
+
# Customize host
|
|
48
|
+
flowfile run ui --host 0.0.0.0
|
|
37
49
|
|
|
38
50
|
# Start without opening a browser
|
|
39
51
|
flowfile run ui --no-browser
|
|
@@ -169,8 +181,8 @@ flowfile
|
|
|
169
181
|
flowfile run ui [options]
|
|
170
182
|
|
|
171
183
|
# Run individual services
|
|
172
|
-
flowfile run core --host 0.0.0.0 --port
|
|
173
|
-
flowfile run worker --host 0.0.0.0 --port
|
|
184
|
+
flowfile run core --host 0.0.0.0 --port 63578
|
|
185
|
+
flowfile run worker --host 0.0.0.0 --port 63579
|
|
174
186
|
```
|
|
175
187
|
|
|
176
188
|
## 📚 Resources
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/UnavailableFields-5edd5322.css
RENAMED
|
File without changes
|
{flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/UnavailableFields-b41976ed.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-regular-400-e3456d12.woff2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-v4compatibility-0ce9033c.woff2
RENAMED
|
File without changes
|
{flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/fa-v4compatibility-30f6abf6.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/genericNodeSettings-65587f20.js
RENAMED
|
File without changes
|
{flowfile-0.3.0.2 → flowfile-0.3.1}/flowfile/web/static/assets/genericNodeSettings-924759c7.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|