Flowfile 0.3.7__tar.gz → 0.3.8__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 (319) hide show
  1. {flowfile-0.3.7 → flowfile-0.3.8}/PKG-INFO +1 -1
  2. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/__init__.py +1 -1
  3. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/api.py +4 -2
  4. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/__init__.py +2 -0
  5. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/configs/utils.py +5 -0
  6. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/database/connection.py +1 -3
  7. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/cloud_storage_reader.py +0 -1
  8. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +1 -1
  9. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_graph.py +4 -4
  10. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_node/flow_node.py +16 -6
  11. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/utils/arrow_reader.py +8 -3
  12. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/utils/validate_setup.py +0 -2
  13. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/expr.py +14 -0
  14. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/flow_frame.py +1 -1
  15. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/flow_frame.pyi +3 -6
  16. {flowfile-0.3.7 → flowfile-0.3.8}/pyproject.toml +1 -1
  17. {flowfile-0.3.7 → flowfile-0.3.8}/LICENSE +0 -0
  18. {flowfile-0.3.7 → flowfile-0.3.8}/build_backends/build_backends/__init__.py +0 -0
  19. {flowfile-0.3.7 → flowfile-0.3.8}/build_backends/build_backends/main.py +0 -0
  20. {flowfile-0.3.7 → flowfile-0.3.8}/build_backends/build_backends/main_prd.py +0 -0
  21. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/__main__.py +0 -0
  22. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CloudConnectionManager-2dfdce2f.css +0 -0
  23. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CloudConnectionManager-c20a740f.js +0 -0
  24. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CloudStorageReader-29d14fcc.css +0 -0
  25. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CloudStorageReader-960b400a.js +0 -0
  26. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CloudStorageWriter-49c9a4b2.css +0 -0
  27. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CloudStorageWriter-e3decbdd.js +0 -0
  28. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CrossJoin-41efa4cb.css +0 -0
  29. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/CrossJoin-d67e2405.js +0 -0
  30. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseConnectionSettings-0c04b2e5.css +0 -0
  31. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseConnectionSettings-a81e0f7e.js +0 -0
  32. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -0
  33. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseManager-9ea35e84.js +0 -0
  34. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseReader-9578bfa5.js +0 -0
  35. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseReader-f50c6558.css +0 -0
  36. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseWriter-19531098.js +0 -0
  37. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/DatabaseWriter-2f570e53.css +0 -0
  38. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/ExploreData-40476474.js +0 -0
  39. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/ExploreData-5bdae813.css +0 -0
  40. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/ExternalSource-2297ef96.js +0 -0
  41. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/ExternalSource-e37b6275.css +0 -0
  42. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Filter-a9d08ba1.css +0 -0
  43. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Filter-f211c03a.js +0 -0
  44. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Formula-29f19d21.css +0 -0
  45. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Formula-4207ea31.js +0 -0
  46. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/FuzzyMatch-6857de82.css +0 -0
  47. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/FuzzyMatch-bf120df0.js +0 -0
  48. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -0
  49. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/GraphSolver-5bb7497a.js +0 -0
  50. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/GroupBy-92c81b65.js +0 -0
  51. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/GroupBy-ab1ea74b.css +0 -0
  52. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Join-4e49a274.js +0 -0
  53. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Join-f45eff22.css +0 -0
  54. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/ManualInput-90998ae8.js +0 -0
  55. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/ManualInput-a71b52c6.css +0 -0
  56. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Output-48f81019.css +0 -0
  57. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Output-81e3e917.js +0 -0
  58. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Pivot-a3419842.js +0 -0
  59. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Pivot-f415e85f.css +0 -0
  60. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/PolarsCode-650322d1.css +0 -0
  61. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/PolarsCode-72710deb.js +0 -0
  62. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Read-80dc1675.css +0 -0
  63. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Read-c4059daf.js +0 -0
  64. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/RecordCount-c2b5e095.js +0 -0
  65. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/RecordId-10baf191.js +0 -0
  66. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Sample-3ed9a0ae.js +0 -0
  67. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/SecretManager-0d49c0e8.js +0 -0
  68. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Select-8a02a0b3.js +0 -0
  69. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/SettingsSection-4c0f45f5.js +0 -0
  70. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/SettingsSection-9c836ecc.css +0 -0
  71. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Sort-7ccfa0fe.css +0 -0
  72. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Sort-f55c9f9d.js +0 -0
  73. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/TextToRows-5dbc2145.js +0 -0
  74. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/TextToRows-c92d1ec2.css +0 -0
  75. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/UnavailableFields-5edd5322.css +0 -0
  76. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/UnavailableFields-a1768e52.js +0 -0
  77. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Union-8d9ac7f9.css +0 -0
  78. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Union-f2aefdc9.js +0 -0
  79. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Unique-46b250da.js +0 -0
  80. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Unique-b5615727.css +0 -0
  81. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -0
  82. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/Unpivot-25ac84cc.js +0 -0
  83. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/airbyte-292aa232.png +0 -0
  84. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/api-6ef0dcef.js +0 -0
  85. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/api-a0abbdc7.js +0 -0
  86. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/cloud_storage_reader-aa1415d6.png +0 -0
  87. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/cross_join-d30c0290.png +0 -0
  88. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/database_reader-ce1e55f3.svg +0 -0
  89. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/database_writer-b4ad0753.svg +0 -0
  90. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/designer-13eabd83.js +0 -0
  91. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/designer-186f2e71.css +0 -0
  92. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/documentation-12216a74.css +0 -0
  93. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/documentation-b87e7f6f.js +0 -0
  94. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/dropDown-13564764.js +0 -0
  95. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/dropDown-35135ba8.css +0 -0
  96. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/element-icons-9c88a535.woff +0 -0
  97. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/element-icons-de5eb258.ttf +0 -0
  98. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/explore_data-8a0a2861.png +0 -0
  99. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-brands-400-808443ae.ttf +0 -0
  100. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-brands-400-d7236a19.woff2 +0 -0
  101. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-regular-400-54cf6086.ttf +0 -0
  102. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-regular-400-e3456d12.woff2 +0 -0
  103. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-solid-900-aa759986.woff2 +0 -0
  104. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-solid-900-d2f05935.ttf +0 -0
  105. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-v4compatibility-0ce9033c.woff2 +0 -0
  106. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fa-v4compatibility-30f6abf6.ttf +0 -0
  107. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/filter-d7708bda.png +0 -0
  108. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/formula-eeeb1611.png +0 -0
  109. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fullEditor-178376bb.css +0 -0
  110. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fullEditor-fd2cd6f9.js +0 -0
  111. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/fuzzy_match-40c161b2.png +0 -0
  112. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/genericNodeSettings-71e11604.js +0 -0
  113. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/genericNodeSettings-924759c7.css +0 -0
  114. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/graph_solver-8b7888b8.png +0 -0
  115. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/group_by-80561fc3.png +0 -0
  116. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/index-681a3ed0.css +0 -0
  117. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/index-f6c15e76.js +0 -0
  118. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/input_data-ab2eb678.png +0 -0
  119. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/join-349043ae.png +0 -0
  120. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/manual_input-ae98f31d.png +0 -0
  121. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/nodeTitle-988d9efe.js +0 -0
  122. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -0
  123. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/old_join-5d0eb604.png +0 -0
  124. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/output-06ec0371.png +0 -0
  125. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/pivot-9660df51.png +0 -0
  126. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/polars_code-05ce5dc6.png +0 -0
  127. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/record_count-dab44eb5.png +0 -0
  128. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/record_id-0b15856b.png +0 -0
  129. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/sample-693a88b5.png +0 -0
  130. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/secretApi-dd636aa2.js +0 -0
  131. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/select-b0d0437a.png +0 -0
  132. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/selectDynamic-af36165e.js +0 -0
  133. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/selectDynamic-b062bc9b.css +0 -0
  134. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/sort-2aa579f0.png +0 -0
  135. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/summarize-2a099231.png +0 -0
  136. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/text_to_rows-859b29ea.png +0 -0
  137. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/union-2d8609f4.png +0 -0
  138. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/unique-1958b98a.png +0 -0
  139. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/unpivot-d3cb4b5b.png +0 -0
  140. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/view-7a0f0be1.png +0 -0
  141. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/vue-codemirror-bccfde04.css +0 -0
  142. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/vue-codemirror.esm-2847001e.js +0 -0
  143. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/assets/vue-content-loader.es-0371da73.js +0 -0
  144. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/favicon.ico +0 -0
  145. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/flowfile.svg +0 -0
  146. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/icons/flowfile.png +0 -0
  147. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/images/airbyte.png +0 -0
  148. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/images/flowfile.svg +0 -0
  149. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/images/google.svg +0 -0
  150. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/images/sheets.png +0 -0
  151. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/index.html +0 -0
  152. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/vite.svg +0 -0
  153. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile/flowfile/web/static/vue.svg +0 -0
  154. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/__init__.py +0 -0
  155. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/auth/__init__.py +0 -0
  156. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/auth/jwt.py +0 -0
  157. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/auth/models.py +0 -0
  158. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/auth/secrets.py +0 -0
  159. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/configs/__init__.py +0 -0
  160. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/configs/flow_logger.py +0 -0
  161. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/configs/node_store/__init__.py +0 -0
  162. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/configs/node_store/nodes.py +0 -0
  163. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/configs/settings.py +0 -0
  164. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/database/__init__.py +0 -0
  165. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/database/init_db.py +0 -0
  166. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/database/models.py +0 -0
  167. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/fileExplorer/__init__.py +0 -0
  168. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/fileExplorer/funcs.py +0 -0
  169. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/fileExplorer/utils.py +0 -0
  170. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/__init__.py +0 -0
  171. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/_extensions/__init__.py +0 -0
  172. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/_extensions/real_time_interface.py +0 -0
  173. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/analytics/__init__.py +0 -0
  174. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/analytics/analytics_processor.py +0 -0
  175. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/analytics/graphic_walker.py +0 -0
  176. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/analytics/schemas/__init__.py +0 -0
  177. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/analytics/utils.py +0 -0
  178. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/code_generator/__init__.py +0 -0
  179. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/code_generator/code_generator.py +0 -0
  180. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/connection_manager/__init__.py +0 -0
  181. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/connection_manager/_connection_manager.py +0 -0
  182. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/connection_manager/models.py +0 -0
  183. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/database_connection_manager/__init__.py +0 -0
  184. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/database_connection_manager/db_connections.py +0 -0
  185. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/database_connection_manager/models.py +0 -0
  186. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/extensions.py +0 -0
  187. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/__init__.py +0 -0
  188. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/__init__.py +0 -0
  189. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/create/funcs.py +0 -0
  190. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/__init__.py +0 -0
  191. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +0 -0
  192. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +0 -0
  193. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +0 -0
  194. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/__init__.py +0 -0
  195. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +0 -0
  196. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/fuzzy_matching/settings_validator.py +0 -0
  197. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/__init__.py +0 -0
  198. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/utils.py +0 -0
  199. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +0 -0
  200. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/pivot_table.py +0 -0
  201. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +0 -0
  202. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +0 -0
  203. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/sample_data.py +0 -0
  204. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +0 -0
  205. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +0 -0
  206. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +0 -0
  207. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/threaded_processes.py +0 -0
  208. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/types.py +0 -0
  209. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_data_engine/utils.py +0 -0
  210. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_graph_utils.py +0 -0
  211. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_node/__init__.py +0 -0
  212. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_node/models.py +0 -0
  213. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/flow_node/schema_callback.py +0 -0
  214. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/handler.py +0 -0
  215. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/manage/__init__.py +0 -0
  216. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/manage/compatibility_enhancements.py +0 -0
  217. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/manage/manage_flowfile.py +0 -0
  218. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/manage/open_flowfile.py +0 -0
  219. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/setting_generator/__init__.py +0 -0
  220. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/setting_generator/setting_generator.py +0 -0
  221. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/setting_generator/settings.py +0 -0
  222. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/__init__.py +0 -0
  223. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/__init__.py +0 -0
  224. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/base_class.py +0 -0
  225. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/__init__.py +0 -0
  226. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/exchange_rate.py +0 -0
  227. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +0 -0
  228. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +0 -0
  229. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/factory.py +0 -0
  230. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/__init__.py +0 -0
  231. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/models.py +0 -0
  232. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +0 -0
  233. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +0 -0
  234. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/util/__init__.py +0 -0
  235. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/util/calculate_layout.py +0 -0
  236. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/util/execution_orderer.py +0 -0
  237. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/flowfile/utils.py +0 -0
  238. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/main.py +0 -0
  239. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/routes/__init__.py +0 -0
  240. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/routes/auth.py +0 -0
  241. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/routes/cloud_connections.py +0 -0
  242. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/routes/logs.py +0 -0
  243. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/routes/public.py +0 -0
  244. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/routes/routes.py +0 -0
  245. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/routes/secrets.py +0 -0
  246. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/run_lock.py +0 -0
  247. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/__init__.py +0 -0
  248. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/analysis_schemas/__init__.py +0 -0
  249. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +0 -0
  250. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/cloud_storage_schemas.py +0 -0
  251. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/input_schema.py +0 -0
  252. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/output_model.py +0 -0
  253. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/schemas.py +0 -0
  254. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/schemas/transform_schema.py +0 -0
  255. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/secret_manager/__init__.py +0 -0
  256. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/secret_manager/secret_manager.py +0 -0
  257. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/utils/__init__.py +0 -0
  258. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/utils/excel_file_manager.py +0 -0
  259. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/utils/fileManager.py +0 -0
  260. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/utils/fl_executor.py +0 -0
  261. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_core/flowfile_core/utils/utils.py +0 -0
  262. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/__init__.py +0 -0
  263. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/adapters.py +0 -0
  264. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/adding_expr.py +0 -0
  265. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/cloud_storage/__init__.py +0 -0
  266. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/cloud_storage/frame_helpers.py +0 -0
  267. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/cloud_storage/secret_manager.py +0 -0
  268. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/config.py +0 -0
  269. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/expr.pyi +0 -0
  270. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/expr_name.py +0 -0
  271. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/flow_frame_methods.py +0 -0
  272. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/group_frame.py +0 -0
  273. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/join.py +0 -0
  274. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/lazy.py +0 -0
  275. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/lazy_methods.py +0 -0
  276. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/list_name_space.py +0 -0
  277. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/selectors.py +0 -0
  278. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/series.py +0 -0
  279. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_frame/flowfile_frame/utils.py +0 -0
  280. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/__init__.py +0 -0
  281. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/configs.py +0 -0
  282. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/create/__init__.py +0 -0
  283. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/create/funcs.py +0 -0
  284. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/create/models.py +0 -0
  285. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/create/pl_types.py +0 -0
  286. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/create/read_excel_tables.py +0 -0
  287. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/create/utils.py +0 -0
  288. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/external_sources/__init__.py +0 -0
  289. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/external_sources/s3_source/__init__.py +0 -0
  290. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/external_sources/s3_source/main.py +0 -0
  291. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/external_sources/s3_source/models.py +0 -0
  292. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/external_sources/sql_source/__init__.py +0 -0
  293. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/external_sources/sql_source/main.py +0 -0
  294. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/external_sources/sql_source/models.py +0 -0
  295. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/flow_logger.py +0 -0
  296. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/funcs.py +0 -0
  297. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/main.py +0 -0
  298. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/models.py +0 -0
  299. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/polars_fuzzy_match/__init__.py +0 -0
  300. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/polars_fuzzy_match/matcher.py +0 -0
  301. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/polars_fuzzy_match/models.py +0 -0
  302. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/polars_fuzzy_match/pre_process.py +0 -0
  303. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/polars_fuzzy_match/process.py +0 -0
  304. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/polars_fuzzy_match/utils.py +0 -0
  305. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/process_manager.py +0 -0
  306. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/routes.py +0 -0
  307. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/secrets.py +0 -0
  308. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/spawner.py +0 -0
  309. {flowfile-0.3.7 → flowfile-0.3.8}/flowfile_worker/flowfile_worker/utils.py +0 -0
  310. {flowfile-0.3.7 → flowfile-0.3.8}/readme-pypi.md +0 -0
  311. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/__init__.py +0 -0
  312. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/postgres/__init__.py +0 -0
  313. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/postgres/commands.py +0 -0
  314. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/postgres/fixtures.py +0 -0
  315. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/s3/__init__.py +0 -0
  316. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/s3/commands.py +0 -0
  317. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/s3/data_generator.py +0 -0
  318. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/s3/demo_data_generator.py +0 -0
  319. {flowfile-0.3.7 → flowfile-0.3.8}/test_utils/s3/fixtures.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: Flowfile
