Flowfile 0.3.0__tar.gz → 0.3.0.2__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.

Files changed (307) hide show
  1. flowfile-0.3.0.2/PKG-INFO +235 -0
  2. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile/__init__.py +13 -6
  3. flowfile-0.3.0.2/flowfile/__main__.py +59 -0
  4. flowfile-0.3.0.2/flowfile/api.py +383 -0
  5. flowfile-0.3.0.2/flowfile/readme.md +130 -0
  6. flowfile-0.3.0.2/flowfile/web/__init__.py +155 -0
  7. flowfile-0.3.0.2/flowfile/web/static/assets/AirbyteReader-1ac35765.css +314 -0
  8. flowfile-0.3.0.2/flowfile/web/static/assets/AirbyteReader-cb0c1d4a.js +921 -0
  9. flowfile-0.3.0.2/flowfile/web/static/assets/CrossJoin-41efa4cb.css +100 -0
  10. flowfile-0.3.0.2/flowfile/web/static/assets/CrossJoin-a514fa59.js +153 -0
  11. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseConnectionSettings-0c04b2e5.css +77 -0
  12. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseConnectionSettings-f2cecf33.js +151 -0
  13. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseManager-30fa27e5.css +64 -0
  14. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseManager-83ee3c98.js +484 -0
  15. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseReader-dc0c6881.js +426 -0
  16. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseReader-f50c6558.css +158 -0
  17. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseWriter-2f570e53.css +96 -0
  18. flowfile-0.3.0.2/flowfile/web/static/assets/DatabaseWriter-5afe9f8d.js +312 -0
  19. flowfile-0.3.0.2/flowfile/web/static/assets/ExploreData-5bdae813.css +45 -0
  20. flowfile-0.3.0.2/flowfile/web/static/assets/ExploreData-c7ee19cf.js +118306 -0
  21. flowfile-0.3.0.2/flowfile/web/static/assets/ExternalSource-17b23a01.js +225 -0
  22. flowfile-0.3.0.2/flowfile/web/static/assets/ExternalSource-e37b6275.css +94 -0
  23. flowfile-0.3.0.2/flowfile/web/static/assets/Filter-90856b4f.js +238 -0
  24. flowfile-0.3.0.2/flowfile/web/static/assets/Filter-a9d08ba1.css +20 -0
  25. flowfile-0.3.0.2/flowfile/web/static/assets/Formula-38b71e9e.js +197 -0
  26. flowfile-0.3.0.2/flowfile/web/static/assets/Formula-d60a74f4.css +17 -0
  27. flowfile-0.3.0.2/flowfile/web/static/assets/FuzzyMatch-6857de82.css +254 -0
  28. flowfile-0.3.0.2/flowfile/web/static/assets/FuzzyMatch-d0f1fe81.js +422 -0
  29. flowfile-0.3.0.2/flowfile/web/static/assets/GoogleSheet-854294a4.js +2616 -0
  30. flowfile-0.3.0.2/flowfile/web/static/assets/GoogleSheet-92084da7.css +233 -0
  31. flowfile-0.3.0.2/flowfile/web/static/assets/GraphSolver-0c86bbc6.js +382 -0
  32. flowfile-0.3.0.2/flowfile/web/static/assets/GraphSolver-17fd26db.css +68 -0
  33. flowfile-0.3.0.2/flowfile/web/static/assets/GroupBy-ab1ea74b.css +51 -0
  34. flowfile-0.3.0.2/flowfile/web/static/assets/GroupBy-f2772e9f.js +413 -0
  35. flowfile-0.3.0.2/flowfile/web/static/assets/Join-41c0f331.css +109 -0
  36. flowfile-0.3.0.2/flowfile/web/static/assets/Join-bc3e1cf7.js +247 -0
  37. flowfile-0.3.0.2/flowfile/web/static/assets/ManualInput-03aa0245.js +391 -0
  38. flowfile-0.3.0.2/flowfile/web/static/assets/ManualInput-ac7b9972.css +84 -0
  39. flowfile-0.3.0.2/flowfile/web/static/assets/Output-48f81019.css +2642 -0
  40. flowfile-0.3.0.2/flowfile/web/static/assets/Output-5b35eee8.js +536 -0
  41. flowfile-0.3.0.2/flowfile/web/static/assets/Pivot-7164087c.js +408 -0
  42. flowfile-0.3.0.2/flowfile/web/static/assets/Pivot-f415e85f.css +35 -0
  43. flowfile-0.3.0.2/flowfile/web/static/assets/PolarsCode-3abf6507.js +2863 -0
  44. flowfile-0.3.0.2/flowfile/web/static/assets/PolarsCode-650322d1.css +35 -0
  45. flowfile-0.3.0.2/flowfile/web/static/assets/PopOver-b37ff9be.js +577 -0
  46. flowfile-0.3.0.2/flowfile/web/static/assets/PopOver-bccfde04.css +32 -0
  47. flowfile-0.3.0.2/flowfile/web/static/assets/Read-65966a3e.js +701 -0
  48. flowfile-0.3.0.2/flowfile/web/static/assets/Read-80dc1675.css +197 -0
  49. flowfile-0.3.0.2/flowfile/web/static/assets/RecordCount-c66c6d6d.js +121 -0
  50. flowfile-0.3.0.2/flowfile/web/static/assets/RecordId-826dc095.js +339 -0
  51. flowfile-0.3.0.2/flowfile/web/static/assets/Sample-4ed555c8.js +184 -0
  52. flowfile-0.3.0.2/flowfile/web/static/assets/SecretManager-eac1e97d.js +382 -0
  53. flowfile-0.3.0.2/flowfile/web/static/assets/Select-085f05cc.js +231 -0
  54. flowfile-0.3.0.2/flowfile/web/static/assets/SettingsSection-1f5e79c1.js +87 -0
  55. flowfile-0.3.0.2/flowfile/web/static/assets/SettingsSection-9c836ecc.css +47 -0
  56. flowfile-0.3.0.2/flowfile/web/static/assets/Sort-3e6cb414.js +309 -0
  57. flowfile-0.3.0.2/flowfile/web/static/assets/Sort-7ccfa0fe.css +51 -0
  58. flowfile-0.3.0.2/flowfile/web/static/assets/TextToRows-606349bc.js +307 -0
  59. flowfile-0.3.0.2/flowfile/web/static/assets/TextToRows-c92d1ec2.css +48 -0
  60. flowfile-0.3.0.2/flowfile/web/static/assets/UnavailableFields-5edd5322.css +49 -0
  61. flowfile-0.3.0.2/flowfile/web/static/assets/UnavailableFields-b41976ed.js +36 -0
  62. flowfile-0.3.0.2/flowfile/web/static/assets/Union-8d9ac7f9.css +30 -0
  63. flowfile-0.3.0.2/flowfile/web/static/assets/Union-fca91665.js +145 -0
  64. flowfile-0.3.0.2/flowfile/web/static/assets/Unique-a59f830e.js +273 -0
  65. flowfile-0.3.0.2/flowfile/web/static/assets/Unique-b5615727.css +51 -0
  66. flowfile-0.3.0.2/flowfile/web/static/assets/Unpivot-246e9bbd.css +77 -0
  67. flowfile-0.3.0.2/flowfile/web/static/assets/Unpivot-c3815565.js +441 -0
  68. flowfile-0.3.0.2/flowfile/web/static/assets/airbyte-292aa232.png +0 -0
  69. flowfile-0.3.0.2/flowfile/web/static/assets/api-22b338bd.js +60 -0
  70. flowfile-0.3.0.2/flowfile/web/static/assets/cross_join-d30c0290.png +0 -0
  71. flowfile-0.3.0.2/flowfile/web/static/assets/database_reader-ce1e55f3.svg +24 -0
  72. flowfile-0.3.0.2/flowfile/web/static/assets/database_writer-b4ad0753.svg +23 -0
  73. flowfile-0.3.0.2/flowfile/web/static/assets/designer-2394122a.css +10697 -0
  74. flowfile-0.3.0.2/flowfile/web/static/assets/designer-e5bbe26f.js +69712 -0
  75. flowfile-0.3.0.2/flowfile/web/static/assets/documentation-08045cf2.js +33 -0
  76. flowfile-0.3.0.2/flowfile/web/static/assets/documentation-12216a74.css +50 -0
  77. flowfile-0.3.0.2/flowfile/web/static/assets/dropDown-35135ba8.css +143 -0
  78. flowfile-0.3.0.2/flowfile/web/static/assets/dropDown-5e7e9a5a.js +319 -0
  79. flowfile-0.3.0.2/flowfile/web/static/assets/dropDownGeneric-50a91b99.js +72 -0
  80. flowfile-0.3.0.2/flowfile/web/static/assets/dropDownGeneric-895680d6.css +10 -0
  81. flowfile-0.3.0.2/flowfile/web/static/assets/element-icons-9c88a535.woff +0 -0
  82. flowfile-0.3.0.2/flowfile/web/static/assets/element-icons-de5eb258.ttf +0 -0
  83. flowfile-0.3.0.2/flowfile/web/static/assets/explore_data-8a0a2861.png +0 -0
  84. flowfile-0.3.0.2/flowfile/web/static/assets/fa-brands-400-808443ae.ttf +0 -0
  85. flowfile-0.3.0.2/flowfile/web/static/assets/fa-brands-400-d7236a19.woff2 +0 -0
  86. flowfile-0.3.0.2/flowfile/web/static/assets/fa-regular-400-54cf6086.ttf +0 -0
  87. flowfile-0.3.0.2/flowfile/web/static/assets/fa-regular-400-e3456d12.woff2 +0 -0
  88. flowfile-0.3.0.2/flowfile/web/static/assets/fa-solid-900-aa759986.woff2 +0 -0
  89. flowfile-0.3.0.2/flowfile/web/static/assets/fa-solid-900-d2f05935.ttf +0 -0
  90. flowfile-0.3.0.2/flowfile/web/static/assets/fa-v4compatibility-0ce9033c.woff2 +0 -0
  91. flowfile-0.3.0.2/flowfile/web/static/assets/fa-v4compatibility-30f6abf6.ttf +0 -0
  92. flowfile-0.3.0.2/flowfile/web/static/assets/filter-d7708bda.png +0 -0
  93. flowfile-0.3.0.2/flowfile/web/static/assets/formula-eeeb1611.png +0 -0
  94. flowfile-0.3.0.2/flowfile/web/static/assets/fullEditor-178376bb.css +256 -0
  95. flowfile-0.3.0.2/flowfile/web/static/assets/fullEditor-705c6ccb.js +630 -0
  96. flowfile-0.3.0.2/flowfile/web/static/assets/fuzzy_match-40c161b2.png +0 -0
  97. flowfile-0.3.0.2/flowfile/web/static/assets/genericNodeSettings-65587f20.js +137 -0
  98. flowfile-0.3.0.2/flowfile/web/static/assets/genericNodeSettings-924759c7.css +46 -0
  99. flowfile-0.3.0.2/flowfile/web/static/assets/graph_solver-8b7888b8.png +0 -0
  100. flowfile-0.3.0.2/flowfile/web/static/assets/group_by-80561fc3.png +0 -0
  101. flowfile-0.3.0.2/flowfile/web/static/assets/index-552863fd.js +58652 -0
  102. flowfile-0.3.0.2/flowfile/web/static/assets/index-681a3ed0.css +8843 -0
  103. flowfile-0.3.0.2/flowfile/web/static/assets/input_data-ab2eb678.png +0 -0
  104. flowfile-0.3.0.2/flowfile/web/static/assets/join-349043ae.png +0 -0
  105. flowfile-0.3.0.2/flowfile/web/static/assets/manual_input-ae98f31d.png +0 -0
  106. flowfile-0.3.0.2/flowfile/web/static/assets/nodeTitle-cf9bae3c.js +227 -0
  107. flowfile-0.3.0.2/flowfile/web/static/assets/nodeTitle-f4b12bcb.css +134 -0
  108. flowfile-0.3.0.2/flowfile/web/static/assets/old_join-5d0eb604.png +0 -0
  109. flowfile-0.3.0.2/flowfile/web/static/assets/output-06ec0371.png +0 -0
  110. flowfile-0.3.0.2/flowfile/web/static/assets/pivot-9660df51.png +0 -0
  111. flowfile-0.3.0.2/flowfile/web/static/assets/polars_code-05ce5dc6.png +0 -0
  112. flowfile-0.3.0.2/flowfile/web/static/assets/record_count-dab44eb5.png +0 -0
  113. flowfile-0.3.0.2/flowfile/web/static/assets/record_id-0b15856b.png +0 -0
  114. flowfile-0.3.0.2/flowfile/web/static/assets/sample-693a88b5.png +0 -0
  115. flowfile-0.3.0.2/flowfile/web/static/assets/secretApi-3ad510e1.js +46 -0
  116. flowfile-0.3.0.2/flowfile/web/static/assets/select-b0d0437a.png +0 -0
  117. flowfile-0.3.0.2/flowfile/web/static/assets/selectDynamic-b062bc9b.css +107 -0
  118. flowfile-0.3.0.2/flowfile/web/static/assets/selectDynamic-bd644891.js +302 -0
  119. flowfile-0.3.0.2/flowfile/web/static/assets/sort-2aa579f0.png +0 -0
  120. flowfile-0.3.0.2/flowfile/web/static/assets/summarize-2a099231.png +0 -0
  121. flowfile-0.3.0.2/flowfile/web/static/assets/text_to_rows-859b29ea.png +0 -0
  122. flowfile-0.3.0.2/flowfile/web/static/assets/union-2d8609f4.png +0 -0
  123. flowfile-0.3.0.2/flowfile/web/static/assets/unique-1958b98a.png +0 -0
  124. flowfile-0.3.0.2/flowfile/web/static/assets/unpivot-d3cb4b5b.png +0 -0
  125. flowfile-0.3.0.2/flowfile/web/static/assets/view-7a0f0be1.png +0 -0
  126. flowfile-0.3.0.2/flowfile/web/static/assets/vue-codemirror.esm-dd17b478.js +22281 -0
  127. flowfile-0.3.0.2/flowfile/web/static/assets/vue-content-loader.es-6b36f05e.js +210 -0
  128. flowfile-0.3.0.2/flowfile/web/static/flowfile.svg +47 -0
  129. flowfile-0.3.0.2/flowfile/web/static/icons/flowfile.png +0 -0
  130. flowfile-0.3.0.2/flowfile/web/static/images/airbyte.png +0 -0
  131. flowfile-0.3.0.2/flowfile/web/static/images/flowfile.svg +47 -0
  132. flowfile-0.3.0.2/flowfile/web/static/images/google.svg +1 -0
  133. flowfile-0.3.0.2/flowfile/web/static/images/sheets.png +0 -0
  134. flowfile-0.3.0.2/flowfile/web/static/index.html +22 -0
  135. flowfile-0.3.0.2/flowfile/web/static/vite.svg +1 -0
  136. flowfile-0.3.0.2/flowfile/web/static/vue.svg +1 -0
  137. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/configs/settings.py +7 -32
  138. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/FlowfileFlow.py +4 -2
  139. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/analytics/analytics_processor.py +1 -1
  140. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/main.py +4 -1
  141. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/input_schema.py +1 -8
  142. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_frame/flowfile_frame/__init__.py +0 -1
  143. flowfile-0.3.0.2/flowfile_frame/flowfile_frame/utils.py +45 -0
  144. {flowfile-0.3.0 → flowfile-0.3.0.2}/pyproject.toml +6 -2
  145. flowfile-0.3.0.2/readme-pypi.md +192 -0
  146. flowfile-0.3.0/PKG-INFO +0 -219
  147. flowfile-0.3.0/flowfile/__main__.py +0 -24
  148. flowfile-0.3.0/flowfile_frame/flowfile_frame/__main__.py +0 -12
  149. flowfile-0.3.0/flowfile_frame/flowfile_frame/utils.py +0 -184
  150. flowfile-0.3.0/readme-pypi.md +0 -175
  151. {flowfile-0.3.0 → flowfile-0.3.0.2}/LICENSE +0 -0
  152. {flowfile-0.3.0 → flowfile-0.3.0.2}/build_backends/build_backends/__init__.py +0 -0
  153. {flowfile-0.3.0 → flowfile-0.3.0.2}/build_backends/build_backends/main.py +0 -0
  154. {flowfile-0.3.0 → flowfile-0.3.0.2}/build_backends/build_backends/main_prd.py +0 -0
  155. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/__init__.py +0 -0
  156. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/auth/__init__.py +0 -0
  157. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/auth/jwt.py +0 -0
  158. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/auth/models.py +0 -0
  159. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/auth/secrets.py +0 -0
  160. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/configs/__init__.py +0 -0
  161. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/configs/flow_logger.py +0 -0
  162. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/configs/node_store/__init__.py +0 -0
  163. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/configs/node_store/nodes.py +0 -0
  164. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/database/__init__.py +0 -0
  165. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/database/connection.py +0 -0
  166. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/database/init_db.py +0 -0
  167. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/database/models.py +0 -0
  168. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/fileExplorer/__init__.py +0 -0
  169. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/fileExplorer/funcs.py +0 -0
  170. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/fileExplorer/utils.py +0 -0
  171. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/__init__.py +0 -0
  172. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/_extensions/__init__.py +0 -0
  173. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/_extensions/real_time_interface.py +0 -0
  174. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/analytics/__init__.py +0 -0
  175. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/analytics/graphic_walker.py +0 -0
  176. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/analytics/schemas/__init__.py +0 -0
  177. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/analytics/utils.py +0 -0
  178. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/connection_manager/__init__.py +0 -0
  179. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/connection_manager/_connection_manager.py +0 -0
  180. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/connection_manager/models.py +0 -0
  181. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/database_connection_manager/__init__.py +0 -0
  182. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/database_connection_manager/db_connections.py +0 -0
  183. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/database_connection_manager/models.py +0 -0
  184. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/extensions.py +0 -0
  185. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/__init__.py +0 -0
  186. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/__init__.py +0 -0
  187. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/funcs.py +0 -0
  188. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +0 -0
  189. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/__init__.py +0 -0
  190. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +0 -0
  191. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +0 -0
  192. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +0 -0
  193. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/__init__.py +0 -0
  194. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +0 -0
  195. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/settings_validator.py +0 -0
  196. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/__init__.py +0 -0
  197. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +0 -0
  198. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/pivot_table.py +0 -0
  199. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +0 -0
  200. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +0 -0
  201. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/sample_data.py +0 -0
  202. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +0 -0
  203. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +0 -0
  204. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +0 -0
  205. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/threaded_processes.py +0 -0
  206. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/types.py +0 -0
  207. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_data_engine/utils.py +0 -0
  208. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_node/__init__.py +0 -0
  209. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_node/flow_node.py +0 -0
  210. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_node/models.py +0 -0
  211. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/flow_node/schema_callback.py +0 -0
  212. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/handler.py +0 -0
  213. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/manage/__init__.py +0 -0
  214. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/manage/compatibility_enhancements.py +0 -0
  215. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/manage/manage_flowfile.py +0 -0
  216. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/manage/open_flowfile.py +0 -0
  217. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/setting_generator/__init__.py +0 -0
  218. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/setting_generator/setting_generator.py +0 -0
  219. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/setting_generator/settings.py +0 -0
  220. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/__init__.py +0 -0
  221. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/__init__.py +0 -0
  222. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/__init__.py +0 -0
  223. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/airbyte.py +0 -0
  224. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/models.py +0 -0
  225. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/airbyte_sources/settings.py +0 -0
  226. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/base_class.py +0 -0
  227. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/__init__.py +0 -0
  228. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/exchange_rate.py +0 -0
  229. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +0 -0
  230. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/google_sheet.py +0 -0
  231. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +0 -0
  232. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/factory.py +0 -0
  233. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/__init__.py +0 -0
  234. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/models.py +0 -0
  235. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +0 -0
  236. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +0 -0
  237. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/util/__init__.py +0 -0
  238. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/util/calculate_layout.py +0 -0
  239. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/util/execution_orderer.py +0 -0
  240. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/flowfile/utils.py +0 -0
  241. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/routes/__init__.py +0 -0
  242. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/routes/auth.py +0 -0
  243. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/routes/logs.py +0 -0
  244. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/routes/public.py +0 -0
  245. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/routes/routes.py +0 -0
  246. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/routes/secrets.py +0 -0
  247. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/run_lock.py +0 -0
  248. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/__init__.py +0 -0
  249. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/analysis_schemas/__init__.py +0 -0
  250. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +0 -0
  251. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/defaults.py +0 -0
  252. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/external_sources/__init__.py +0 -0
  253. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/external_sources/airbyte_schemas.py +0 -0
  254. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/models.py +0 -0
  255. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/output_model.py +0 -0
  256. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/schemas.py +0 -0
  257. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/schemas/transform_schema.py +0 -0
  258. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/secrets/__init__.py +0 -0
  259. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/secrets/secrets.py +0 -0
  260. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/utils/__init__.py +0 -0
  261. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/utils/arrow_reader.py +0 -0
  262. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/utils/excel_file_manager.py +0 -0
  263. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/utils/fileManager.py +0 -0
  264. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/utils/fl_executor.py +0 -0
  265. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_core/flowfile_core/utils/utils.py +0 -0
  266. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_frame/flowfile_frame/adapters.py +0 -0
  267. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_frame/flowfile_frame/expr.py +0 -0
  268. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_frame/flowfile_frame/flow_frame.py +0 -0
  269. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_frame/flowfile_frame/group_frame.py +0 -0
  270. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_frame/flowfile_frame/join.py +0 -0
  271. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_frame/flowfile_frame/selectors.py +0 -0
  272. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/__init__.py +0 -0
  273. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/configs.py +0 -0
  274. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/create/__init__.py +0 -0
  275. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/create/funcs.py +0 -0
  276. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/create/models.py +0 -0
  277. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/create/pl_types.py +0 -0
  278. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/create/read_excel_tables.py +0 -0
  279. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/create/utils.py +0 -0
  280. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/__init__.py +0 -0
  281. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/__init__.py +0 -0
  282. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/cache_manager.py +0 -0
  283. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/main.py +0 -0
  284. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/models.py +0 -0
  285. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/airbyte_sources/settings.py +0 -0
  286. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/sql_source/__init__.py +0 -0
  287. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/sql_source/main.py +0 -0
  288. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/external_sources/sql_source/models.py +0 -0
  289. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/flow_logger.py +0 -0
  290. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/funcs.py +0 -0
  291. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/main.py +0 -0
  292. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/models.py +0 -0
  293. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/polars_fuzzy_match/__init__.py +0 -0
  294. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/polars_fuzzy_match/matcher.py +0 -0
  295. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/polars_fuzzy_match/models.py +0 -0
  296. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/polars_fuzzy_match/pre_process.py +0 -0
  297. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/polars_fuzzy_match/process.py +0 -0
  298. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/polars_fuzzy_match/utils.py +0 -0
  299. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/process_manager.py +0 -0
  300. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/routes.py +0 -0
  301. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/secrets.py +0 -0
  302. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/spawner.py +0 -0
  303. {flowfile-0.3.0 → flowfile-0.3.0.2}/flowfile_worker/flowfile_worker/utils.py +0 -0
  304. {flowfile-0.3.0 → flowfile-0.3.0.2}/test_utils/__init__.py +0 -0
  305. {flowfile-0.3.0 → flowfile-0.3.0.2}/test_utils/postgres/__init__.py +0 -0
  306. {flowfile-0.3.0 → flowfile-0.3.0.2}/test_utils/postgres/commands.py +0 -0
  307. {flowfile-0.3.0 → flowfile-0.3.0.2}/test_utils/postgres/fixtures.py +0 -0
