Flowfile 0.5.1__py3-none-any.whl → 0.5.3__py3-none-any.whl

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 (329) hide show
  1. build_backends/main.py +25 -22
  2. build_backends/main_prd.py +10 -19
  3. flowfile/__init__.py +178 -74
  4. flowfile/__main__.py +10 -7
  5. flowfile/api.py +51 -57
  6. flowfile/web/__init__.py +14 -9
  7. flowfile/web/static/assets/AdminView-49392a9a.js +713 -0
  8. flowfile/web/static/assets/AdminView-f53bad23.css +129 -0
  9. flowfile/web/static/assets/CloudConnectionView-36bcd6df.css +72 -0
  10. flowfile/web/static/assets/{CloudConnectionManager-0dfba9f2.js → CloudConnectionView-f13f202b.js} +11 -11
  11. flowfile/web/static/assets/{CloudStorageReader-d5b1b6c9.js → CloudStorageReader-0023d4a5.js} +10 -8
  12. flowfile/web/static/assets/{CloudStorageReader-29d14fcc.css → CloudStorageReader-24c54524.css} +27 -27
  13. flowfile/web/static/assets/{CloudStorageWriter-b0ee067f.css → CloudStorageWriter-60547855.css} +26 -26
  14. flowfile/web/static/assets/{CloudStorageWriter-00d87aad.js → CloudStorageWriter-8e781e11.js} +10 -8
  15. flowfile/web/static/assets/{ColumnSelector-47996a16.css → ColumnSelector-371637fb.css} +2 -2
  16. flowfile/web/static/assets/{ColumnSelector-4685e75d.js → ColumnSelector-8ad68ea9.js} +3 -5
  17. flowfile/web/static/assets/{ContextMenu-c13f91d0.css → ContextMenu-26d4dd27.css} +6 -6
  18. flowfile/web/static/assets/{ContextMenu-23e909da.js → ContextMenu-31ee57f0.js} +3 -3
  19. flowfile/web/static/assets/{ContextMenu-70ae0c79.js → ContextMenu-69a74055.js} +3 -3
  20. flowfile/web/static/assets/{ContextMenu-f149cf7c.js → ContextMenu-8e2051c6.js} +3 -3
  21. flowfile/web/static/assets/{ContextMenu-4c74eef1.css → ContextMenu-8ec1729e.css} +6 -6
  22. flowfile/web/static/assets/{ContextMenu-63cfa99b.css → ContextMenu-9b310c60.css} +6 -6
  23. flowfile/web/static/assets/{CrossJoin-702a3edd.js → CrossJoin-03df6938.js} +12 -10
  24. flowfile/web/static/assets/{CrossJoin-1119d18e.css → CrossJoin-71b4cc10.css} +20 -20
  25. flowfile/web/static/assets/CustomNode-59e99a86.css +32 -0
  26. flowfile/web/static/assets/{CustomNode-b1519993.js → CustomNode-8479239b.js} +36 -24
  27. flowfile/web/static/assets/{DatabaseConnectionSettings-6f3e4ea5.js → DatabaseConnectionSettings-869e3efd.js} +5 -4
  28. flowfile/web/static/assets/{DatabaseConnectionSettings-0c04b2e5.css → DatabaseConnectionSettings-e91df89a.css} +13 -13
  29. flowfile/web/static/assets/{DatabaseReader-ae61773c.css → DatabaseReader-36898a00.css} +24 -24
  30. flowfile/web/static/assets/{DatabaseReader-d38c7295.js → DatabaseReader-c58b9552.js} +25 -15
  31. flowfile/web/static/assets/DatabaseView-6655afd6.css +57 -0
  32. flowfile/web/static/assets/{DatabaseManager-cf5ef661.js → DatabaseView-d26a9140.js} +11 -11
  33. flowfile/web/static/assets/{DatabaseWriter-2f570e53.css → DatabaseWriter-217a99f1.css} +19 -19
  34. flowfile/web/static/assets/{DatabaseWriter-b04ef46a.js → DatabaseWriter-4d05ddc7.js} +17 -10
  35. flowfile/web/static/assets/{designer-8da3ba3a.css → DesignerView-a6d0ee84.css} +614 -546
  36. flowfile/web/static/assets/{designer-9633482a.js → DesignerView-e6f5c0e8.js} +1107 -3170
  37. flowfile/web/static/assets/{documentation-ca400224.js → DocumentationView-2e78ef1b.js} +5 -5
  38. flowfile/web/static/assets/{documentation-12216a74.css → DocumentationView-fd46c656.css} +7 -7
  39. flowfile/web/static/assets/{ExploreData-2d0cf4db.css → ExploreData-10c5acc8.css} +13 -12
  40. flowfile/web/static/assets/{ExploreData-5fa10ed8.js → ExploreData-7b54caca.js} +18 -9
  41. flowfile/web/static/assets/{ExternalSource-d39af878.js → ExternalSource-3fa399b2.js} +9 -7
  42. flowfile/web/static/assets/{ExternalSource-e37b6275.css → ExternalSource-47ab05a3.css} +17 -17
  43. flowfile/web/static/assets/Filter-7494ea97.css +48 -0
  44. flowfile/web/static/assets/Filter-8cbbdbf3.js +287 -0
  45. flowfile/web/static/assets/{Formula-bb96803d.css → Formula-53d58c43.css} +7 -7
  46. flowfile/web/static/assets/{Formula-6b04fb1d.js → Formula-aac42b1e.js} +13 -11
  47. flowfile/web/static/assets/{FuzzyMatch-1010f966.css → FuzzyMatch-ad6361d6.css} +68 -69
  48. flowfile/web/static/assets/{FuzzyMatch-999521f4.js → FuzzyMatch-cd9bbfca.js} +12 -10
  49. flowfile/web/static/assets/{Pivot-cf333e3d.css → GraphSolver-c24dec17.css} +5 -5
  50. flowfile/web/static/assets/{GraphSolver-17dd2198.js → GraphSolver-c7e6780e.js} +13 -11
  51. flowfile/web/static/assets/{GroupBy-6b039e18.js → GroupBy-93c5d22b.js} +9 -7
  52. flowfile/web/static/assets/{GroupBy-b9505323.css → GroupBy-be7ac0bf.css} +10 -10
  53. flowfile/web/static/assets/{Join-fd79b451.css → Join-28b5e18f.css} +22 -22
  54. flowfile/web/static/assets/{Join-24d0f113.js → Join-a19b2de2.js} +13 -11
  55. flowfile/web/static/assets/LoginView-0df4ed0a.js +134 -0
  56. flowfile/web/static/assets/LoginView-d325d632.css +172 -0
  57. flowfile/web/static/assets/ManualInput-3702e677.css +293 -0
  58. flowfile/web/static/assets/{ManualInput-34639209.js → ManualInput-8d3374b2.js} +170 -116
  59. flowfile/web/static/assets/{MultiSelect-0e8724a3.js → MultiSelect-ad1b6243.js} +2 -2
  60. flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js → MultiSelect.vue_vue_type_script_setup_true_lang-e278950d.js} +1 -1
  61. flowfile/web/static/assets/NodeDesigner-40b647c9.js +2610 -0
  62. flowfile/web/static/assets/NodeDesigner-5f53be3f.css +1429 -0
  63. flowfile/web/static/assets/{NumericInput-3d63a470.js → NumericInput-7100234c.js} +2 -2
  64. flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js → NumericInput.vue_vue_type_script_setup_true_lang-5130219f.js} +5 -2
  65. flowfile/web/static/assets/{Output-283fe388.css → Output-35e97000.css} +6 -6
  66. flowfile/web/static/assets/{Output-edea9802.js → Output-f5efd2aa.js} +12 -9
  67. flowfile/web/static/assets/{GraphSolver-f0cb7bfb.css → Pivot-0eda81b4.css} +5 -5
  68. flowfile/web/static/assets/{Pivot-61d19301.js → Pivot-d981d23c.js} +11 -9
  69. flowfile/web/static/assets/PivotValidation-0e905b1a.css +13 -0
  70. flowfile/web/static/assets/{PivotValidation-f97fec5b.js → PivotValidation-39386e95.js} +3 -3
  71. flowfile/web/static/assets/PivotValidation-41b57ad6.css +13 -0
  72. flowfile/web/static/assets/{PivotValidation-de9f43fe.js → PivotValidation-63de1f73.js} +3 -3
  73. flowfile/web/static/assets/{PolarsCode-650322d1.css → PolarsCode-2b1f1f23.css} +4 -4
  74. flowfile/web/static/assets/{PolarsCode-bc3c9984.js → PolarsCode-f9d69217.js} +18 -9
  75. flowfile/web/static/assets/PopOver-b22f049e.js +939 -0
  76. flowfile/web/static/assets/PopOver-d96599db.css +33 -0
  77. flowfile/web/static/assets/{Read-e808b239.css → Read-36e7bd51.css} +12 -12
  78. flowfile/web/static/assets/{Read-64a3f259.js → Read-aec2e377.js} +14 -11
  79. flowfile/web/static/assets/{RecordCount-3d5039be.js → RecordCount-78ed6845.js} +6 -4
  80. flowfile/web/static/assets/{RecordId-597510e0.js → RecordId-2156e890.js} +8 -6
  81. flowfile/web/static/assets/{SQLQueryComponent-36cef432.css → SQLQueryComponent-1c2f26b4.css} +5 -5
  82. flowfile/web/static/assets/{SQLQueryComponent-df51adbe.js → SQLQueryComponent-48c72f5b.js} +3 -3
  83. flowfile/web/static/assets/{Sample-4be0a507.js → Sample-1352ca74.js} +6 -4
  84. flowfile/web/static/assets/SecretSelector-22b5ff89.js +113 -0
  85. flowfile/web/static/assets/SecretSelector-6329f743.css +43 -0
  86. flowfile/web/static/assets/{SecretManager-4839be57.js → SecretsView-17df66ee.js} +35 -36
  87. flowfile/web/static/assets/SecretsView-aa291340.css +38 -0
  88. flowfile/web/static/assets/{Select-9b72f201.js → Select-0aee4c54.js} +9 -7
  89. flowfile/web/static/assets/{SettingsSection-f0f75a42.js → SettingsSection-0784e157.js} +3 -3
  90. flowfile/web/static/assets/{SettingsSection-71e6b7e3.css → SettingsSection-07fbbc39.css} +4 -4
  91. flowfile/web/static/assets/{SettingsSection-5c696bee.css → SettingsSection-26fe48d4.css} +4 -4
  92. flowfile/web/static/assets/{SettingsSection-2e4d03c4.css → SettingsSection-8f980839.css} +4 -4
  93. flowfile/web/static/assets/{SettingsSection-e1e9c953.js → SettingsSection-cd341bb6.js} +3 -3
  94. flowfile/web/static/assets/{SettingsSection-7ded385d.js → SettingsSection-f2002a6d.js} +3 -3
  95. flowfile/web/static/assets/{SingleSelect-6c777aac.js → SingleSelect-460cc0ea.js} +2 -2
  96. flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js → SingleSelect.vue_vue_type_script_setup_true_lang-30741bb2.js} +1 -1
  97. flowfile/web/static/assets/{SliderInput-7cb93e62.js → SliderInput-5d926864.js} +7 -4
  98. flowfile/web/static/assets/SliderInput-f2e4f23c.css +4 -0
  99. flowfile/web/static/assets/{Sort-6cbde21a.js → Sort-3cdc971b.js} +9 -7
  100. flowfile/web/static/assets/{Unique-f9fb0809.css → Sort-8a871341.css} +10 -10
  101. flowfile/web/static/assets/{TextInput-d9a40c11.js → TextInput-a2d0bfbd.js} +2 -2
  102. flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-5896c375.js → TextInput.vue_vue_type_script_setup_true_lang-abad1ca2.js} +5 -2
  103. flowfile/web/static/assets/{TextToRows-5d2c1190.css → TextToRows-12afb4f4.css} +10 -10
  104. flowfile/web/static/assets/{TextToRows-c4fcbf4d.js → TextToRows-918945f7.js} +11 -10
  105. flowfile/web/static/assets/{ToggleSwitch-4ef91d19.js → ToggleSwitch-f0ef5196.js} +2 -2
  106. flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-5605c793.js} +1 -1
  107. flowfile/web/static/assets/{UnavailableFields-5edd5322.css → UnavailableFields-54d2f518.css} +6 -6
  108. flowfile/web/static/assets/{UnavailableFields-a03f512c.js → UnavailableFields-bdad6144.js} +4 -4
  109. flowfile/web/static/assets/{Union-af6c3d9b.css → Union-d6a8d7d5.css} +7 -7
  110. flowfile/web/static/assets/{Union-bfe9b996.js → Union-e8ab8c86.js} +8 -6
  111. flowfile/web/static/assets/{Unique-5d023a27.js → Unique-8cd4f976.js} +13 -10
  112. flowfile/web/static/assets/{Sort-3643d625.css → Unique-9fb2f567.css} +10 -10
  113. flowfile/web/static/assets/{Unpivot-1e422df3.css → Unpivot-710a2948.css} +7 -7
  114. flowfile/web/static/assets/{Unpivot-91cc5354.js → Unpivot-8da14095.js} +10 -8
  115. flowfile/web/static/assets/{UnpivotValidation-7ee2de44.js → UnpivotValidation-6f7d89ff.js} +3 -3
  116. flowfile/web/static/assets/UnpivotValidation-d5ca3b7b.css +13 -0
  117. flowfile/web/static/assets/{VueGraphicWalker-e51b9924.js → VueGraphicWalker-3fb312e1.js} +4 -4
  118. flowfile/web/static/assets/{VueGraphicWalker-ed5ab88b.css → VueGraphicWalker-430f0b86.css} +1 -1
  119. flowfile/web/static/assets/{api-cf1221f0.js → api-24483f0d.js} +1 -1
  120. flowfile/web/static/assets/{api-c1bad5ca.js → api-8b81fa73.js} +1 -1
  121. flowfile/web/static/assets/{dropDown-35135ba8.css → dropDown-3d8dc5fa.css} +40 -40
  122. flowfile/web/static/assets/{dropDown-614b998d.js → dropDown-ac0fda9d.js} +3 -3
  123. flowfile/web/static/assets/{fullEditor-f7971590.js → fullEditor-5497a84a.js} +11 -10
  124. flowfile/web/static/assets/{fullEditor-178376bb.css → fullEditor-a0be62b3.css} +74 -62
  125. flowfile/web/static/assets/{genericNodeSettings-924759c7.css → genericNodeSettings-3b2507ea.css} +10 -10
  126. flowfile/web/static/assets/{genericNodeSettings-4fe5f36b.js → genericNodeSettings-99014e1d.js} +5 -5
  127. flowfile/web/static/assets/index-07dda503.js +38 -0
  128. flowfile/web/static/assets/index-3ba44389.js +2696 -0
  129. flowfile/web/static/assets/{index-50508d4d.css → index-e6289dd0.css} +1945 -569
  130. flowfile/web/static/assets/{index-5429bbf8.js → index-fb6493ae.js} +41626 -40867
  131. flowfile/web/static/assets/node.types-2c15bb7e.js +82 -0
  132. flowfile/web/static/assets/nodeInput-0eb13f1a.js +2 -0
  133. flowfile/web/static/assets/{outputCsv-076b85ab.js → outputCsv-8f8ba42d.js} +3 -3
  134. flowfile/web/static/assets/outputCsv-b9a072af.css +2499 -0
  135. flowfile/web/static/assets/{outputExcel-0fd17dbe.js → outputExcel-393f4fef.js} +3 -3
  136. flowfile/web/static/assets/{outputExcel-b41305c0.css → outputExcel-f5d272b2.css} +26 -26
  137. flowfile/web/static/assets/{outputParquet-b61e0847.js → outputParquet-07c81f65.js} +4 -4
  138. flowfile/web/static/assets/outputParquet-54597c3c.css +4 -0
  139. flowfile/web/static/assets/{readCsv-a8bb8b61.js → readCsv-07f6d9ad.js} +3 -3
  140. flowfile/web/static/assets/{readCsv-c767cb37.css → readCsv-3bfac4c3.css} +15 -15
  141. flowfile/web/static/assets/{readExcel-806d2826.css → readExcel-3db6b763.css} +13 -13
  142. flowfile/web/static/assets/{readExcel-67b4aee0.js → readExcel-ed69bc8f.js} +5 -5
  143. flowfile/web/static/assets/{readParquet-48c81530.css → readParquet-c5244ad5.css} +4 -4
  144. flowfile/web/static/assets/{readParquet-92ce1dbc.js → readParquet-e3ed4528.js} +3 -3
  145. flowfile/web/static/assets/secrets.api-002e7d7e.js +65 -0
  146. flowfile/web/static/assets/{selectDynamic-92e25ee3.js → selectDynamic-80b92899.js} +5 -5
  147. flowfile/web/static/assets/{selectDynamic-aa913ff4.css → selectDynamic-f2fb394f.css} +21 -20
  148. flowfile/web/static/assets/{vue-codemirror.esm-41b0e0d7.js → vue-codemirror.esm-0965f39f.js} +31 -640
  149. flowfile/web/static/assets/{vue-content-loader.es-2c8e608f.js → vue-content-loader.es-c506ad97.js} +1 -1
  150. flowfile/web/static/index.html +2 -2
  151. {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/METADATA +2 -3
  152. flowfile-0.5.3.dist-info/RECORD +402 -0
  153. flowfile_core/__init__.py +13 -6
  154. flowfile_core/auth/jwt.py +51 -16
  155. flowfile_core/auth/models.py +32 -7
  156. flowfile_core/auth/password.py +89 -0
  157. flowfile_core/auth/secrets.py +8 -6
  158. flowfile_core/configs/__init__.py +9 -7
  159. flowfile_core/configs/flow_logger.py +15 -14
  160. flowfile_core/configs/node_store/__init__.py +72 -4
  161. flowfile_core/configs/node_store/nodes.py +155 -172
  162. flowfile_core/configs/node_store/user_defined_node_registry.py +108 -27
  163. flowfile_core/configs/settings.py +28 -15
  164. flowfile_core/database/connection.py +7 -6
  165. flowfile_core/database/init_db.py +96 -2
  166. flowfile_core/database/models.py +3 -1
  167. flowfile_core/fileExplorer/__init__.py +17 -0
  168. flowfile_core/fileExplorer/funcs.py +123 -57
  169. flowfile_core/fileExplorer/utils.py +10 -11
  170. flowfile_core/flowfile/_extensions/real_time_interface.py +10 -8
  171. flowfile_core/flowfile/analytics/analytics_processor.py +26 -24
  172. flowfile_core/flowfile/analytics/graphic_walker.py +11 -12
  173. flowfile_core/flowfile/analytics/utils.py +1 -1
  174. flowfile_core/flowfile/code_generator/code_generator.py +358 -244
  175. flowfile_core/flowfile/connection_manager/_connection_manager.py +6 -5
  176. flowfile_core/flowfile/connection_manager/models.py +1 -1
  177. flowfile_core/flowfile/database_connection_manager/db_connections.py +60 -44
  178. flowfile_core/flowfile/database_connection_manager/models.py +1 -1
  179. flowfile_core/flowfile/extensions.py +17 -12
  180. flowfile_core/flowfile/flow_data_engine/cloud_storage_reader.py +34 -32
  181. flowfile_core/flowfile/flow_data_engine/create/funcs.py +115 -83
  182. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +481 -423
  183. flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +2 -2
  184. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +92 -52
  185. flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +12 -11
  186. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +6 -6
  187. flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +26 -30
  188. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +31 -20
  189. flowfile_core/flowfile/flow_data_engine/join/__init__.py +1 -1
  190. flowfile_core/flowfile/flow_data_engine/join/utils.py +11 -9
  191. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +14 -15
  192. flowfile_core/flowfile/flow_data_engine/pivot_table.py +5 -7
  193. flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +95 -82
  194. flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +66 -65
  195. flowfile_core/flowfile/flow_data_engine/sample_data.py +27 -21
  196. flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +1 -1
  197. flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +13 -11
  198. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +190 -127
  199. flowfile_core/flowfile/flow_data_engine/threaded_processes.py +8 -8
  200. flowfile_core/flowfile/flow_data_engine/utils.py +99 -67
  201. flowfile_core/flowfile/flow_graph.py +918 -571
  202. flowfile_core/flowfile/flow_graph_utils.py +31 -49
  203. flowfile_core/flowfile/flow_node/flow_node.py +330 -233
  204. flowfile_core/flowfile/flow_node/models.py +53 -41
  205. flowfile_core/flowfile/flow_node/schema_callback.py +14 -19
  206. flowfile_core/flowfile/graph_tree/graph_tree.py +41 -41
  207. flowfile_core/flowfile/handler.py +80 -30
  208. flowfile_core/flowfile/manage/compatibility_enhancements.py +209 -126
  209. flowfile_core/flowfile/manage/io_flowfile.py +54 -57
  210. flowfile_core/flowfile/node_designer/__init__.py +15 -13
  211. flowfile_core/flowfile/node_designer/_type_registry.py +34 -37
  212. flowfile_core/flowfile/node_designer/custom_node.py +162 -36
  213. flowfile_core/flowfile/node_designer/ui_components.py +135 -34
  214. flowfile_core/flowfile/schema_callbacks.py +71 -51
  215. flowfile_core/flowfile/setting_generator/__init__.py +0 -1
  216. flowfile_core/flowfile/setting_generator/setting_generator.py +6 -5
  217. flowfile_core/flowfile/setting_generator/settings.py +64 -53
  218. flowfile_core/flowfile/sources/external_sources/base_class.py +12 -10
  219. flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +27 -17
  220. flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +9 -9
  221. flowfile_core/flowfile/sources/external_sources/factory.py +0 -1
  222. flowfile_core/flowfile/sources/external_sources/sql_source/models.py +45 -31
  223. flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +198 -73
  224. flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +250 -196
  225. flowfile_core/flowfile/util/calculate_layout.py +9 -13
  226. flowfile_core/flowfile/util/execution_orderer.py +25 -17
  227. flowfile_core/flowfile/util/node_skipper.py +4 -4
  228. flowfile_core/flowfile/utils.py +19 -21
  229. flowfile_core/main.py +26 -19
  230. flowfile_core/routes/auth.py +284 -11
  231. flowfile_core/routes/cloud_connections.py +25 -25
  232. flowfile_core/routes/logs.py +21 -29
  233. flowfile_core/routes/public.py +3 -3
  234. flowfile_core/routes/routes.py +70 -34
  235. flowfile_core/routes/secrets.py +25 -27
  236. flowfile_core/routes/user_defined_components.py +483 -4
  237. flowfile_core/run_lock.py +0 -1
  238. flowfile_core/schemas/__init__.py +4 -6
  239. flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +55 -55
  240. flowfile_core/schemas/cloud_storage_schemas.py +59 -53
  241. flowfile_core/schemas/input_schema.py +231 -144
  242. flowfile_core/schemas/output_model.py +49 -34
  243. flowfile_core/schemas/schemas.py +116 -89
  244. flowfile_core/schemas/transform_schema.py +518 -263
  245. flowfile_core/schemas/yaml_types.py +21 -7
  246. flowfile_core/secret_manager/secret_manager.py +17 -13
  247. flowfile_core/types.py +29 -9
  248. flowfile_core/utils/arrow_reader.py +7 -6
  249. flowfile_core/utils/excel_file_manager.py +3 -3
  250. flowfile_core/utils/fileManager.py +7 -7
  251. flowfile_core/utils/fl_executor.py +8 -10
  252. flowfile_core/utils/utils.py +4 -4
  253. flowfile_core/utils/validate_setup.py +5 -4
  254. flowfile_frame/__init__.py +106 -51
  255. flowfile_frame/adapters.py +2 -9
  256. flowfile_frame/adding_expr.py +73 -32
  257. flowfile_frame/cloud_storage/frame_helpers.py +27 -23
  258. flowfile_frame/cloud_storage/secret_manager.py +12 -26
  259. flowfile_frame/config.py +2 -5
  260. flowfile_frame/expr.py +311 -218
  261. flowfile_frame/expr.pyi +160 -159
  262. flowfile_frame/expr_name.py +23 -23
  263. flowfile_frame/flow_frame.py +571 -476
  264. flowfile_frame/flow_frame.pyi +123 -104
  265. flowfile_frame/flow_frame_methods.py +227 -246
  266. flowfile_frame/group_frame.py +50 -20
  267. flowfile_frame/join.py +2 -2
  268. flowfile_frame/lazy.py +129 -87
  269. flowfile_frame/lazy_methods.py +83 -30
  270. flowfile_frame/list_name_space.py +55 -50
  271. flowfile_frame/selectors.py +148 -68
  272. flowfile_frame/series.py +9 -7
  273. flowfile_frame/utils.py +19 -21
  274. flowfile_worker/__init__.py +12 -7
  275. flowfile_worker/configs.py +11 -19
  276. flowfile_worker/create/__init__.py +14 -9
  277. flowfile_worker/create/funcs.py +114 -77
  278. flowfile_worker/create/models.py +46 -43
  279. flowfile_worker/create/pl_types.py +14 -15
  280. flowfile_worker/create/read_excel_tables.py +34 -41
  281. flowfile_worker/create/utils.py +22 -19
  282. flowfile_worker/external_sources/s3_source/main.py +18 -51
  283. flowfile_worker/external_sources/s3_source/models.py +34 -27
  284. flowfile_worker/external_sources/sql_source/main.py +8 -5
  285. flowfile_worker/external_sources/sql_source/models.py +13 -9
  286. flowfile_worker/flow_logger.py +10 -8
  287. flowfile_worker/funcs.py +214 -155
  288. flowfile_worker/main.py +11 -17
  289. flowfile_worker/models.py +35 -28
  290. flowfile_worker/process_manager.py +2 -3
  291. flowfile_worker/routes.py +121 -90
  292. flowfile_worker/secrets.py +9 -6
  293. flowfile_worker/spawner.py +80 -49
  294. flowfile_worker/utils.py +3 -2
  295. shared/__init__.py +2 -7
  296. shared/storage_config.py +25 -13
  297. test_utils/postgres/commands.py +3 -2
  298. test_utils/postgres/fixtures.py +9 -9
  299. test_utils/s3/commands.py +1 -1
  300. test_utils/s3/data_generator.py +3 -4
  301. test_utils/s3/demo_data_generator.py +4 -7
  302. test_utils/s3/fixtures.py +7 -5
  303. tools/migrate/__init__.py +1 -1
  304. tools/migrate/__main__.py +16 -29
  305. tools/migrate/legacy_schemas.py +251 -190
  306. tools/migrate/migrate.py +193 -181
  307. tools/migrate/tests/conftest.py +1 -3
  308. tools/migrate/tests/test_migrate.py +36 -41
  309. tools/migrate/tests/test_migration_e2e.py +28 -29
  310. tools/migrate/tests/test_node_migrations.py +50 -20
  311. flowfile/web/static/assets/CloudConnectionManager-2dfdce2f.css +0 -86
  312. flowfile/web/static/assets/CustomNode-74a37f74.css +0 -32
  313. flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -64
  314. flowfile/web/static/assets/Filter-9b6d08db.js +0 -164
  315. flowfile/web/static/assets/Filter-f62091b3.css +0 -20
  316. flowfile/web/static/assets/ManualInput-3246a08d.css +0 -96
  317. flowfile/web/static/assets/PivotValidation-891ddfb0.css +0 -13
  318. flowfile/web/static/assets/PivotValidation-c46cd420.css +0 -13
  319. flowfile/web/static/assets/SliderInput-b8fb6a8c.css +0 -4
  320. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +0 -13
  321. flowfile/web/static/assets/nodeInput-5d0d6b79.js +0 -41
  322. flowfile/web/static/assets/outputCsv-9cc59e0b.css +0 -2499
  323. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +0 -4
  324. flowfile/web/static/assets/secretApi-68435402.js +0 -46
  325. flowfile/web/static/assets/vue-codemirror-bccfde04.css +0 -32
  326. flowfile-0.5.1.dist-info/RECORD +0 -388
  327. {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/WHEEL +0 -0
  328. {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/entry_points.txt +0 -0
  329. {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,316 +1,291 @@
1
+ from flowfile_core.schemas.schemas import NodeDefault, NodeTemplate
1
2
 
2
- from typing import List, Dict
3
- from flowfile_core.schemas.schemas import NodeTemplate, NodeDefault
4
3
 
5
-
6
- def get_all_standard_nodes() -> tuple[List[NodeTemplate], Dict[str, NodeTemplate], Dict[str, NodeDefault]]:
4
+ def get_all_standard_nodes() -> tuple[list[NodeTemplate], dict[str, NodeTemplate], dict[str, NodeDefault]]:
7
5
  """
8
6
  Initializes and returns the complete list, dict, and defaults for all nodes.
9
- """
10
- nodes_list: List[NodeTemplate] = [
7
+ """
8
+ nodes_list: list[NodeTemplate] = [
11
9
  NodeTemplate(
12
- name='External source',
13
- item='external_source',
10
+ name="External source",
11
+ item="external_source",
14
12
  input=0,
15
13
  output=1,
16
- image='external_source.png',
14
+ image="external_source.png",
17
15
  node_type="input",
18
16
  transform_type="other",
19
- node_group='input',
17
+ node_group="input",
20
18
  prod_ready=False,
21
19
  drawer_title="External Source",
22
- drawer_intro="Connect to external data sources and APIs"
20
+ drawer_intro="Connect to external data sources and APIs",
23
21
  ),
24
-
25
22
  NodeTemplate(
26
- name='Manual input',
27
- item='manual_input',
23
+ name="Manual input",
24
+ item="manual_input",
28
25
  input=0,
29
26
  output=1,
30
27
  transform_type="other",
31
28
  node_type="input",
32
- image='manual_input.png',
33
- node_group='input',
29
+ image="manual_input.png",
30
+ node_group="input",
34
31
  drawer_title="Manual Input",
35
- drawer_intro="Create data directly"
32
+ drawer_intro="Create data directly",
36
33
  ),
37
-
38
34
  NodeTemplate(
39
- name='Read data',
40
- item='read',
35
+ name="Read data",
36
+ item="read",
41
37
  input=0,
42
38
  output=1,
43
39
  transform_type="other",
44
40
  node_type="input",
45
- image='input_data.png',
46
- node_group='input',
41
+ image="input_data.png",
42
+ node_group="input",
47
43
  drawer_title="Read Data",
48
- drawer_intro="Load data from CSV, Excel, or Parquet files"
44
+ drawer_intro="Load data from CSV, Excel, or Parquet files",
49
45
  ),
50
-
51
46
  NodeTemplate(
52
- name='Join',
53
- item='join',
47
+ name="Join",
48
+ item="join",
54
49
  input=2,
55
50
  output=1,
56
51
  transform_type="wide",
57
52
  node_type="process",
58
- image='join.png',
59
- node_group='combine',
53
+ image="join.png",
54
+ node_group="combine",
60
55
  drawer_title="Join Datasets",
61
- drawer_intro="Merge two datasets based on matching column values"
56
+ drawer_intro="Merge two datasets based on matching column values",
62
57
  ),
63
-
64
58
  NodeTemplate(
65
- name='Formula',
66
- item='formula',
59
+ name="Formula",
60
+ item="formula",
67
61
  input=1,
68
62
  output=1,
69
63
  transform_type="narrow",
70
64
  node_type="process",
71
- image='formula.png',
72
- node_group='transform',
65
+ image="formula.png",
66
+ node_group="transform",
73
67
  drawer_title="Formula Editor",
74
- drawer_intro="Create or modify columns using custom expressions"
68
+ drawer_intro="Create or modify columns using custom expressions",
75
69
  ),
76
-
77
70
  NodeTemplate(
78
- name='Write data',
79
- item='output',
71
+ name="Write data",
72
+ item="output",
80
73
  input=1,
81
74
  output=0,
82
75
  transform_type="other",
83
- image='output.png',
76
+ image="output.png",
84
77
  node_type="output",
85
- node_group='output',
78
+ node_group="output",
86
79
  drawer_title="Write Data",
87
- drawer_intro="Save your data as CSV, Excel, or Parquet files"
80
+ drawer_intro="Save your data as CSV, Excel, or Parquet files",
88
81
  ),
89
-
90
82
  NodeTemplate(
91
- name='Select data',
92
- item='select',
83
+ name="Select data",
84
+ item="select",
93
85
  input=1,
94
86
  output=1,
95
87
  transform_type="narrow",
96
88
  node_type="process",
97
- image='select.png',
98
- node_group='transform',
89
+ image="select.png",
90
+ node_group="transform",
99
91
  drawer_title="Select Columns",
100
- drawer_intro="Choose, rename, and reorder columns to keep"
92
+ drawer_intro="Choose, rename, and reorder columns to keep",
101
93
  ),
102
-
103
94
  NodeTemplate(
104
- name='Filter data',
105
- item='filter',
95
+ name="Filter data",
96
+ item="filter",
106
97
  input=1,
107
98
  output=1,
108
99
  transform_type="narrow",
109
100
  node_type="process",
110
- image='filter.png',
111
- node_group='transform',
101
+ image="filter.png",
102
+ node_group="transform",
112
103
  drawer_title="Filter Rows",
113
- drawer_intro="Keep only rows that match your conditions"
104
+ drawer_intro="Keep only rows that match your conditions",
114
105
  ),
115
-
116
106
  NodeTemplate(
117
- name='Group by',
118
- item='group_by',
107
+ name="Group by",
108
+ item="group_by",
119
109
  input=1,
120
110
  output=1,
121
111
  transform_type="wide",
122
112
  node_type="process",
123
- image='group_by.png',
124
- node_group='aggregate',
113
+ image="group_by.png",
114
+ node_group="aggregate",
125
115
  drawer_title="Group By",
126
- drawer_intro="Aggregate data by grouping and calculating statistics"
116
+ drawer_intro="Aggregate data by grouping and calculating statistics",
127
117
  ),
128
-
129
118
  NodeTemplate(
130
- name='Fuzzy match',
131
- item='fuzzy_match',
119
+ name="Fuzzy match",
120
+ item="fuzzy_match",
132
121
  input=2,
133
122
  output=1,
134
123
  transform_type="wide",
135
- image='fuzzy_match.png',
124
+ image="fuzzy_match.png",
136
125
  node_type="process",
137
- node_group='combine',
126
+ node_group="combine",
138
127
  drawer_title="Fuzzy Match",
139
- drawer_intro="Join datasets based on similar values instead of exact matches"
128
+ drawer_intro="Join datasets based on similar values instead of exact matches",
140
129
  ),
141
-
142
130
  NodeTemplate(
143
- name='Sort data',
144
- item='sort',
131
+ name="Sort data",
132
+ item="sort",
145
133
  input=1,
146
134
  output=1,
147
135
  transform_type="wide",
148
136
  node_type="process",
149
- image='sort.png',
150
- node_group='transform',
137
+ image="sort.png",
138
+ node_group="transform",
151
139
  drawer_title="Sort Data",
152
- drawer_intro="Order your data by one or more columns"
140
+ drawer_intro="Order your data by one or more columns",
153
141
  ),
154
-
155
142
  NodeTemplate(
156
- name='Add record Id',
157
- item='record_id',
143
+ name="Add record Id",
144
+ item="record_id",
158
145
  input=1,
159
146
  output=1,
160
147
  transform_type="wide",
161
148
  node_type="process",
162
- image='record_id.png',
163
- node_group='transform',
149
+ image="record_id.png",
150
+ node_group="transform",
164
151
  drawer_title="Add Record ID",
165
- drawer_intro="Generate unique identifiers for each row"
152
+ drawer_intro="Generate unique identifiers for each row",
166
153
  ),
167
-
168
154
  NodeTemplate(
169
- name='Take Sample',
170
- item='sample',
155
+ name="Take Sample",
156
+ item="sample",
171
157
  input=1,
172
158
  output=1,
173
159
  transform_type="narrow",
174
160
  node_type="process",
175
- image='sample.png',
176
- node_group='transform',
161
+ image="sample.png",
162
+ node_group="transform",
177
163
  drawer_title="Take Sample",
178
- drawer_intro="Work with a subset of your data"
164
+ drawer_intro="Work with a subset of your data",
179
165
  ),
180
-
181
166
  NodeTemplate(
182
- name='Explore data',
183
- item='explore_data',
167
+ name="Explore data",
168
+ item="explore_data",
184
169
  input=1,
185
170
  output=0,
186
171
  transform_type="other",
187
172
  node_type="output",
188
- image='explore_data.png',
189
- node_group='output',
173
+ image="explore_data.png",
174
+ node_group="output",
190
175
  drawer_title="Explore Data",
191
- drawer_intro="Interactive data exploration and analysis"
176
+ drawer_intro="Interactive data exploration and analysis",
192
177
  ),
193
-
194
178
  NodeTemplate(
195
- name='Pivot data',
196
- item='pivot',
179
+ name="Pivot data",
180
+ item="pivot",
197
181
  input=1,
198
182
  output=1,
199
183
  transform_type="wide",
200
- image='pivot.png',
184
+ image="pivot.png",
201
185
  node_type="process",
202
- node_group='aggregate',
186
+ node_group="aggregate",
203
187
  drawer_title="Pivot Data",
204
- drawer_intro="Convert data from long format to wide format"
188
+ drawer_intro="Convert data from long format to wide format",
205
189
  ),
206
-
207
190
  NodeTemplate(
208
- name='Unpivot data',
209
- item='unpivot',
191
+ name="Unpivot data",
192
+ item="unpivot",
210
193
  input=1,
211
194
  output=1,
212
195
  transform_type="wide",
213
196
  node_type="process",
214
- image='unpivot.png',
215
- node_group='aggregate',
197
+ image="unpivot.png",
198
+ node_group="aggregate",
216
199
  drawer_title="Unpivot Data",
217
- drawer_intro="Transform data from wide format to long format"
200
+ drawer_intro="Transform data from wide format to long format",
218
201
  ),
219
-
220
202
  NodeTemplate(
221
- name='Union data',
222
- item='union',
203
+ name="Union data",
204
+ item="union",
223
205
  input=10,
224
206
  output=1,
225
207
  transform_type="narrow",
226
208
  node_type="process",
227
- image='union.png',
209
+ image="union.png",
228
210
  multi=True,
229
- node_group='combine',
211
+ node_group="combine",
230
212
  drawer_title="Union Data",
231
- drawer_intro="Stack multiple datasets by combining rows"
213
+ drawer_intro="Stack multiple datasets by combining rows",
232
214
  ),
233
-
234
215
  NodeTemplate(
235
- name='Drop duplicates',
236
- item='unique',
216
+ name="Drop duplicates",
217
+ item="unique",
237
218
  input=1,
238
219
  output=1,
239
220
  transform_type="wide",
240
221
  node_type="process",
241
- image='unique.png',
242
- node_group='transform',
222
+ image="unique.png",
223
+ node_group="transform",
243
224
  drawer_title="Drop Duplicates",
244
- drawer_intro="Remove duplicate rows based on selected columns"
225
+ drawer_intro="Remove duplicate rows based on selected columns",
245
226
  ),
246
-
247
227
  NodeTemplate(
248
- name='Graph solver',
249
- item='graph_solver',
228
+ name="Graph solver",
229
+ item="graph_solver",
250
230
  input=1,
251
231
  output=1,
252
232
  transform_type="other",
253
233
  node_type="process",
254
- image='graph_solver.png',
255
- node_group='combine',
234
+ image="graph_solver.png",
235
+ node_group="combine",
256
236
  drawer_title="Graph Solver",
257
- drawer_intro="Group related records in graph-structured data"
237
+ drawer_intro="Group related records in graph-structured data",
258
238
  ),
259
-
260
239
  NodeTemplate(
261
- name='Count records',
262
- item='record_count',
240
+ name="Count records",
241
+ item="record_count",
263
242
  input=1,
264
243
  output=1,
265
244
  transform_type="wide",
266
245
  node_type="process",
267
- image='record_count.png',
268
- node_group='aggregate',
246
+ image="record_count.png",
247
+ node_group="aggregate",
269
248
  drawer_title="Count Records",
270
- drawer_intro="Calculate the total number of rows"
249
+ drawer_intro="Calculate the total number of rows",
271
250
  ),
272
-
273
251
  NodeTemplate(
274
- name='Cross join',
275
- item='cross_join',
252
+ name="Cross join",
253
+ item="cross_join",
276
254
  input=2,
277
255
  output=1,
278
256
  transform_type="wide",
279
257
  node_type="process",
280
- image='cross_join.png',
281
- node_group='combine',
258
+ image="cross_join.png",
259
+ node_group="combine",
282
260
  drawer_title="Cross Join",
283
- drawer_intro="Create all possible combinations between two datasets"
261
+ drawer_intro="Create all possible combinations between two datasets",
284
262
  ),
285
-
286
263
  NodeTemplate(
287
- name='Text to rows',
288
- item='text_to_rows',
264
+ name="Text to rows",
265
+ item="text_to_rows",
289
266
  input=1,
290
267
  output=1,
291
268
  transform_type="wide",
292
269
  node_type="process",
293
- image='text_to_rows.png',
294
- node_group='transform',
270
+ image="text_to_rows.png",
271
+ node_group="transform",
295
272
  drawer_title="Text to Rows",
296
- drawer_intro="Split text into multiple rows based on a delimiter"
273
+ drawer_intro="Split text into multiple rows based on a delimiter",
297
274
  ),
298
-
299
275
  NodeTemplate(
300
276
  name="Polars code",
301
277
  item="polars_code",
302
278
  input=10,
303
279
  output=1,
304
280
  transform_type="narrow",
305
- image='polars_code.png',
306
- node_group='transform',
281
+ image="polars_code.png",
282
+ node_group="transform",
307
283
  node_type="process",
308
284
  multi=True,
309
285
  can_be_start=True,
310
286
  drawer_title="Polars Code",
311
- drawer_intro="Write custom Polars DataFrame transformations"
287
+ drawer_intro="Write custom Polars DataFrame transformations",
312
288
  ),
313
-
314
289
  NodeTemplate(
315
290
  name="Read from Database",
316
291
  item="database_reader",
@@ -318,66 +293,74 @@ def get_all_standard_nodes() -> tuple[List[NodeTemplate], Dict[str, NodeTemplate
318
293
  output=1,
319
294
  node_type="input",
320
295
  transform_type="other",
321
- image='database_reader.svg',
322
- node_group='input',
296
+ image="database_reader.svg",
297
+ node_group="input",
323
298
  drawer_title="Database Reader",
324
- drawer_intro="Load data from database tables or queries"
299
+ drawer_intro="Load data from database tables or queries",
325
300
  ),
326
-
327
301
  NodeTemplate(
328
- name='Write to Database',
329
- item='database_writer',
302
+ name="Write to Database",
303
+ item="database_writer",
330
304
  input=1,
331
305
  output=0,
332
306
  transform_type="other",
333
307
  node_type="output",
334
- image='database_writer.svg',
335
- node_group='output',
308
+ image="database_writer.svg",
309
+ node_group="output",
336
310
  drawer_title="Database Writer",
337
- drawer_intro="Save data to database tables"
311
+ drawer_intro="Save data to database tables",
338
312
  ),
339
-
340
313
  NodeTemplate(
341
- name='Read from cloud provider',
342
- item='cloud_storage_reader',
314
+ name="Read from cloud provider",
315
+ item="cloud_storage_reader",
343
316
  input=0,
344
317
  output=1,
345
318
  transform_type="other",
346
319
  node_type="input",
347
- image='cloud_storage_reader.png',
348
- node_group='input',
320
+ image="cloud_storage_reader.png",
321
+ node_group="input",
349
322
  drawer_title="Cloud Storage Reader",
350
- drawer_intro="Read data from AWS S3 and other cloud storage"
323
+ drawer_intro="Read data from AWS S3 and other cloud storage",
351
324
  ),
352
-
353
325
  NodeTemplate(
354
- name='Write to cloud provider',
355
- item='cloud_storage_writer',
326
+ name="Write to cloud provider",
327
+ item="cloud_storage_writer",
356
328
  input=1,
357
329
  output=0,
358
330
  transform_type="other",
359
331
  node_type="output",
360
- image='cloud_storage_writer.png',
361
- node_group='output',
332
+ image="cloud_storage_writer.png",
333
+ node_group="output",
362
334
  drawer_title="Cloud Storage Writer",
363
- drawer_intro="Save data to AWS S3 and other cloud storage"
335
+ drawer_intro="Save data to AWS S3 and other cloud storage",
364
336
  ),
365
337
  ]
366
338
  nodes_list.sort(key=lambda x: x.name)
367
- nodes_with_defaults = {'sample', 'sort', 'union', 'select', 'record_count'}
339
+ nodes_with_defaults = {"sample", "sort", "union", "select", "record_count"}
368
340
 
369
341
  def check_if_has_default_setting(node_item: str):
370
-
371
342
  return node_item in nodes_with_defaults
372
343
 
373
- node_defaults = {node.item: NodeDefault(node_name=node.name,
374
- node_type=node.node_type,
375
- transform_type=node.transform_type,
376
- has_default_settings=check_if_has_default_setting(node.item)
377
- ) for node in nodes_list}
344
+ node_defaults = {
345
+ node.item: NodeDefault(
346
+ node_name=node.name,
347
+ node_type=node.node_type,
348
+ transform_type=node.transform_type,
349
+ has_default_settings=check_if_has_default_setting(node.item),
350
+ )
351
+ for node in nodes_list
352
+ }
378
353
  node_dict = {n.item: n for n in nodes_list}
379
354
 
380
- node_dict["polars_lazy_frame"] = NodeTemplate(name='LazyFrame node', item='polars_lazy_frame', input=0, output=1,
381
- node_group="special", image="", node_type="input", transform_type="other",)
355
+ node_dict["polars_lazy_frame"] = NodeTemplate(
356
+ name="LazyFrame node",
357
+ item="polars_lazy_frame",
358
+ input=0,
359
+ output=1,
360
+ node_group="special",
361
+ image="",
362
+ node_type="input",
363
+ transform_type="other",
364
+ )
382
365
 
383
366
  return nodes_list, node_dict, node_defaults