3
- Version: 0.3.7
3
+ Version: 0.3.8
4
4
  Summary: Project combining flowfile core (backend) and flowfile_worker (compute offloader) and flowfile_frame (api)
5
5
  Author: Edward van Eechoud
6
6
  Author-email: evaneechoud@gmail.com
@@ -7,7 +7,7 @@ This package ties together the FlowFile ecosystem components:
7
7
  - flowfile_worker: Computation engine
8
8
  """
9
9
 
10
- __version__ = "0.3.7"
10
+ __version__ = "0.3.8"
11
11
 
12
12
  import os
13
13
  import logging
@@ -206,7 +206,7 @@ def check_if_in_single_mode() -> bool:
206
206
  try:
207
207
  response: requests.Response = requests.get(f"{FLOWFILE_BASE_URL}/single_mode", timeout=1)
208
208
  if response.ok:
209
- return response.json() == "1"
209
+ return response.json()
210
210
  except Exception:
211
211
  pass
212
212
  return False
@@ -400,6 +400,8 @@ def _open_flow_in_browser(flow_id: int) -> None:
400
400
  logger.info(f"Unified mode detected. Opening imported flow in browser: {flow_url}")
401
401
  try:
402
402
  time.sleep(0.5)
403
+ logger.info("Attempting to open browser tab for flow...")
404
+ logger.info("Opening URL in browser: %s", flow_url)
403
405
  webbrowser.open_new_tab(flow_url)
404
406
  except Exception as wb_err:
405
407
  logger.warning(f"Could not automatically open browser tab: {wb_err}")
@@ -452,7 +454,7 @@ def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str]
452
454
  return False
453
455
 
454
456
  flow_id = import_flow_to_editor(flow_file_path, auth_token)
455
-
457
+ print(flow_id, "flow_id", flow_in_single_mode, automatically_open_browser)
456
458
  if flow_id is not None:
457
459
  if flow_in_single_mode and automatically_open_browser:
458
460
  _open_flow_in_browser(flow_id)
@@ -51,6 +51,8 @@ def extend_app(app: FastAPI):
51
51
 
52
52
  @app.get("/single_mode")
53
53
  async def in_single_mode() -> bool:
54
+ print("Checking if single file mode is enabled")
55
+ print(os.environ.get('FLOWFILE_SINGLE_FILE_MODE'))
54
56
  return os.environ.get('FLOWFILE_SINGLE_FILE_MODE', "0") == "1"
55
57
 
56
58
  @app.get("/ui", include_in_schema=False)
@@ -16,3 +16,8 @@ class MutableBool:
16
16
  elif isinstance(other, MutableBool):
17
17
  return self.value == other.value
18
18
  return NotImplemented
19
+
20
+ def set(self, value):
21
+ """Set the value of the MutableBool"""
22
+ self.value = bool(value)
23
+ return self
@@ -26,8 +26,6 @@ def get_app_data_dir() -> Path:
26
26
  base_dir = os.path.join(os.path.expanduser("~"), ".local", "share")
27
27
 
28
28
  app_dir = Path(base_dir) / app_name
29
-
30
- print(f"Using application data directory: {app_dir}")
31
29
  app_dir.mkdir(parents=True, exist_ok=True)
32
30
 
33
31
  return app_dir
@@ -48,7 +46,7 @@ def get_database_url():
48
46
  app_dir = get_app_data_dir()
49
47
 
50
48
  db_path = app_dir / "flowfile.db"
51
- logger.info(f"Using database URL: sqlite:///{db_path}")
49
+ logger.debug(f"Using database URL: sqlite:///{db_path}")
52
50
  return f"sqlite:///{db_path}"
53
51
 
54
52
 
@@ -68,7 +68,6 @@ class CloudStorageReader:
68
68
  def _get_s3_storage_options(connection: 'FullCloudStorageConnection') -> Dict[str, Any]:
69
69
  """Build S3-specific storage options."""
70
70
  auth_method = connection.auth_method
71
- print(f"Building S3 storage options for auth_method: '{auth_method}'")
72
71
  if auth_method == "aws-cli":
73
72
  return create_storage_options_from_boto_credentials(
74
73
  profile_name=connection.connection_name,
@@ -1956,7 +1956,7 @@ class FlowDataEngine:
1956
1956
  """