@@ -0,0 +1,235 @@
1
+ Metadata-Version: 2.3
2
+ Name: Flowfile
3
+ Version: 0.3.0.2
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
+ # Flowfile
45
+
46
+ ![Flowfile Logo](https://raw.githubusercontent.com/Edwardvaneechoud/Flowfile/main/.github/images/logo.png)
47
+
48
+ 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
+ ![Flowfile Interface](https://raw.githubusercontent.com/Edwardvaneechoud/Flowfile/main/.github/images/group_by_screenshot.png)
51
+
52
+ ## 🚀 Getting Started
53
+
54
+ ### Installation
55
+
56
+ Install Flowfile directly from PyPI:
57
+
58
+ ```bash
59
+ pip install Flowfile
60
+ ```
61
+
62
+ ### Quick Start: Web UI
63
+
64
+ The easiest way to get started is by launching the web-based UI:
65
+
66
+ ```bash
67
+ # Start the Flowfile web UI with integrated services
68
+ flowfile run ui
69
+ ```
70
+
71
+ This will:
72
+ - Start the combined core and worker services
73
+ - Launch a web interface in your browser
74
+ - Provide access to the full visual ETL capabilities
75
+
76
+ **Options:**
77
+ ```bash
78
+ # Customize host and port
79
+ flowfile run ui --host 0.0.0.0 --port 8080
80
+
81
+ # Start without opening a browser
82
+ flowfile run ui --no-browser
83
+ ```
84
+
85
+ You can also start the web UI programmatically:
86
+
87
+ ```python
88
+ import flowfile
89
+
90
+ # Start with default settings
91
+ flowfile.start_web_ui()
92
+
93
+ # Or customize
94
+ flowfile.start_web_ui(host="0.0.0.0", port=8080, open_browser=False)
95
+ ```
96
+
97
+ ### Using the FlowFrame API
98
+
99
+ Flowfile provides a Polars-like API for defining data pipelines programmatically:
100
+
101
+ ```python
102
+ import flowfile as ff
103
+ from flowfile import col, open_graph_in_editor
104
+
105
+ # Create a data pipeline
106
+ df = ff.from_dict({
107
+ "id": [1, 2, 3, 4, 5],
108
+ "category": ["A", "B", "A", "C", "B"],
109
+ "value": [100, 200, 150, 300, 250]
110
+ })
111
+
112
+ # Process the data
113
+ result = df.filter(col("value") > 150).with_columns([
114
+ (col("value") * 2).alias("double_value")
115
+ ])
116
+
117
+ # Open the graph in the web UI (starts the server if needed)
118
+ open_graph_in_editor(result.flow_graph)
119
+ ```
120
+
121
+ ## 📦 Package Components
122
+
123
+ The `Flowfile` PyPI package includes:
124
+
125
+ - **Core Service (`flowfile_core`)**: The main ETL engine using Polars
126
+ - **Worker Service (`flowfile_worker`)**: Handles computation-intensive tasks
127
+ - **Web UI**: Browser-based visual ETL interface
128
+ - **FlowFrame API (`flowfile_frame`)**: Polars-like API for Python coding
129
+
130
+ ## ✨ Key Features
131
+
132
+ ### Visual ETL with Web UI
133
+
134
+ - **No Installation Required**: Launch directly from the pip package
135
+ - **Drag-and-Drop Interface**: Build data pipelines visually
136
+ - **Integrated Services**: Combined core and worker services
137
+ - **Browser-Based**: Access from any device on your network
138
+
139
+ ### FlowFrame API
140
+
141
+ - **Familiar Syntax**: Polars-like API makes it easy to learn
142
+ - **ETL Graph Generation**: Automatically builds visual workflows
143
+ - **Lazy Evaluation**: Operations are not executed until needed
144
+ - **Interoperability**: Move between code and visual interfaces
145
+
146
+ ### Data Operations
147
+
148
+ - **Data Cleaning & Transformation**: Complex joins, filtering, etc.
149
+ - **High Performance**: Built on Polars for efficient processing
150
+ - **Data Integration**: Handle various file formats
151
+ - **ETL Pipeline Building**: Create reusable workflows
152
+
153
+ ## 🔄 Common FlowFrame Operations
154
+
155
+ ```python
156
+
157
+ import flowfile as ff
158
+ from flowfile import col, when, lit
159
+
160
+ # Read data
161
+ df = ff.from_dict({
162
+ "id": [1, 2, 3, 4, 5],
163
+ "category": ["A", "B", "A", "C", "B"],
164
+ "value": [100, 200, 150, 300, 250]
165
+ })
166
+ # df_parquet = ff.read_parquet("data.parquet")
167
+ # df_csv = ff.read_csv("data.csv")
168
+
169
+ other_df = ff.from_dict({
170
+ "product_id": [1, 2, 3, 4, 6],
171
+ "product_name": ["WidgetA", "WidgetB", "WidgetC", "WidgetD", "WidgetE"],
172
+ "supplier": ["SupplierX", "SupplierY", "SupplierX", "SupplierZ", "SupplierY"]
173
+ }, flow_graph=df.flow_graph # Assign the data to the same graph
174
+ )
175
+
176
+ # Filter
177
+ filtered = df.filter(col("value") > 150)
178
+
179
+ # Transform
180
+ result = df.select(
181
+ col("id"),
182
+ (col("value") * 2).alias("double_value")
183
+ )
184
+
185
+ # Conditional logic
186
+ with_status = df.with_columns([
187
+ when(col("value") > 200).then(lit("High")).otherwise(lit("Low")).alias("status")
188
+ ])
189
+
190
+ # Group and aggregate
191
+ by_category = df.group_by("category").agg([
192
+ col("value").sum().alias("total"),
193
+ col("value").mean().alias("average")
194
+ ])
195
+
196
+ # Join data
197
+ joined = df.join(other_df, left_on="id", right_on="product_id")
198
+
199
+ joined.flow_graph.flow_settings.execution_location = "auto"
200
+ joined.flow_graph.flow_settings.execution_mode = "Development"
201
+ ff.open_graph_in_editor(joined.flow_graph) # opens the graph in the UI!
202
+
203
+ ```
204
+
205
+ ## 🧰 Command-Line Interface
206
+
207
+ ```bash
208
+ # Show help and version info
209
+ flowfile
210
+
211
+ # Start the web UI
212
+ flowfile run ui [options]
213
+
214
+ # Run individual services
215
+ flowfile run core --host 0.0.0.0 --port 8080
216
+ flowfile run worker --host 0.0.0.0 --port 8079
217
+ ```
218
+
219
+ ## 📚 Resources
220
+
221
+ - **[Main Repository](https://github.com/Edwardvaneechoud/Flowfile)**: Latest code and examples
222
+ - **[Documentation](https://edwardvaneechoud.github.io/Flowfile/)**: Comprehensive guides
223
+ - **[Technical Architecture](https://dev.to/edwardvaneechoud/building-flowfile-architecting-a-visual-etl-tool-with-polars-576c)**: Design overview
224
+
225
+ ## 🖥️ Full Application Options
226
+
227
+ For the complete visual ETL experience, you have additional options:
228
+
229
+ - **Desktop Application**: Download from the [main repository](https://github.com/Edwardvaneechoud/Flowfile#-getting-started)
230
+ - **Docker Setup**: Run with Docker Compose
231
+ - **Manual Setup**: For development environments
232
+
233
+ ## 📋 Development Roadmap
234
+
235
+ See the [main repository](https://github.com/Edwardvaneechoud/Flowfile#-todo) for the latest development roadmap and TODO list.
@@ -7,9 +7,16 @@ This package ties together the FlowFile ecosystem components:
7
7
  - flowfile_worker: Computation engine
8
8
  """
9
9
 
10
- __version__ = "0.2.1"
10
+ __version__ = "0.3.1"
11
11
 
12
- # Import the key components from flowfile_frame
12
+ import os
13
+ import logging
14
+
15
+ os.environ['WORKER_PORT'] = "63578"
16
+ os.environ['SINGLE_FILE_MODE'] = "1"
17
+
18
+ from flowfile.web import start_server as start_web_ui
19
+ from flowfile.api import open_graph_in_editor
13
20
  from flowfile_frame.flow_frame import (
14
21
  FlowFrame, read_csv, read_parquet, from_dict, concat
15
22
  )
@@ -18,7 +25,7 @@ from flowfile_frame.expr import (
18
25
  sum, min, max, mean, count, when
19
26
  )
20
27
  from flowfile_frame.group_frame import GroupByFrame
21
- from flowfile_frame.utils import create_flow_graph, open_graph_in_editor
28
+ from flowfile_frame.utils import create_flow_graph
22
29
  from flowfile_frame.selectors import (
23
30
  numeric, float_, integer, string, temporal,
24
31
  datetime, date, time, duration, boolean,
@@ -26,7 +33,6 @@ from flowfile_frame.selectors import (
26
33
  by_dtype, contains, starts_with, ends_with, matches
27
34
  )
28
35
 
29
- # Import Polars data types for convenience
30
36
  from polars.datatypes import (
31
37
  Int8, Int16, Int32, Int64, Int128,
32
38
  UInt8, UInt16, UInt32, UInt64,
@@ -38,7 +44,6 @@ from polars.datatypes import (
38
44
  DataType, DataTypeClass, Field
39
45
  )
40
46
 
41
- # Define what's publicly available from the package
42
47
  __all__ = [
43
48
  # Core FlowFrame classes
44
49
  'FlowFrame', 'GroupByFrame',
@@ -68,4 +73,6 @@ __all__ = [
68
73
  'Date', 'Time', 'Datetime', 'Duration',
69
74
  'Categorical', 'Decimal', 'Enum', 'Unknown',
70
75
  'DataType', 'DataTypeClass', 'Field',
71
- ]
76
+ 'start_web_ui'
77
+ ]
78
+ logging.getLogger("PipelineHandler").setLevel(logging.WARNING)
@@ -0,0 +1,59 @@
1
+ # flowfile/__main__.py
2
+
3
+ def main():
4
+ """
5
+ Display information about FlowFile when run directly as a module.
6
+ """
7
+ import flowfile
8
+ import argparse
9
+
10
+ parser = argparse.ArgumentParser(description="FlowFile: A visual ETL tool with a Polars-like API")
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)")
14
+ parser.add_argument("--host", default="127.0.0.1", help="Host to bind the server to")
15
+ parser.add_argument("--port", type=int, default=63578, help="Port to bind the server to")
16
+ parser.add_argument("--no-browser", action="store_true", help="Don't open a browser window")
17
+
18
+ # Parse arguments
19
+ args = parser.parse_args()
20
+
21
+ if args.command == "run" and args.component:
22
+ if args.component == "ui":
23
+ try:
24
+ flowfile.start_web_ui(
25
+ host=args.host,
26
+ port=args.port,
27
+ open_browser=not args.no_browser
28
+ )
29
+ except KeyboardInterrupt:
30
+ print("\nFlowFile service stopped.")
31
+ elif args.component == "core":
32
+ # Only for direct core service usage
33
+ from flowfile_core.main import run as run_core
34
+ run_core(host=args.host, port=args.port)
35
+ elif args.component == "worker":
36
+ # Only for direct worker service usage
37
+ from flowfile_worker.main import run as run_worker
38
+ run_worker(host=args.host, port=args.port)
39
+ else:
40
+ # Default action - show info
41
+ print(f"FlowFile v{flowfile.__version__}")
42
+ print("A framework combining visual ETL with a Polars-like API")
43
+ print("\nUsage:")
44
+ print(" # Start the FlowFile web UI with integrated services")
45
+ print(" flowfile run ui")
46
+ print("")
47
+ print(" # Advanced: Run individual components")
48
+ print(" flowfile run core # Start only the core service")
49
+ print(" flowfile run worker # Start only the worker service")
50
+ print("")
51
+ print(" # Options")
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
+ print("")
55
+ print(" # Python API usage examples")
56
+ print(" import flowfile as ff")
57
+ print(" df = ff.read_csv('data.csv')")
58
+ print(" result = df.filter(ff.col('value') > 10)")
59
+ print(" ff.open_graph_in_editor(result)")