Flowfile 0.3.0.1__tar.gz → 0.3.0.3__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.
Files changed (304) hide show
  1. flowfile-0.3.0.3/PKG-INFO +247 -0
  2. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/__main__.py +7 -8
  3. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/api.py +9 -5
  4. flowfile-0.3.0.3/flowfile/readme.md +130 -0
  5. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/__init__.py +5 -5
  6. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/pyproject.toml +1 -1
  7. flowfile-0.3.0.3/readme-pypi.md +204 -0
  8. flowfile-0.3.0.1/PKG-INFO +0 -219
  9. flowfile-0.3.0.1/readme-pypi.md +0 -175
  10. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/LICENSE +0 -0
  11. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/build_backends/build_backends/__init__.py +0 -0
  12. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/build_backends/build_backends/main.py +0 -0
  13. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/build_backends/build_backends/main_prd.py +0 -0
  14. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/__init__.py +0 -0
  15. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/AirbyteReader-1ac35765.css +0 -0
  16. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/AirbyteReader-cb0c1d4a.js +0 -0
  17. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/CrossJoin-41efa4cb.css +0 -0
  18. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/CrossJoin-a514fa59.js +0 -0
  19. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseConnectionSettings-0c04b2e5.css +0 -0
  20. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseConnectionSettings-f2cecf33.js +0 -0
  21. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -0
  22. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseManager-83ee3c98.js +0 -0
  23. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseReader-dc0c6881.js +0 -0
  24. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseReader-f50c6558.css +0 -0
  25. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseWriter-2f570e53.css +0 -0
  26. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/DatabaseWriter-5afe9f8d.js +0 -0
  27. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/ExploreData-5bdae813.css +0 -0
  28. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/ExploreData-c7ee19cf.js +0 -0
  29. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/ExternalSource-17b23a01.js +0 -0
  30. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/ExternalSource-e37b6275.css +0 -0
  31. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Filter-90856b4f.js +0 -0
  32. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Filter-a9d08ba1.css +0 -0
  33. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Formula-38b71e9e.js +0 -0
  34. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Formula-d60a74f4.css +0 -0
  35. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/FuzzyMatch-6857de82.css +0 -0
  36. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/FuzzyMatch-d0f1fe81.js +0 -0
  37. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/GoogleSheet-854294a4.js +0 -0
  38. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/GoogleSheet-92084da7.css +0 -0
  39. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/GraphSolver-0c86bbc6.js +0 -0
  40. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -0
  41. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/GroupBy-ab1ea74b.css +0 -0
  42. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/GroupBy-f2772e9f.js +0 -0
  43. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Join-41c0f331.css +0 -0
  44. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Join-bc3e1cf7.js +0 -0
  45. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/ManualInput-03aa0245.js +0 -0
  46. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/ManualInput-ac7b9972.css +0 -0
  47. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Output-48f81019.css +0 -0
  48. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Output-5b35eee8.js +0 -0
  49. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Pivot-7164087c.js +0 -0
  50. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Pivot-f415e85f.css +0 -0
  51. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/PolarsCode-3abf6507.js +0 -0
  52. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/PolarsCode-650322d1.css +0 -0
  53. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/PopOver-b37ff9be.js +0 -0
  54. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/PopOver-bccfde04.css +0 -0
  55. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Read-65966a3e.js +0 -0
  56. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Read-80dc1675.css +0 -0
  57. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/RecordCount-c66c6d6d.js +0 -0
  58. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/RecordId-826dc095.js +0 -0
  59. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Sample-4ed555c8.js +0 -0
  60. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/SecretManager-eac1e97d.js +0 -0
  61. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Select-085f05cc.js +0 -0
  62. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/SettingsSection-1f5e79c1.js +0 -0
  63. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/SettingsSection-9c836ecc.css +0 -0
  64. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Sort-3e6cb414.js +0 -0
  65. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Sort-7ccfa0fe.css +0 -0
  66. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/TextToRows-606349bc.js +0 -0
  67. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/TextToRows-c92d1ec2.css +0 -0
  68. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/UnavailableFields-5edd5322.css +0 -0
  69. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/UnavailableFields-b41976ed.js +0 -0
  70. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Union-8d9ac7f9.css +0 -0
  71. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Union-fca91665.js +0 -0
  72. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Unique-a59f830e.js +0 -0
  73. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Unique-b5615727.css +0 -0
  74. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -0
  75. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/Unpivot-c3815565.js +0 -0
  76. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/airbyte-292aa232.png +0 -0
  77. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/api-22b338bd.js +0 -0
  78. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/cross_join-d30c0290.png +0 -0
  79. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/database_reader-ce1e55f3.svg +0 -0
  80. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/database_writer-b4ad0753.svg +0 -0
  81. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/designer-2394122a.css +0 -0
  82. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/designer-e5bbe26f.js +0 -0
  83. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/documentation-08045cf2.js +0 -0
  84. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/documentation-12216a74.css +0 -0
  85. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/dropDown-35135ba8.css +0 -0
  86. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/dropDown-5e7e9a5a.js +0 -0
  87. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/dropDownGeneric-50a91b99.js +0 -0
  88. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/dropDownGeneric-895680d6.css +0 -0
  89. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/element-icons-9c88a535.woff +0 -0
  90. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/element-icons-de5eb258.ttf +0 -0
  91. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/explore_data-8a0a2861.png +0 -0
  92. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-brands-400-808443ae.ttf +0 -0
  93. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-brands-400-d7236a19.woff2 +0 -0
  94. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-regular-400-54cf6086.ttf +0 -0
  95. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-regular-400-e3456d12.woff2 +0 -0
  96. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-solid-900-aa759986.woff2 +0 -0
  97. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-solid-900-d2f05935.ttf +0 -0
  98. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-v4compatibility-0ce9033c.woff2 +0 -0
  99. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fa-v4compatibility-30f6abf6.ttf +0 -0
  100. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/filter-d7708bda.png +0 -0
  101. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/formula-eeeb1611.png +0 -0
  102. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fullEditor-178376bb.css +0 -0
  103. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fullEditor-705c6ccb.js +0 -0
  104. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/fuzzy_match-40c161b2.png +0 -0
  105. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/genericNodeSettings-65587f20.js +0 -0
  106. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/genericNodeSettings-924759c7.css +0 -0
  107. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/graph_solver-8b7888b8.png +0 -0
  108. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/group_by-80561fc3.png +0 -0
  109. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/index-552863fd.js +0 -0
  110. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/index-681a3ed0.css +0 -0
  111. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/input_data-ab2eb678.png +0 -0
  112. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/join-349043ae.png +0 -0
  113. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/manual_input-ae98f31d.png +0 -0
  114. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/nodeTitle-cf9bae3c.js +0 -0
  115. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -0
  116. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/old_join-5d0eb604.png +0 -0
  117. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/output-06ec0371.png +0 -0
  118. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/pivot-9660df51.png +0 -0
  119. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/polars_code-05ce5dc6.png +0 -0
  120. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/record_count-dab44eb5.png +0 -0
  121. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/record_id-0b15856b.png +0 -0
  122. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/sample-693a88b5.png +0 -0
  123. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/secretApi-3ad510e1.js +0 -0
  124. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/select-b0d0437a.png +0 -0
  125. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/selectDynamic-b062bc9b.css +0 -0
  126. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/selectDynamic-bd644891.js +0 -0
  127. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/sort-2aa579f0.png +0 -0
  128. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/summarize-2a099231.png +0 -0
  129. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/text_to_rows-859b29ea.png +0 -0
  130. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/union-2d8609f4.png +0 -0
  131. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/unique-1958b98a.png +0 -0
  132. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/unpivot-d3cb4b5b.png +0 -0
  133. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/view-7a0f0be1.png +0 -0
  134. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/vue-codemirror.esm-dd17b478.js +0 -0
  135. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/assets/vue-content-loader.es-6b36f05e.js +0 -0
  136. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/flowfile.svg +0 -0
  137. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/icons/flowfile.png +0 -0
  138. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/images/airbyte.png +0 -0
  139. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/images/flowfile.svg +0 -0
  140. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/images/google.svg +0 -0
  141. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/images/sheets.png +0 -0
  142. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/index.html +0 -0
  143. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/vite.svg +0 -0
  144. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile/web/static/vue.svg +0 -0
  145. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/__init__.py +0 -0
  146. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/auth/__init__.py +0 -0
  147. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/auth/jwt.py +0 -0
  148. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/auth/models.py +0 -0
  149. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/auth/secrets.py +0 -0
  150. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/configs/__init__.py +0 -0
  151. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/configs/flow_logger.py +0 -0
  152. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/configs/node_store/__init__.py +0 -0
  153. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/configs/node_store/nodes.py +0 -0
  154. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/configs/settings.py +0 -0
  155. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/database/__init__.py +0 -0
  156. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/database/connection.py +0 -0
  157. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/database/init_db.py +0 -0
  158. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/database/models.py +0 -0
  159. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/fileExplorer/__init__.py +0 -0
  160. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/fileExplorer/funcs.py +0 -0
  161. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/fileExplorer/utils.py +0 -0
  162. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/FlowfileFlow.py +0 -0
  163. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/__init__.py +0 -0
  164. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/_extensions/__init__.py +0 -0
  165. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/_extensions/real_time_interface.py +0 -0
  166. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/analytics/__init__.py +0 -0
  167. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/analytics/analytics_processor.py +0 -0
  168. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/analytics/graphic_walker.py +0 -0
  169. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/analytics/schemas/__init__.py +0 -0
  170. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/analytics/utils.py +0 -0
  171. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/connection_manager/__init__.py +0 -0
  172. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/connection_manager/_connection_manager.py +0 -0
  173. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/connection_manager/models.py +0 -0
  174. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/database_connection_manager/__init__.py +0 -0
  175. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/database_connection_manager/db_connections.py +0 -0
  176. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/database_connection_manager/models.py +0 -0
  177. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/extensions.py +0 -0
  178. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/__init__.py +0 -0
  179. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/__init__.py +0 -0
  180. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/funcs.py +0 -0
  181. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +0 -0
  182. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/__init__.py +0 -0
  183. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +0 -0
  184. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +0 -0
  185. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +0 -0
  186. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/__init__.py +0 -0
  187. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +0 -0
  188. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/settings_validator.py +0 -0
  189. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/__init__.py +0 -0
  190. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +0 -0
  191. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/pivot_table.py +0 -0
  192. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +0 -0
  193. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +0 -0
  194. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/sample_data.py +0 -0
  195. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +0 -0
  196. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +0 -0
  197. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +0 -0
  198. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/threaded_processes.py +0 -0
  199. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/types.py +0 -0
  200. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_data_engine/utils.py +0 -0
  201. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_node/__init__.py +0 -0
  202. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_node/flow_node.py +0 -0
  203. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_node/models.py +0 -0
  204. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/flow_node/schema_callback.py +0 -0
  205. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/handler.py +0 -0
  206. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/manage/__init__.py +0 -0
  207. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/manage/compatibility_enhancements.py +0 -0
  208. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/manage/manage_flowfile.py +0 -0
  209. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/manage/open_flowfile.py +0 -0
  210. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/setting_generator/__init__.py +0 -0
  211. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/setting_generator/setting_generator.py +0 -0
  212. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/setting_generator/settings.py +0 -0
  213. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/__init__.py +0 -0
  214. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/__init__.py +0 -0
  215. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/__init__.py +0 -0
  216. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/airbyte.py +0 -0
  217. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/models.py +0 -0
  218. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/settings.py +0 -0
  219. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/base_class.py +0 -0
  220. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/__init__.py +0 -0
  221. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/exchange_rate.py +0 -0
  222. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +0 -0
  223. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/google_sheet.py +0 -0
  224. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +0 -0
  225. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/factory.py +0 -0
  226. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/__init__.py +0 -0
  227. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/models.py +0 -0
  228. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +0 -0
  229. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +0 -0
  230. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/util/__init__.py +0 -0
  231. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/util/calculate_layout.py +0 -0
  232. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/util/execution_orderer.py +0 -0
  233. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/flowfile/utils.py +0 -0
  234. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/main.py +0 -0
  235. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/routes/__init__.py +0 -0
  236. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/routes/auth.py +0 -0
  237. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/routes/logs.py +0 -0
  238. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/routes/public.py +0 -0
  239. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/routes/routes.py +0 -0
  240. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/routes/secrets.py +0 -0
  241. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/run_lock.py +0 -0
  242. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/__init__.py +0 -0
  243. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/analysis_schemas/__init__.py +0 -0
  244. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +0 -0
  245. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/defaults.py +0 -0
  246. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/external_sources/__init__.py +0 -0
  247. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/external_sources/airbyte_schemas.py +0 -0
  248. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/input_schema.py +0 -0
  249. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/models.py +0 -0
  250. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/output_model.py +0 -0
  251. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/schemas.py +0 -0
  252. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/schemas/transform_schema.py +0 -0
  253. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/secrets/__init__.py +0 -0
  254. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/secrets/secrets.py +0 -0
  255. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/utils/__init__.py +0 -0
  256. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/utils/arrow_reader.py +0 -0
  257. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/utils/excel_file_manager.py +0 -0
  258. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/utils/fileManager.py +0 -0
  259. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/utils/fl_executor.py +0 -0
  260. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_core/flowfile_core/utils/utils.py +0 -0
  261. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/__init__.py +0 -0
  262. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/adapters.py +0 -0
  263. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/expr.py +0 -0
  264. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/flow_frame.py +0 -0
  265. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/group_frame.py +0 -0
  266. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/join.py +0 -0
  267. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/selectors.py +0 -0
  268. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_frame/flowfile_frame/utils.py +0 -0
  269. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/__init__.py +0 -0
  270. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/configs.py +0 -0
  271. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/create/__init__.py +0 -0
  272. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/create/funcs.py +0 -0
  273. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/create/models.py +0 -0
  274. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/create/pl_types.py +0 -0
  275. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/create/read_excel_tables.py +0 -0
  276. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/create/utils.py +0 -0
  277. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/__init__.py +0 -0
  278. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/__init__.py +0 -0
  279. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/cache_manager.py +0 -0
  280. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/main.py +0 -0
  281. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/models.py +0 -0
  282. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/settings.py +0 -0
  283. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/sql_source/__init__.py +0 -0
  284. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/sql_source/main.py +0 -0
  285. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/external_sources/sql_source/models.py +0 -0
  286. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/flow_logger.py +0 -0
  287. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/funcs.py +0 -0
  288. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/main.py +0 -0
  289. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/models.py +0 -0
  290. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/polars_fuzzy_match/__init__.py +0 -0
  291. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/polars_fuzzy_match/matcher.py +0 -0
  292. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/polars_fuzzy_match/models.py +0 -0
  293. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/polars_fuzzy_match/pre_process.py +0 -0
  294. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/polars_fuzzy_match/process.py +0 -0
  295. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/polars_fuzzy_match/utils.py +0 -0
  296. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/process_manager.py +0 -0
  297. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/routes.py +0 -0
  298. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/secrets.py +0 -0
  299. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/spawner.py +0 -0
  300. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/flowfile_worker/flowfile_worker/utils.py +0 -0
  301. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/test_utils/__init__.py +0 -0
  302. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/test_utils/postgres/__init__.py +0 -0
  303. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/test_utils/postgres/commands.py +0 -0
  304. {flowfile-0.3.0.1 → flowfile-0.3.0.3}/test_utils/postgres/fixtures.py +0 -0