1957
1957
  if self.is_future and not self.is_collected:
1958
1958
  return -1
1959
- calculate_in_worker_process = False if not OFFLOAD_TO_WORKER.value else calculate_in_worker_process
1959
+ calculate_in_worker_process = False if not OFFLOAD_TO_WORKER else calculate_in_worker_process
1960
1960
  if self.number_of_records is None or self.number_of_records < 0 or force_calculate:
1961
1961
  if self._number_of_records_callback is not None:
1962
1962
  self._number_of_records_callback(self)
@@ -300,8 +300,6 @@ class FlowGraph:
300
300
 
301
301
  return print(tree)
302
302
 
303
-
304
-
305
303
  def apply_layout(self, y_spacing: int = 150, x_spacing: int = 200, initial_y: int = 100):
306
304
  """Calculates and applies a layered layout to all nodes in the graph.
307
305
 
@@ -490,7 +488,8 @@ class FlowGraph:
490
488
  node_id=node.node_id,
491
489
  flow_id=self.flow_id,
492
490
  )
493
- node.results.analysis_data_generator = get_read_top_n(external_sampler.status.file_ref)
491
+ node.results.analysis_data_generator = get_read_top_n(external_sampler.status.file_ref,
492
+ n=min(sample_size, number_of_records))
494
493
  return flowfile_table
495
494
 
496
495
  def schema_callback():
@@ -1581,12 +1580,13 @@ class FlowGraph:
1581
1580
  execution_order = determine_execution_order(all_nodes=[node for node in self.nodes if
1582
1581
  node not in skip_nodes],
1583
1582
  flow_starts=self._flow_starts+self.get_implicit_starter_nodes())
1584
-
1585
1583
  skip_node_message(self.flow_logger, skip_nodes)
1586
1584
  execution_order_message(self.flow_logger, execution_order)
1587
1585
  performance_mode = self.flow_settings.execution_mode == 'Performance'
1588
1586
  if self.flow_settings.execution_location == 'local':
1589
1587
  OFFLOAD_TO_WORKER.value = False
1588
+ elif self.flow_settings.execution_location == 'remote':
1589
+ OFFLOAD_TO_WORKER.value = True
1590
1590
  for node in execution_order:
1591
1591
  node_logger = self.flow_logger.get_node_logger(node.node_id)
1592
1592
  if self.flow_settings.is_canceled:
@@ -5,7 +5,7 @@ from flowfile_core.flowfile.flow_data_engine.flow_data_engine import FlowDataEng
5
5
  from flowfile_core.utils.arrow_reader import get_read_top_n
6
6
  from flowfile_core.schemas import input_schema, schemas
7
7
  from flowfile_core.configs.flow_logger import NodeLogger
8
- from flowfile_core.configs.settings import SINGLE_FILE_MODE
8
+ from flowfile_core.configs.settings import SINGLE_FILE_MODE, OFFLOAD_TO_WORKER
9
9
 
10
10
  from flowfile_core.schemas.output_model import TableExample, FileColumn, NodeData
11
11
  from flowfile_core.flowfile.utils import get_hash
@@ -724,9 +724,19 @@ class FlowNode:
724
724
  Raises:
725
725
  Exception: Propagates exceptions from the execution.
726
726
  """
727
- if self.results.resulting_data is None and not performance_mode:
728
- self.results.resulting_data = self.get_resulting_data()
729
- self.results.example_data_generator = lambda: self.get_resulting_data().get_sample(100).to_arrow()
727
+ def example_data_generator():
728
+ example_data = None
729
+
730
+ def get_example_data():
731
+ nonlocal example_data
732
+ if example_data is None:
733
+ example_data = resulting_data.get_sample(100).to_arrow()
734
+ return example_data
735
+ return get_example_data
736
+ resulting_data = self.get_resulting_data()
737
+
738
+ if not performance_mode:
739
+ self.results.example_data_generator = example_data_generator()
730
740
  self.node_schema.result_schema = self.results.resulting_data.schema
731
741
  self.node_stats.has_completed_last_run = True
732
742
 
@@ -899,8 +909,8 @@ class FlowNode:
899
909
  else:
900
910
  self.results.errors = str(e)
901
911
  node_logger.error(f'Error with running the node: {e}')
902
- elif ((run_location == 'local' or SINGLE_FILE_MODE) and (not self.node_stats.has_run_with_current_setup
903
- or self.node_template.node_group == "output")):
912
+ elif ((run_location == 'local' or SINGLE_FILE_MODE) and
913
+ (not self.node_stats.has_run_with_current_setup or self.node_template.node_group == "output")):
904
914
  try:
905
915
  node_logger.info('Executing fully locally')
906
916
  self.execute_full_local(performance_mode)
@@ -138,11 +138,16 @@ def collect_batches(reader: pa.ipc.RecordBatchFileReader, n: int) -> Tuple[List[
138
138
  rows_collected = 0
139
139
 
140
140
  for batch in iter_batches(reader, n, rows_collected):
141
- batches.append(batch)
141
+
142
142
  rows_collected += batch.num_rows
143
143
  logger.debug(f"Collected batch: total rows now {rows_collected}")
144
144
  if rows_collected >= n:
145
+ if rows_collected > n:
146
+ batches.append(batch.slice(0, n - (rows_collected - batch.num_rows)))
147
+ else:
148
+ batches.append(batch)
145
149
  break
150
+ batches.append(batch)
146
151
 
147
152
  logger.info(f"Finished collecting {len(batches)} batches with {rows_collected} total rows")
148
153
  return batches, rows_collected
@@ -217,7 +222,7 @@ def read_top_n(file_path: str, n: int = 1000, strict: bool = False) -> pa.Table:
217
222
 
218
223
  table = pa.Table.from_batches(batches) # type: ignore
219
224
  logger.info(f"Successfully read {rows_collected} rows from {file_path}")
220
- return table
225
+ return table
221
226
 
222
227
 
223
228
  def get_read_top_n(file_path: str, n: int = 1000, strict: bool = False) -> Callable[[], pa.Table]:
@@ -244,4 +249,4 @@ def get_read_top_n(file_path: str, n: int = 1000, strict: bool = False) -> Calla
244
249
  >>> table = reader_func()
245
250
  """
246
251
  logger.info(f"Creating reader function for {file_path} with n={n}, strict={strict}")
247
- return lambda: read_top_n(file_path, n, strict)
252
+ return lambda: read_top_n(file_path, n, strict)
@@ -34,8 +34,6 @@ def validate_setup():
34
34
  check_if_node_has_add_function_in_flow_graph(node)
35
35
  check_if_node_has_input_schema_definition(node)
36
36
 
37
- print("All nodes have corresponding functions in FlowGraph and input schema definitions.")
38
-
39
37
 
40
38
  if __name__ == "__main__":
41
39
  validate_setup()
@@ -490,6 +490,20 @@ class Expr:
490
490
  result.agg_func = "sum"
491
491
  return result
492
492
 
493
+ def unique_counts(self):
494
+ """
495
+ Return the number of unique values in the column.
496
+
497
+ Returns
498
+ -------
499
+ Expr
500
+ A new expression with the unique counts
501
+ """
502
+ result_expr = self.expr.unique_counts() if self.expr is not None else None
503
+ result = self._create_next_expr(method_name="unique_counts", result_expr=result_expr, is_complex=self.is_complex)
504
+ result.agg_func = "unique_counts"
505
+ return result
506
+
493
507
  def implode(self):
494
508
  result_expr = self.expr.implode() if self.expr is not None else None
495
509
  result = self._create_next_expr(method_name="implode", result_expr=result_expr, is_complex=self.is_complex)
@@ -565,7 +565,7 @@ class FlowFrame:
565
565
  coalesce: bool = None,
566
566
  maintain_order: Literal[None, "left", "right", "left_right", "right_left"] = None,
567
567
  description: str = None,
568
- ):
568
+ ) -> "FlowFrame":
569
569
  """
570
570
  Add a join operation to the Logical Plan.
571
571
 
@@ -80,8 +80,8 @@ class FlowFrame:
80
80
 
81
81
  def __ne__(self, other: object) -> typing.NoReturn: ...
82
82
 
83
- # Create and configure a new FlowFrame instance, mimicking Polars' flexible constructor.
84
- def __new__(cls, data: typing.Union[LazyFrame, collections.abc.Mapping[str, typing.Union[collections.abc.Sequence[object], collections.abc.Mapping[str, collections.abc.Sequence[object]], ForwardRef('Series')]], collections.abc.Sequence[typing.Any], ForwardRef('np.ndarray[Any, Any]'), ForwardRef('pa.Table'), ForwardRef('pd.DataFrame'), ForwardRef('ArrowArrayExportable'), ForwardRef('ArrowStreamExportable'), ForwardRef('torch.Tensor')] = None, schema: typing.Union[collections.abc.Mapping[str, typing.Union[ForwardRef('DataTypeClass'), ForwardRef('DataType'), type[int], type[float], type[bool], type[str], type['date'], type['time'], type['datetime'], type['timedelta'], type[list[typing.Any]], type[tuple[typing.Any, ...]], type[bytes], type[object], type['Decimal'], type[None], NoneType]], collections.abc.Sequence[typing.Union[str, tuple[str, typing.Union[ForwardRef('DataTypeClass'), ForwardRef('DataType'), type[int], type[float], type[bool], type[str], type['date'], type['time'], type['datetime'], type['timedelta'], type[list[typing.Any]], type[tuple[typing.Any, ...]], type[bytes], type[object], type['Decimal'], type[None], NoneType]]]], NoneType] = None, schema_overrides: collections.abc.Mapping[str, typing.Union[ForwardRef('DataTypeClass'), ForwardRef('DataType')]] | None = None, strict: bool = True, orient: typing.Optional[typing.Literal['col', 'row']] = None, infer_schema_length: int | None = 100, nan_to_null: bool = False, flow_graph: typing.Optional[flowfile_core.flowfile.flow_graph.FlowGraph] = None, node_id: typing.Optional[int] = None, parent_node_id: typing.Optional[int] = None, override_initial: bool = False) -> Self: ...
83
+ # Unified constructor for FlowFrame.
84
+ def __new__(cls, data: typing.Union[LazyFrame, collections.abc.Mapping[str, typing.Union[collections.abc.Sequence[object], collections.abc.Mapping[str, collections.abc.Sequence[object]], ForwardRef('Series')]], collections.abc.Sequence[typing.Any], ForwardRef('np.ndarray[Any, Any]'), ForwardRef('pa.Table'), ForwardRef('pd.DataFrame'), ForwardRef('ArrowArrayExportable'), ForwardRef('ArrowStreamExportable'), ForwardRef('torch.Tensor')] = None, schema: typing.Union[collections.abc.Mapping[str, typing.Union[ForwardRef('DataTypeClass'), ForwardRef('DataType'), type[int], type[float], type[bool], type[str], type['date'], type['time'], type['datetime'], type['timedelta'], type[list[typing.Any]], type[tuple[typing.Any, ...]], type[bytes], type[object], type['Decimal'], type[None], NoneType]], collections.abc.Sequence[typing.Union[str, tuple[str, typing.Union[ForwardRef('DataTypeClass'), ForwardRef('DataType'), type[int], type[float], type[bool], type[str], type['date'], type['time'], type['datetime'], type['timedelta'], type[list[typing.Any]], type[tuple[typing.Any, ...]], type[bytes], type[object], type['Decimal'], type[None], NoneType]]]], NoneType] = None, schema_overrides: collections.abc.Mapping[str, typing.Union[ForwardRef('DataTypeClass'), ForwardRef('DataType')]] | None = None, strict: bool = True, orient: typing.Optional[typing.Literal['col', 'row']] = None, infer_schema_length: int | None = 100, nan_to_null: bool = False, flow_graph: typing.Optional[flowfile_core.flowfile.flow_graph.FlowGraph] = None, node_id: typing.Optional[int] = None, parent_node_id: typing.Optional[int] = None, **kwargs) -> Self: ...
85
85
 
86
86
  def __repr__(self) -> Any: ...
87
87
 
@@ -118,9 +118,6 @@ class FlowFrame:
118
118
  # Execute join using Polars code approach.
119
119
  def _execute_polars_code_join(self, other: FlowFrame, new_node_id: int, on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column], left_on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column], right_on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column], left_columns: typing.Optional[typing.List[str]], right_columns: typing.Optional[typing.List[str]], how: str, suffix: str, validate: str, nulls_equal: bool, coalesce: bool, maintain_order: typing.Literal[None, 'left', 'right', 'left_right', 'right_left'], description: str) -> 'FlowFrame': ...