@@ -0,0 +1,247 @@
1
+ Metadata-Version: 2.3
2
+ Name: Flowfile
3
+ Version: 0.3.0.3
4
+ Summary: Project combining flowfile core (backend) and flowfile_worker (compute offloader) and flowfile_frame (api)
5
+ Author: Edward van Eechoud
6
+ Author-email: evaneechoud@gmail.com
7
+ Requires-Python: >=3.10,<3.13
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Requires-Dist: XlsxWriter (>=3.2.0,<3.3.0)
13
+ Requires-Dist: aiofiles (>=24.1.0,<25.0.0)
14
+ Requires-Dist: airbyte-cdk (==6.47.2)
15
+ Requires-Dist: bcrypt (>=4.3.0,<5.0.0)
16
+ Requires-Dist: connectorx (>=0.4.2,<0.5.0)
17
+ Requires-Dist: databases (>=0.9.0,<0.10.0)
18
+ Requires-Dist: faker (>=23.1.0,<23.2.0)
19
+ Requires-Dist: fastapi (>=0.115.2,<0.116.0)
20
+ Requires-Dist: fastexcel (>=0.12.0,<0.13.0)
21
+ Requires-Dist: google-api-python-client (>=2.149.0,<2.150.0)
22
+ Requires-Dist: gspread (>=6.1.3,<6.2.0)
23
+ Requires-Dist: loky (>=3.4.1,<3.5.0)
24
+ Requires-Dist: methodtools (>=0.4.7,<0.5.0)
25
+ Requires-Dist: openpyxl (>=3.1.2,<3.2.0)
26
+ Requires-Dist: passlib (>=1.7.4,<1.8.0)
27
+ Requires-Dist: pendulum (==2.1.2) ; python_version < "3.12"
28
+ Requires-Dist: polars (>1.8.2,<=1.25.2)
29
+ Requires-Dist: polars-distance (>=0.4.3,<0.5.0)
30
+ Requires-Dist: polars-ds (>=0.6.0)
31
+ Requires-Dist: polars-expr-transformer (>0.4.7.0)
32
+ Requires-Dist: polars-grouper (>=0.3.0,<0.4.0)
33
+ Requires-Dist: polars_simed (>=0.3.4,<0.4.0)
34
+ Requires-Dist: pyairbyte-flowfile (==0.20.2)
35
+ Requires-Dist: pyarrow (>=18.0.0,<19.0.0)
36
+ Requires-Dist: pydantic (>=2.9.2,<2.10.0)
37
+ Requires-Dist: pyinstaller (>=6.11.0,<7.0.0)
38
+ Requires-Dist: pytest (>=8.3.4,<9.0.0)
39
+ Requires-Dist: python-jose (>=3.4.0,<4.0.0)
40
+ Requires-Dist: python-multipart (>=0.0.12,<0.1.0)
41
+ Requires-Dist: uvicorn (>=0.32.0,<0.33.0)
42
+ Description-Content-Type: text/markdown
43
+
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>
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.
62
+ </p>
63
+
64
+ ## 🚀 Getting Started
65
+
66
+ ### Installation
67
+
68
+ Install Flowfile directly from PyPI:
69
+
70
+ ```bash
71
+ pip install Flowfile
72
+ ```
73
+
74
+ ### Quick Start: Web UI
75
+
76
+ The easiest way to get started is by launching the web-based UI:
77
+
78
+ ```bash
79
+ # Start the Flowfile web UI with integrated services
80
+ flowfile run ui
81
+ ```
82
+
83
+ This will:
84
+ - Start the combined core and worker services
85
+ - Launch a web interface in your browser
86
+ - Provide access to the full visual ETL capabilities
87
+
88
+ **Options:**
89
+ ```bash
90
+ # Customize host and port
91
+ flowfile run ui --host 0.0.0.0 --port 8080
92
+
93
+ # Start without opening a browser
94
+ flowfile run ui --no-browser
95
+ ```
96
+
97
+ You can also start the web UI programmatically:
98
+
99
+ ```python
100
+ import flowfile
101
+
102
+ # Start with default settings
103
+ flowfile.start_web_ui()
104
+
105
+ # Or customize
106
+ flowfile.start_web_ui(host="0.0.0.0", port=8080, open_browser=False)
107
+ ```
108
+
109
+ ### Using the FlowFrame API
110
+
111
+ Flowfile provides a Polars-like API for defining data pipelines programmatically:
112
+
113
+ ```python
114
+ import flowfile as ff
115
+ from flowfile import col, open_graph_in_editor
116
+
117
+ # Create a data pipeline
118
+ df = ff.from_dict({
119
+ "id": [1, 2, 3, 4, 5],
120
+ "category": ["A", "B", "A", "C", "B"],
121
+ "value": [100, 200, 150, 300, 250]
122
+ })
123
+
124
+ # Process the data
125
+ result = df.filter(col("value") > 150).with_columns([
126
+ (col("value") * 2).alias("double_value")
127
+ ])
128
+
129
+ # Open the graph in the web UI (starts the server if needed)
130
+ open_graph_in_editor(result.flow_graph)
131
+ ```
132
+
133
+ ## 📦 Package Components
134
+
135
+ The `Flowfile` PyPI package includes:
136
+
137
+ - **Core Service (`flowfile_core`)**: The main ETL engine using Polars
138
+ - **Worker Service (`flowfile_worker`)**: Handles computation-intensive tasks
139
+ - **Web UI**: Browser-based visual ETL interface
140
+ - **FlowFrame API (`flowfile_frame`)**: Polars-like API for Python coding
141
+
142
+ ## ✨ Key Features
143
+
144
+ ### Visual ETL with Web UI
145
+
146
+ - **No Installation Required**: Launch directly from the pip package
147
+ - **Drag-and-Drop Interface**: Build data pipelines visually
148
+ - **Integrated Services**: Combined core and worker services
149
+ - **Browser-Based**: Access from any device on your network
150
+
151
+ ### FlowFrame API
152
+
153
+ - **Familiar Syntax**: Polars-like API makes it easy to learn
154
+ - **ETL Graph Generation**: Automatically builds visual workflows
155
+ - **Lazy Evaluation**: Operations are not executed until needed
156
+ - **Interoperability**: Move between code and visual interfaces
157
+
158
+ ### Data Operations
159
+
160
+ - **Data Cleaning & Transformation**: Complex joins, filtering, etc.
161
+ - **High Performance**: Built on Polars for efficient processing
162
+ - **Data Integration**: Handle various file formats
163
+ - **ETL Pipeline Building**: Create reusable workflows
164
+
165
+ ## 🔄 Common FlowFrame Operations
166
+
167
+ ```python
168
+
169
+ import flowfile as ff
170
+ from flowfile import col, when, lit
171
+
172
+ # Read data
173
+ df = ff.from_dict({
174
+ "id": [1, 2, 3, 4, 5],
175
+ "category": ["A", "B", "A", "C", "B"],
176
+ "value": [100, 200, 150, 300, 250]
177
+ })
178
+ # df_parquet = ff.read_parquet("data.parquet")
179
+ # df_csv = ff.read_csv("data.csv")
180
+
181
+ other_df = ff.from_dict({
182
+ "product_id": [1, 2, 3, 4, 6],
183
+ "product_name": ["WidgetA", "WidgetB", "WidgetC", "WidgetD", "WidgetE"],
184
+ "supplier": ["SupplierX", "SupplierY", "SupplierX", "SupplierZ", "SupplierY"]
185
+ }, flow_graph=df.flow_graph # Assign the data to the same graph
186
+ )
187
+
188
+ # Filter
189
+ filtered = df.filter(col("value") > 150)
190
+
191
+ # Transform
192
+ result = df.select(
193
+ col("id"),
194
+ (col("value") * 2).alias("double_value")
195
+ )
196
+
197
+ # Conditional logic
198
+ with_status = df.with_columns([
199
+ when(col("value") > 200).then(lit("High")).otherwise(lit("Low")).alias("status")
200
+ ])
201
+
202
+ # Group and aggregate
203
+ by_category = df.group_by("category").agg([
204
+ col("value").sum().alias("total"),
205
+ col("value").mean().alias("average")
206
+ ])
207
+
208
+ # Join data
209
+ joined = df.join(other_df, left_on="id", right_on="product_id")
210
+
211
+ joined.flow_graph.flow_settings.execution_location = "auto"
212
+ joined.flow_graph.flow_settings.execution_mode = "Development"
213
+ ff.open_graph_in_editor(joined.flow_graph) # opens the graph in the UI!
214
+
215
+ ```
216
+
217
+ ## 🧰 Command-Line Interface
218
+
219
+ ```bash
220
+ # Show help and version info
221
+ flowfile
222
+
223
+ # Start the web UI
224
+ flowfile run ui [options]
225
+
226
+ # Run individual services
227
+ flowfile run core --host 0.0.0.0 --port 8080
228
+ flowfile run worker --host 0.0.0.0 --port 8079
229
+ ```
230
+
231
+ ## 📚 Resources
232
+
233
+ - **[Main Repository](https://github.com/Edwardvaneechoud/Flowfile)**: Latest code and examples
234
+ - **[Documentation](https://edwardvaneechoud.github.io/Flowfile/)**: Comprehensive guides
235
+ - **[Technical Architecture](https://dev.to/edwardvaneechoud/building-flowfile-architecting-a-visual-etl-tool-with-polars-576c)**: Design overview
236
+
237
+ ## 🖥️ Full Application Options
238
+
239
+ For the complete visual ETL experience, you have additional options:
240
+
241
+ - **Desktop Application**: Download from the [main repository](https://github.com/Edwardvaneechoud/Flowfile#-getting-started)
242
+ - **Docker Setup**: Run with Docker Compose
243
+ - **Manual Setup**: For development environments
244
+
245
+ ## 📋 Development Roadmap
246
+
247
+ See the [main repository](https://github.com/Edwardvaneechoud/Flowfile#-todo) for the latest development roadmap and TODO list.
@@ -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=["web", "core", "worker"],
13
- help="Component to run (web, core, or worker)")
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")
@@ -19,7 +19,7 @@ def main():
19
19
  args = parser.parse_args()
20
20
 
21
21
  if args.command == "run" and args.component:
22
- if args.component == "web":
22
+ if args.component == "ui":
23
23
  try:
24
24
  flowfile.start_web_ui(
25
25
  host=args.host,
@@ -42,19 +42,18 @@ def main():
42
42
  print("A framework combining visual ETL with a Polars-like API")
43
43
  print("\nUsage:")
44
44
  print(" # Start the FlowFile web UI with integrated services")
45
- print(" flowfile run web")
45
+ print(" flowfile run ui")
46
46
  print("")
47
47
  print(" # Advanced: Run individual components")
48
48
  print(" flowfile run core # Start only the core service")
49
49
  print(" flowfile run worker # Start only the worker service")
50
50
  print("")
51
51
  print(" # Options")
52
- print(" flowfile run web --host 0.0.0.0 --port 8080 # Custom host/port")
53
- print(" flowfile run web --no-browser # Don't open browser")
52
+ print(" flowfile run ui --host 0.0.0.0 --port 8080 # Custom host/port")
53
+ print(" flowfile run ui --no-browser # Don't open browser")
54
54
  print("")
55
55
  print(" # Python API usage examples")
56
56
  print(" import flowfile as ff")
57
57
  print(" df = ff.read_csv('data.csv')")
58
58
  print(" result = df.filter(ff.col('value') > 10)")
59
- print(" ff.open_graph_in_editor(result)")
60
- print(" ff.start_web_ui()")
59
+ print(" ff.open_graph_in_editor(result)")
@@ -119,7 +119,7 @@ def build_server_command(module_name: str) -> List[str]:
119
119
  "run",
120
120
  module_name,
121
121
  "run",
122
- "web",
122
+ "ui",
123
123
  "--no-browser",
124
124
  f"--port={FLOWFILE_PORT}",
125
125
  ]
@@ -134,7 +134,7 @@ def build_server_command(module_name: str) -> List[str]:
134
134
  "-m",
135
135
  module_name,
136
136
  "run",
137
- "web",
137
+ "ui",
138
138
  "--no-browser",
139
139
  f"--port={FLOWFILE_PORT}",
140
140
  ]
@@ -314,7 +314,7 @@ def _save_flow_to_location(
314
314
  def _open_flow_in_browser(flow_id: int) -> None:
315
315
  """Opens the specified flow ID in a browser tab if in unified mode."""
316
316
  if os.environ.get("FLOWFILE_MODE") == "electron":
317
- flow_url = f"http://{FLOWFILE_HOST}:{FLOWFILE_PORT}/web/flow/{flow_id}"
317
+ flow_url = f"http://{FLOWFILE_HOST}:{FLOWFILE_PORT}/ui/flow/{flow_id}"
318
318
  logger.info(f"Unified mode detected. Opening imported flow in browser: {flow_url}")
319
319
  try:
320
320
  time.sleep(0.5)
@@ -335,7 +335,8 @@ def _cleanup_temporary_storage(temp_dir_obj: Optional[TemporaryDirectory]) -> No
335
335
  logger.error(f"Error cleaning up temporary directory {temp_dir_obj.name}: {e}")
336
336
 
337
337
 
338
- def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str] = None, module_name: str = DEFAULT_MODULE_NAME) -> bool:
338
+ def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str] = None,
339
+ module_name: str = DEFAULT_MODULE_NAME) -> bool:
339
340
  """
340
341
  Save the ETL graph, ensure the Flowfile server is running (starting it
341
342
  if necessary), import the graph via API, and open it in a new browser
@@ -353,10 +354,13 @@ def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str]
353
354
  """