120
120
 
121
- # Internal constructor to create a FlowFrame instance that wraps an
122
- def _from_existing_node(self, data: LazyFrame, flow_graph: FlowGraph, node_id: int, parent_node_id: typing.Optional[int] = None) -> 'FlowFrame': ...
123
-
124
121
  # Generates the `input_df.sort(...)` Polars code string using pure expression strings.
125
122
  def _generate_sort_polars_code(self, pure_sort_expr_strs: typing.List[str], descending_values: typing.List[bool], nulls_last_values: typing.List[bool], multithreaded: bool, maintain_order: bool) -> str: ...
126
123
 
@@ -231,7 +228,7 @@ class FlowFrame:
231
228
  def interpolate(self, description: Optional[str] = None) -> 'FlowFrame': ...
232
229
 
233
230
  # Add a join operation to the Logical Plan.
234
- def join(self, other, on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column] = None, how: str = 'inner', left_on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column] = None, right_on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column] = None, suffix: str = '_right', validate: str = None, nulls_equal: bool = False, coalesce: bool = None, maintain_order: typing.Literal[None, 'left', 'right', 'left_right', 'right_left'] = None, description: str = None) -> Any: ...
231
+ def join(self, other, on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column] = None, how: str = 'inner', left_on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column] = None, right_on: typing.Union[typing.List[str | flowfile_frame.expr.Column], str, flowfile_frame.expr.Column] = None, suffix: str = '_right', validate: str = None, nulls_equal: bool = False, coalesce: bool = None, maintain_order: typing.Literal[None, 'left', 'right', 'left_right', 'right_left'] = None, description: str = None) -> 'FlowFrame': ...
235
232
 
236
233
  # Perform an asof join.
237
234
  def join_asof(self, other: FlowFrame, left_on: str | None | Expr = None, right_on: str | None | Expr = None, on: str | None | Expr = None, by_left: str | Sequence[str] | None = None, by_right: str | Sequence[str] | None = None, by: str | Sequence[str] | None = None, strategy: AsofJoinStrategy = 'backward', suffix: str = '_right', tolerance: str | int | float | timedelta | None = None, allow_parallel: bool = True, force_parallel: bool = False, coalesce: bool = True, allow_exact_matches: bool = True, check_sortedness: bool = True, description: Optional[str] = None) -> 'FlowFrame': ...
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "Flowfile"
3
- version = "0.3.7"
3
+ version = "0.3.8"
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>"]
File without changes