354
355
  temp_dir_obj: Optional[TemporaryDirectory] = None
355
356
  try:
357
+ original_execution_settings = flow_graph.flow_settings.model_copy()
358
+ flow_graph.flow_settings.execution_location = "auto"
359
+ flow_graph.flow_settings.execution_mode = "Development"
356
360
  flow_file_path, temp_dir_obj = _save_flow_to_location(flow_graph, storage_location)
357
361
  if not flow_file_path:
358
362
  return False
359
-
363
+ flow_graph.flow_settings = original_execution_settings
360
364
  if not start_flowfile_server_process(module_name):
361
365
  return False
362
366
 
@@ -0,0 +1,130 @@
1
+ # Flowfile Web UI Documentation
2
+
3
+ ## Overview
4
+
5
+ Flowfile now supports a web-based user interface that can be launched directly from the pip-installed package. This enhancement allows users to quickly get started with the visual ETL tool without needing to install the desktop application, set up Docker, or manually configure the services.
6
+
7
+ ## Key Features
8
+
9
+ - **Integrated Web UI**: Launch the Flowfile interface directly in your browser
10
+ - **Unified Service**: Combined API that serves both the web UI and processes worker operations
11
+ - **Easy Installation**: Simple pip installation and startup process
12
+ - **Visual ETL**: Access to all the visual ETL capabilities through a web interface
13
+
14
+ ## Installation
15
+
16
+ Install Flowfile from PyPI using pip:
17
+
18
+ ```bash
19
+ pip install Flowfile
20
+ ```
21
+
22
+ ## Starting the Web UI
23
+
24
+ You can start the Flowfile web UI using either the Python module or the command-line interface:
25
+
26
+ ### Using the Command-Line Interface
27
+
28
+ ```bash
29
+ # Start the web UI with default settings
30
+ flowfile run ui
31
+
32
+ # Customize host and port
33
+ flowfile run ui --host 0.0.0.0 --port 8080
34
+
35
+ # Start without automatically opening a browser window
36
+ flowfile run ui --no-browser
37
+ ```
38
+
39
+ ### Using Python
40
+
41
+ ```python
42
+ import flowfile
43
+
44
+ # Start the web UI with default settings
45
+ flowfile.start_web_ui()
46
+
47
+ # Customize host, port, and browser launch
48
+ flowfile.start_web_ui(host="0.0.0.0", port=8080, open_browser=False)
49
+ ```
50
+
51
+ ## Architecture Overview
52
+
53
+ The web UI functionality combines multiple components:
54
+
55
+ 1. **Core Service**: The main ETL engine (flowfile_core) that processes data transformations
56
+ 2. **Worker Service**: Handles computation and caching of data operations (flowfile_worker)
57
+ 3. **Web UI**: A Vue.js frontend that provides the visual interface
58
+
59
+ When you start the web UI, all these services are launched together in a unified mode, making it simple to get started without configuration.
60
+
61
+ ## Using the Web UI with FlowFrame API
62
+
63
+ You can create data pipelines programmatically with the FlowFrame API and then visualize them in the web UI:
64
+
65
+ ```python
66
+ import flowfile as ff
67
+ from flowfile import open_graph_in_editor
68
+
69
+ # Create a data pipeline
70
+ df = ff.from_dict({
71
+ "id": [1, 2, 3, 4, 5],
72
+ "category": ["A", "B", "A", "C", "B"],
73
+ "value": [100, 200, 150, 300, 250]
74
+ })
75
+
76
+ # Process the data
77
+ result = df.filter(ff.col("value") > 150).with_columns([
78
+ (ff.col("value") * 2).alias("double_value")
79
+ ])
80
+
81
+ # Open the graph in the web UI (starts the server if it's not running)
82
+ open_graph_in_editor(result.flow_graph)
83
+ ```
84
+
85
+ The `open_graph_in_editor` function automatically:
86
+ 1. Saves the flow graph to a temporary file
87
+ 2. Starts the Flowfile server if it's not already running
88
+ 3. Imports the flow into the editor
89
+ 4. Opens a browser tab with the imported flow
90
+
91
+ ## Advanced Server Configuration
92
+
93
+ For advanced users who need to customize the server behavior:
94
+
95
+ ### Environment Variables
96
+
97
+ - `FLOWFILE_HOST`: Host to bind the server to (default: "127.0.0.1")
98
+ - `FLOWFILE_PORT`: Port to bind the server to (default: 63578)
99
+ - `FLOWFILE_MODE`: Set to "electron" to enable browser auto-opening behavior
100
+ - `WORKER_URL`: URL for the worker service
101
+ - `SINGLE_FILE_MODE`: Set to "1" to run in unified mode with worker functionality
102
+ - `FLOWFILE_MODULE_NAME`: Module name to run (default: "flowfile")
103
+
104
+ ### Running Individual Components
105
+
106
+ For development or specialized deployments, you can run the components separately:
107
+
108
+ ```bash
109
+ # Run only the core service
110
+ flowfile run core --host 0.0.0.0 --port 8080
111
+
112
+ # Run only the worker service
113
+ flowfile run worker --host 0.0.0.0 --port 8081
114
+ ```
115
+
116
+ ## Troubleshooting
117
+
118
+ - If the web UI doesn't open automatically, manually navigate to http://localhost:63578/ui
119
+ - If you encounter connection issues, check if the port is already in use
120
+ - Look for server logs in the terminal where you started the service for error messages
121
+ - For issues with the API, navigate to http://localhost:63578/docs to verify the API is running
122
+
123
+ ## Next Steps
124
+
125
+ Once you're familiar with the web UI, you might want to explore:
126
+
127
+ 1. The desktop application for a more native experience
128
+ 2. Docker deployment for production environments
129
+ 3. Advanced ETL operations using the FlowFrame API
130
+ 4. Custom node development for specialized transformations
@@ -54,7 +54,7 @@ def extend_app(app: FastAPI):
54
54
  from flowfile_core.configs.settings import WORKER_URL
55
55
  return WORKER_URL
56
56
 
57
- @app.get("/web", include_in_schema=False)
57
+ @app.get("/ui", include_in_schema=False)
58
58
  async def web_ui_root():
59
59
  """Serve the main index.html file for the web UI"""
60
60
  index_path = static_dir / "index.html"
@@ -62,7 +62,7 @@ def extend_app(app: FastAPI):
62
62
  return FileResponse(index_path)
63
63
  return {"error": "Web UI not installed. Build the frontend and install it in the package."}
64
64
 
65
- @app.get("/web/{path:path}", include_in_schema=False)
65
+ @app.get("/ui/{path:path}", include_in_schema=False)
66
66
  async def serve_vue_app(path: str):
67
67
  """Serve static files or the index.html for client-side routing"""
68
68
  # Try to serve the requested file
@@ -72,7 +72,7 @@ def extend_app(app: FastAPI):
72
72
 
73
73
  # If it's a directory, redirect to add trailing slash
74
74
  if (static_dir / path).exists() and (static_dir / path).is_dir():
75
- return RedirectResponse(f"/web/{path}/")
75
+ return RedirectResponse(f"/ui/{path}/")
76
76
 
77
77
  # For client-side routing, serve the index.html
78
78
  index_path = static_dir / "index.html"
@@ -143,11 +143,11 @@ def start_server(host="127.0.0.1", port=63578, open_browser=True):
143
143
  # Open browser if requested
144
144
  if open_browser:
145
145
  time.sleep(2)
146
- webbrowser.open_new_tab(f"http://{host}:{port}/web")
146
+ webbrowser.open_new_tab(f"http://{host}:{port}/ui")
147
147
 
148
148
  print("\n" + "=" * 60)
149
149
  print(" FlowFile - Visual ETL Tool (Unified Mode)")
150
- print(f" Web UI: http://{host}:{port}/web")
150
+ print(f" Web UI: http://{host}:{port}/ui")
151
151
  print(f" API Docs: http://{host}:{port}/docs")
152
152
  print("=" * 60 + "\n")
153
153
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "Flowfile"
3
- version = "0.3.0.1"
3
+ version = "0.3.0.3"
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>"]