py-data-engine 0.1.1__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. {py_data_engine-0.1.1/src/py_data_engine.egg-info → py_data_engine-0.1.3}/PKG-INFO +7 -12
  2. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/README.md +3 -9
  3. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/pyproject.toml +7 -4
  4. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/setup.py +11 -0
  5. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/__init__.py +12 -12
  6. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/__init__.py +5 -2
  7. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/context.py +4 -0
  8. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/continuous.py +1 -3
  9. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/grouped.py +20 -18
  10. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/polling.py +4 -0
  11. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/single.py +0 -1
  12. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/flow.py +224 -7
  13. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/primitives.py +47 -3
  14. py_data_engine-0.1.3/src/data_engine/devtools/__init__.py +15 -0
  15. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/devtools/project_ast_map.py +94 -1
  16. py_data_engine-0.1.3/src/data_engine/devtools/smoke_data.py +577 -0
  17. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_modules/data_engine/authoring/flow.html +239 -22
  18. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_modules/data_engine/authoring/model.html +1 -1
  19. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_modules/data_engine/authoring/primitives.html +104 -33
  20. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_modules/data_engine/runtime/file_watch.html +4 -10
  21. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/daemon.html +193 -0
  22. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/daemon_state.html +169 -0
  23. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/flow_catalog.html +226 -0
  24. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/flow_execution.html +174 -0
  25. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/ledger.html +224 -0
  26. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/logs.html +203 -0
  27. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/runtime_binding.html +289 -0
  28. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/runtime_execution.html +260 -0
  29. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/runtime_history.html +185 -0
  30. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/settings.html +199 -0
  31. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/shared_state.html +154 -0
  32. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/theme.html +191 -0
  33. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/workspace_provisioning.html +384 -0
  34. py_data_engine-0.1.3/src/data_engine/docs/html/_modules/data_engine/services/workspaces.html +197 -0
  35. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_modules/index.html +15 -1
  36. py_data_engine-0.1.3/src/data_engine/docs/html/_sources/api.rst.txt +115 -0
  37. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/app-runtime-and-workspaces.md.txt +2 -2
  38. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/project-inventory.md.txt +336 -55
  39. py_data_engine-0.1.3/src/data_engine/docs/html/_sources/guides/project-map.md.txt +74 -0
  40. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/documentation_options.js +1 -1
  41. py_data_engine-0.1.3/src/data_engine/docs/html/api.html +2951 -0
  42. py_data_engine-0.1.3/src/data_engine/docs/html/genindex.html +914 -0
  43. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/app-runtime-and-workspaces.html +3 -3
  44. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/authoring-flow-modules.html +1 -1
  45. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/configuring-flows.html +1 -1
  46. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/core-concepts.html +1 -1
  47. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/database-methods.html +1 -1
  48. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/duckdb-helpers.html +1 -1
  49. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/flow-context.html +1 -1
  50. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/flow-methods.html +1 -1
  51. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/getting-started.html +1 -1
  52. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/project-inventory.html +622 -71
  53. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/project-map.html +79 -132
  54. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/guides/recipes.html +1 -1
  55. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/index.html +4 -5
  56. py_data_engine-0.1.3/src/data_engine/docs/html/objects.inv +0 -0
  57. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/py-modindex.html +73 -3
  58. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/search.html +1 -1
  59. py_data_engine-0.1.3/src/data_engine/docs/html/searchindex.js +1 -0
  60. py_data_engine-0.1.3/src/data_engine/docs/sphinx_source/api.rst +115 -0
  61. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/conf.py +4 -1
  62. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/app-runtime-and-workspaces.md +2 -2
  63. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/project-inventory.md +336 -55
  64. py_data_engine-0.1.3/src/data_engine/docs/sphinx_source/guides/project-map.md +74 -0
  65. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/actions.py +1 -1
  66. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/diagnostics.py +14 -1
  67. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/workspace.py +5 -2
  68. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/flow_modules/flow_module_loader.py +2 -2
  69. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/helpers/__init__.py +8 -0
  70. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/helpers/duckdb.py +303 -28
  71. py_data_engine-0.1.3/src/data_engine/helpers/schema.py +295 -0
  72. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/app.py +8 -4
  73. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/bootstrap.py +2 -2
  74. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/client.py +86 -31
  75. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/composition.py +13 -6
  76. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/constants.py +2 -1
  77. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/lifecycle.py +6 -3
  78. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/manager.py +2 -27
  79. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/runtime_commands.py +3 -3
  80. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/server.py +1 -1
  81. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/shared_state.py +3 -3
  82. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/state_sync.py +3 -3
  83. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/platform/identity.py +2 -0
  84. py_data_engine-0.1.3/src/data_engine/platform/interpreters.py +50 -0
  85. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/platform/local_settings.py +23 -14
  86. py_data_engine-0.1.3/src/data_engine/platform/paths.py +57 -0
  87. py_data_engine-0.1.3/src/data_engine/platform/processes.py +213 -0
  88. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/platform/workspace_models.py +22 -19
  89. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/platform/workspace_policy.py +34 -24
  90. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/runtime/file_watch.py +3 -9
  91. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/runtime/runtime_db.py +98 -56
  92. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/runtime/shared_state.py +3 -6
  93. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/flow_catalog.py +3 -2
  94. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/ledger.py +22 -18
  95. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/logs.py +10 -10
  96. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/runtime_binding.py +58 -12
  97. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/runtime_execution.py +7 -8
  98. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/runtime_history.py +3 -3
  99. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/shared_state.py +2 -2
  100. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/workspace_provisioning.py +23 -4
  101. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/app.py +0 -1
  102. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/commands_doctor.py +24 -35
  103. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/commands_run.py +8 -1
  104. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/commands_start.py +5 -20
  105. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/commands_workspace.py +0 -2
  106. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/parser.py +2 -1
  107. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/app.py +2 -4
  108. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/bootstrap.py +1 -1
  109. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/bootstrapper.py +36 -7
  110. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/control_support.py +2 -2
  111. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/controllers/flows.py +41 -25
  112. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/controllers/runtime.py +1 -1
  113. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/dialogs/previews.py +0 -2
  114. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/helpers/inspection.py +1 -1
  115. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/helpers/lifecycle.py +9 -7
  116. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/launcher.py +1 -1
  117. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/docs.py +7 -0
  118. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/logs.py +23 -6
  119. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/workspace_binding.py +12 -11
  120. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/workspace_settings.py +9 -5
  121. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/runtime.py +1 -2
  122. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/state_support.py +1 -1
  123. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/support.py +1 -1
  124. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/surface.py +7 -0
  125. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/widgets/panels.py +15 -3
  126. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/app.py +2 -1
  127. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/bootstrap.py +1 -1
  128. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/controllers/flows.py +1 -1
  129. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/controllers/runtime.py +1 -1
  130. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/state_support.py +1 -1
  131. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/state.py +3 -1
  132. {py_data_engine-0.1.1 → py_data_engine-0.1.3/src/py_data_engine.egg-info}/PKG-INFO +7 -12
  133. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/py_data_engine.egg-info/SOURCES.txt +21 -0
  134. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/py_data_engine.egg-info/requires.txt +3 -3
  135. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_builder.py +31 -14
  136. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_cli.py +224 -14
  137. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_cli_helpers.py +4 -1
  138. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_daemon.py +162 -29
  139. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_actions.py +1 -1
  140. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_details.py +1 -1
  141. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_inspection.py +1 -1
  142. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_logs.py +7 -7
  143. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_workspace.py +46 -0
  144. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_flow_module_loader.py +1 -1
  145. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_helpers_duckdb.py +52 -1
  146. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_integration.py +3 -1
  147. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_live_runtime_suite.py +53 -407
  148. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_local_settings.py +0 -1
  149. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_project_ast_map.py +36 -1
  150. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_qt_ui.py +199 -234
  151. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_runtime_db.py +48 -10
  152. py_data_engine-0.1.3/tests/test_schema_helper.py +145 -0
  153. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_services.py +24 -7
  154. py_data_engine-0.1.3/tests/test_smoke_data.py +56 -0
  155. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_sources.py +25 -1
  156. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_tui.py +6 -6
  157. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_tui_widgets.py +2 -0
  158. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_ui_bootstrap.py +34 -1
  159. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_ui_models.py +1 -1
  160. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_ui_runtime_theme.py +1 -1
  161. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_views_helpers.py +1 -1
  162. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_workspace_provisioning.py +14 -5
  163. py_data_engine-0.1.1/src/data_engine/devtools/__init__.py +0 -3
  164. py_data_engine-0.1.1/src/data_engine/docs/html/_sources/api.rst.txt +0 -42
  165. py_data_engine-0.1.1/src/data_engine/docs/html/_sources/guides/project-map.md.txt +0 -118
  166. py_data_engine-0.1.1/src/data_engine/docs/html/api.html +0 -1093
  167. py_data_engine-0.1.1/src/data_engine/docs/html/genindex.html +0 -483
  168. py_data_engine-0.1.1/src/data_engine/docs/html/objects.inv +0 -0
  169. py_data_engine-0.1.1/src/data_engine/docs/html/searchindex.js +0 -1
  170. py_data_engine-0.1.1/src/data_engine/docs/sphinx_source/api.rst +0 -42
  171. py_data_engine-0.1.1/src/data_engine/docs/sphinx_source/guides/project-map.md +0 -118
  172. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/LICENSE +0 -0
  173. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/setup.cfg +0 -0
  174. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/application/__init__.py +0 -0
  175. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/application/actions.py +0 -0
  176. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/application/catalog.py +0 -0
  177. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/application/control.py +0 -0
  178. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/application/details.py +0 -0
  179. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/application/runtime.py +0 -0
  180. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/application/workspace.py +0 -0
  181. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/builder.py +0 -0
  182. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/__init__.py +0 -0
  183. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/app.py +0 -0
  184. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/logging.py +0 -0
  185. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/execution/runner.py +0 -0
  186. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/helpers.py +0 -0
  187. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/model.py +0 -0
  188. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/authoring/services.py +0 -0
  189. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/__init__.py +0 -0
  190. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/authoring-flow-modules.md.txt +0 -0
  191. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/configuring-flows.md.txt +0 -0
  192. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/core-concepts.md.txt +0 -0
  193. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/database-methods.md.txt +0 -0
  194. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/duckdb-helpers.md.txt +0 -0
  195. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/flow-context.md.txt +0 -0
  196. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/flow-methods.md.txt +0 -0
  197. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/getting-started.md.txt +0 -0
  198. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/guides/recipes.md.txt +0 -0
  199. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_sources/index.rst.txt +0 -0
  200. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  201. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/base-stemmer.js +0 -0
  202. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/basic.css +0 -0
  203. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/badge_only.css +0 -0
  204. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  205. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  206. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  207. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  208. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  209. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  210. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  211. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  212. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  213. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  214. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  215. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff +0 -0
  216. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
  217. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  218. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  219. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff +0 -0
  220. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
  221. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/css/theme.css +0 -0
  222. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/custom.css +0 -0
  223. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/doctools.js +0 -0
  224. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/english-stemmer.js +0 -0
  225. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/file.png +0 -0
  226. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
  227. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  228. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
  229. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  230. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  231. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  232. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  233. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  234. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
  235. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  236. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
  237. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  238. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
  239. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  240. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
  241. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  242. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  243. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  244. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  245. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  246. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  247. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  248. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  249. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  250. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/jquery.js +0 -0
  251. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/js/badge_only.js +0 -0
  252. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/js/theme.js +0 -0
  253. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/js/versions.js +0 -0
  254. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/language_data.js +0 -0
  255. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/minus.png +0 -0
  256. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/plus.png +0 -0
  257. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/pygments.css +0 -0
  258. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/searchtools.js +0 -0
  259. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/html/_static/sphinx_highlight.js +0 -0
  260. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/_static/custom.css +0 -0
  261. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/authoring-flow-modules.md +0 -0
  262. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/configuring-flows.md +0 -0
  263. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/core-concepts.md +0 -0
  264. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/database-methods.md +0 -0
  265. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/duckdb-helpers.md +0 -0
  266. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/flow-context.md +0 -0
  267. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/flow-methods.md +0 -0
  268. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/getting-started.md +0 -0
  269. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/guides/recipes.md +0 -0
  270. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/docs/sphinx_source/index.rst +0 -0
  271. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/__init__.py +0 -0
  272. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/catalog.py +0 -0
  273. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/details.py +0 -0
  274. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/errors.py +0 -0
  275. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/inspection.py +0 -0
  276. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/logs.py +0 -0
  277. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/operations.py +0 -0
  278. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/operator.py +0 -0
  279. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/runs.py +0 -0
  280. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/runtime.py +0 -0
  281. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/source_state.py +0 -0
  282. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/support.py +0 -0
  283. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/domain/time.py +0 -0
  284. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/flow_modules/__init__.py +0 -0
  285. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/flow_modules/flow_module_compiler.py +0 -0
  286. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/__init__.py +0 -0
  287. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/__init__.py +0 -0
  288. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/commands.py +0 -0
  289. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/entrypoints.py +0 -0
  290. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/ownership.py +0 -0
  291. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/hosts/daemon/runtime_control.py +0 -0
  292. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/platform/__init__.py +0 -0
  293. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/platform/theme.py +0 -0
  294. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/runtime/__init__.py +0 -0
  295. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/runtime/ledger_models.py +0 -0
  296. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/__init__.py +0 -0
  297. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/daemon.py +0 -0
  298. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/daemon_state.py +0 -0
  299. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/flow_execution.py +0 -0
  300. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/settings.py +0 -0
  301. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/theme.py +0 -0
  302. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/services/workspaces.py +0 -0
  303. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/__init__.py +0 -0
  304. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/__init__.py +0 -0
  305. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/cli/dependencies.py +0 -0
  306. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/__init__.py +0 -0
  307. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/cache_models.py +0 -0
  308. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/controllers/__init__.py +0 -0
  309. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/dialogs/__init__.py +0 -0
  310. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/dialogs/messages.py +0 -0
  311. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/helpers/__init__.py +0 -0
  312. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/helpers/scroll.py +0 -0
  313. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/helpers/theming.py +0 -0
  314. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/dark_light.svg +0 -0
  315. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/documentation.svg +0 -0
  316. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/failed.svg +0 -0
  317. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/group.svg +0 -0
  318. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/home.svg +0 -0
  319. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/manual.svg +0 -0
  320. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/poll.svg +0 -0
  321. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/schedule.svg +0 -0
  322. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/settings.svg +0 -0
  323. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/started.svg +0 -0
  324. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/success.svg +0 -0
  325. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons/view-log.svg +0 -0
  326. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/icons.py +0 -0
  327. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/__init__.py +0 -0
  328. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/runtime_projection.py +0 -0
  329. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/sidebar.py +0 -0
  330. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/steps.py +0 -0
  331. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/presenters/workspace.py +0 -0
  332. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/preview_models.py +0 -0
  333. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/render_support.py +0 -0
  334. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/rendering/__init__.py +0 -0
  335. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/rendering/artifacts.py +0 -0
  336. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/rendering/icons.py +0 -0
  337. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/theme.py +0 -0
  338. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/widgets/__init__.py +0 -0
  339. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/widgets/config.py +0 -0
  340. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/widgets/logs.py +0 -0
  341. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/widgets/sidebar.py +0 -0
  342. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/gui/widgets/steps.py +0 -0
  343. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/__init__.py +0 -0
  344. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/bootstrapper.py +0 -0
  345. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/controllers/__init__.py +0 -0
  346. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/runtime.py +0 -0
  347. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/support.py +0 -0
  348. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/theme.py +0 -0
  349. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/ui/tui/widgets.py +0 -0
  350. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/__init__.py +0 -0
  351. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/actions.py +0 -0
  352. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/artifacts.py +0 -0
  353. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/flow_display.py +0 -0
  354. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/logs.py +0 -0
  355. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/models.py +0 -0
  356. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/presentation.py +0 -0
  357. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/runs.py +0 -0
  358. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/status.py +0 -0
  359. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/data_engine/views/text.py +0 -0
  360. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/py_data_engine.egg-info/dependency_links.txt +0 -0
  361. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/py_data_engine.egg-info/entry_points.txt +0 -0
  362. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/src/py_data_engine.egg-info/top_level.txt +0 -0
  363. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_application.py +0 -0
  364. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_authoring_helpers.py +0 -0
  365. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_authoring_services.py +0 -0
  366. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_catalog.py +0 -0
  367. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_errors.py +0 -0
  368. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_operations.py +0 -0
  369. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_operator.py +0 -0
  370. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_runs.py +0 -0
  371. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_runtime.py +0 -0
  372. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_domain_support.py +0 -0
  373. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_export_project_bundle_script.py +0 -0
  374. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_flow_module_compiler.py +0 -0
  375. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_logs.py +0 -0
  376. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_platform_identity.py +0 -0
  377. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_runtime_history_service.py +0 -0
  378. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_shared_state.py +0 -0
  379. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_theme.py +0 -0
  380. {py_data_engine-0.1.1 → py_data_engine-0.1.3}/tests/test_ui_state.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: py-data-engine
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Workbook-driven workflow jobs with strict filename parsing and DuckDB-backed processing.
5
5
  Author: Data Engine contributors
6
6
  License-Expression: MIT
@@ -20,12 +20,11 @@ Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
21
  Requires-Dist: duckdb>=1.5.0
22
22
  Requires-Dist: fastexcel>=0.19.0
23
+ Requires-Dist: polars>=1.39.0
23
24
  Requires-Dist: pyarrow>=23.0.1
24
25
  Requires-Dist: PySide6>=6.9.0
25
26
  Requires-Dist: textual>=0.74.0
26
27
  Requires-Dist: xlsxwriter>=3.2.9
27
- Provides-Extra: polars
28
- Requires-Dist: polars>=1.39.0; extra == "polars"
29
28
  Provides-Extra: polars-lts
30
29
  Requires-Dist: polars-lts-cpu>=1.33.1; extra == "polars-lts"
31
30
  Provides-Extra: synthetic
@@ -58,10 +57,12 @@ Requires-Dist: notebook>=7.4.0; extra == "dev"
58
57
  Requires-Dist: numpy>=2.4.0; extra == "dev"
59
58
  Requires-Dist: openpyxl>=3.1.0; extra == "dev"
60
59
  Requires-Dist: pandas>=3.0.0; extra == "dev"
60
+ Requires-Dist: pydoclint>=0.7.6; extra == "dev"
61
61
  Requires-Dist: pydocstyle>=6.3.0; extra == "dev"
62
62
  Requires-Dist: pyinstaller>=6.15.0; extra == "dev"
63
63
  Requires-Dist: pytest>=9.0.0; extra == "dev"
64
64
  Requires-Dist: pytest-cov>=7.0.0; extra == "dev"
65
+ Requires-Dist: ruff>=0.15.10; extra == "dev"
65
66
  Requires-Dist: Sphinx>=9.1.0; extra == "dev"
66
67
  Requires-Dist: sphinx_rtd_theme>=3.1.0; extra == "dev"
67
68
  Dynamic: license-file
@@ -86,20 +87,14 @@ Use the installer that matches your environment:
86
87
  - Windows: [INSTALL/INSTALL WINDOWS.bat](INSTALL/INSTALL%20WINDOWS.bat)
87
88
  - Windows VM / CPU-safe Polars test path: [INSTALL/INSTALL WINDOWS_VM.bat](INSTALL/INSTALL%20WINDOWS_VM.bat)
88
89
 
89
- The macOS and standard Windows installers install the regular Polars package. The Windows VM installer installs the `polars-lts-cpu` variant instead.
90
+ The macOS and standard Windows installers install the normal base runtime, which now includes Polars directly.
90
91
 
91
92
  ### Manual install
92
93
 
93
- Data Engine now uses explicit Polars extras so you can choose the runtime package:
94
+ Polars is now part of the regular install:
94
95
 
95
96
  ```bash
96
- python -m pip install -e ".[dev,polars]"
97
- ```
98
-
99
- For the CPU-safe LTS variant:
100
-
101
- ```bash
102
- python -m pip install -e ".[dev,polars-lts]"
97
+ python -m pip install -e ".[dev]"
103
98
  ```
104
99
 
105
100
  Launch the GUI with:
@@ -18,20 +18,14 @@ Use the installer that matches your environment:
18
18
  - Windows: [INSTALL/INSTALL WINDOWS.bat](INSTALL/INSTALL%20WINDOWS.bat)
19
19
  - Windows VM / CPU-safe Polars test path: [INSTALL/INSTALL WINDOWS_VM.bat](INSTALL/INSTALL%20WINDOWS_VM.bat)
20
20
 
21
- The macOS and standard Windows installers install the regular Polars package. The Windows VM installer installs the `polars-lts-cpu` variant instead.
21
+ The macOS and standard Windows installers install the normal base runtime, which now includes Polars directly.
22
22
 
23
23
  ### Manual install
24
24
 
25
- Data Engine now uses explicit Polars extras so you can choose the runtime package:
25
+ Polars is now part of the regular install:
26
26
 
27
27
  ```bash
28
- python -m pip install -e ".[dev,polars]"
29
- ```
30
-
31
- For the CPU-safe LTS variant:
32
-
33
- ```bash
34
- python -m pip install -e ".[dev,polars-lts]"
28
+ python -m pip install -e ".[dev]"
35
29
  ```
36
30
 
37
31
  Launch the GUI with:
@@ -11,7 +11,7 @@ build-backend = "setuptools.build_meta"
11
11
 
12
12
  [project]
13
13
  name = "py-data-engine"
14
- version = "0.1.1"
14
+ dynamic = ["version"]
15
15
  description = "Workbook-driven workflow jobs with strict filename parsing and DuckDB-backed processing."
16
16
  readme = "README.md"
17
17
  requires-python = ">=3.14"
@@ -33,6 +33,7 @@ classifiers = [
33
33
  dependencies = [
34
34
  "duckdb>=1.5.0",
35
35
  "fastexcel>=0.19.0",
36
+ "polars>=1.39.0",
36
37
  "pyarrow>=23.0.1",
37
38
  "PySide6>=6.9.0",
38
39
  "textual>=0.74.0",
@@ -48,9 +49,6 @@ Issues = "https://github.com/bj-data-eng/data-engine/issues"
48
49
  data-engine = "data_engine.ui.cli.app:main"
49
50
 
50
51
  [project.optional-dependencies]
51
- polars = [
52
- "polars>=1.39.0",
53
- ]
54
52
  polars-lts = [
55
53
  "polars-lts-cpu>=1.33.1",
56
54
  ]
@@ -89,10 +87,12 @@ dev = [
89
87
  "numpy>=2.4.0",
90
88
  "openpyxl>=3.1.0",
91
89
  "pandas>=3.0.0",
90
+ "pydoclint>=0.7.6",
92
91
  "pydocstyle>=6.3.0",
93
92
  "pyinstaller>=6.15.0",
94
93
  "pytest>=9.0.0",
95
94
  "pytest-cov>=7.0.0",
95
+ "ruff>=0.15.10",
96
96
  "Sphinx>=9.1.0",
97
97
  "sphinx_rtd_theme>=3.1.0",
98
98
  ]
@@ -116,6 +116,9 @@ data_engine = [
116
116
  "docs/html/**/*",
117
117
  ]
118
118
 
119
+ [tool.setuptools.dynamic]
120
+ version = {attr = "data_engine.platform.identity.APP_VERSION"}
121
+
119
122
  [tool.pytest.ini_options]
120
123
  pythonpath = ["src"]
121
124
  testpaths = ["tests"]
@@ -12,11 +12,22 @@ from setuptools.command.sdist import sdist as _sdist
12
12
  ROOT = Path(__file__).resolve().parent
13
13
  DOCS_SOURCE_DIR = ROOT / "src" / "data_engine" / "docs" / "sphinx_source"
14
14
  DOCS_OUTPUT_DIR = ROOT / "src" / "data_engine" / "docs" / "html"
15
+ PROJECT_AST_MAP_SCRIPT = ROOT / "src" / "data_engine" / "devtools" / "project_ast_map.py"
15
16
 
16
17
 
17
18
  def _build_packaged_docs() -> None:
18
19
  if not DOCS_SOURCE_DIR.is_dir():
19
20
  raise FileNotFoundError(f"Packaged docs source directory is missing: {DOCS_SOURCE_DIR}")
21
+ subprocess.run(
22
+ [
23
+ sys.executable,
24
+ str(PROJECT_AST_MAP_SCRIPT),
25
+ str(ROOT / "src" / "data_engine"),
26
+ "--write-docs",
27
+ str(DOCS_SOURCE_DIR / "guides"),
28
+ ],
29
+ check=True,
30
+ )
20
31
  subprocess.run(
21
32
  [
22
33
  sys.executable,
@@ -5,11 +5,11 @@ from __future__ import annotations
5
5
  from typing import TYPE_CHECKING
6
6
 
7
7
  if TYPE_CHECKING:
8
- from data_engine.authoring.builder import Batch
9
- from data_engine.authoring.builder import FileRef
10
- from data_engine.authoring.builder import Flow
11
- from data_engine.authoring.builder import FlowContext
12
- from data_engine.authoring.builder import discover_flows, load_flow, run
8
+ from data_engine.authoring.flow import Flow
9
+ from data_engine.authoring.flow import discover_flows, load_flow, run
10
+ from data_engine.authoring.primitives import Batch
11
+ from data_engine.authoring.primitives import FileRef
12
+ from data_engine.authoring.primitives import FlowContext
13
13
 
14
14
  __all__ = ["Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_flow", "run"]
15
15
 
@@ -17,13 +17,13 @@ __all__ = ["Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_fl
17
17
  def __getattr__(name: str):
18
18
  """Lazy-load runtime symbols so lightweight helpers can import package submodules safely."""
19
19
  if name in {"Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_flow", "run"}:
20
- from data_engine.authoring.builder import Batch
21
- from data_engine.authoring.builder import FileRef
22
- from data_engine.authoring.builder import Flow
23
- from data_engine.authoring.builder import FlowContext
24
- from data_engine.authoring.builder import discover_flows
25
- from data_engine.authoring.builder import load_flow
26
- from data_engine.authoring.builder import run
20
+ from data_engine.authoring.flow import Flow
21
+ from data_engine.authoring.flow import discover_flows
22
+ from data_engine.authoring.flow import load_flow
23
+ from data_engine.authoring.flow import run
24
+ from data_engine.authoring.primitives import Batch
25
+ from data_engine.authoring.primitives import FileRef
26
+ from data_engine.authoring.primitives import FlowContext
27
27
 
28
28
  return {
29
29
  "Batch": Batch,
@@ -10,5 +10,8 @@ __all__ = ["Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_fl
10
10
  def __getattr__(name: str):
11
11
  if name not in __all__:
12
12
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
13
- builder = import_module("data_engine.authoring.builder")
14
- return getattr(builder, name)
13
+ if name in {"Flow", "discover_flows", "load_flow", "run"}:
14
+ module = import_module("data_engine.authoring.flow")
15
+ return getattr(module, name)
16
+ module = import_module("data_engine.authoring.primitives")
17
+ return getattr(module, name)
@@ -5,12 +5,16 @@ from __future__ import annotations
5
5
  from dataclasses import dataclass
6
6
  import hashlib
7
7
  from pathlib import Path
8
+ from typing import TYPE_CHECKING
8
9
  from uuid import uuid4
9
10
 
10
11
  from data_engine.authoring.primitives import FlowContext, MirrorContext, SourceContext, WatchSpec, WorkspaceConfigContext
11
12
  from data_engine.domain.source_state import SourceSignature
12
13
  from data_engine.domain.time import utcnow_text
13
14
 
15
+ if TYPE_CHECKING:
16
+ from data_engine.authoring.flow import Flow
17
+
14
18
 
15
19
  @dataclass(frozen=True)
16
20
  class _QueuedJob:
@@ -8,6 +8,7 @@ from time import monotonic, sleep
8
8
  from typing import TYPE_CHECKING
9
9
 
10
10
  from data_engine.authoring.execution.context import _QueuedJob
11
+ from data_engine.authoring.model import FlowStoppedError
11
12
  from data_engine.authoring.primitives import WatchSpec
12
13
  from data_engine.runtime.file_watch import PollingWatcher
13
14
 
@@ -170,7 +171,4 @@ class ContinuousRuntimeLoop:
170
171
  entry["pending"] = True
171
172
  entry["last_run_date"] = current_dt.date()
172
173
 
173
-
174
- from data_engine.authoring.model import FlowStoppedError
175
-
176
174
  __all__ = ["ContinuousRuntimeLoop"]
@@ -36,6 +36,7 @@ class _GroupedFlowRuntime:
36
36
  self.status_callback = status_callback
37
37
  self._runtime_ledger_service = runtime_ledger_service or default_runtime_ledger_service()
38
38
  self._runtime_ledger_factory = runtime_ledger_factory or self._runtime_ledger_service.open_runtime_ledger
39
+ self._owns_runtime_ledger = runtime_ledger is None
39
40
  self.runtime_ledger = runtime_ledger or self._runtime_ledger_factory()
40
41
 
41
42
  def run(self) -> list[FlowContext]:
@@ -75,26 +76,27 @@ class _GroupedFlowRuntime:
75
76
  errors.put((group_name, exc))
76
77
  if not self.continuous:
77
78
  internal_runtime_stop.set()
78
- finally:
79
+ try:
80
+ for group_name, group_flows in grouped.items():
81
+ thread = threading.Thread(target=run_group, args=(group_name, group_flows), daemon=True)
82
+ threads.append(thread)
83
+ thread.start()
84
+
85
+ for thread in threads:
86
+ thread.join()
87
+
88
+ if not self.continuous and not errors.empty():
89
+ _, exc = errors.get()
90
+ raise exc
91
+
92
+ ordered_results: list[FlowContext] = []
93
+ for group_name in grouped:
94
+ ordered_results.extend(results_by_group[group_name])
95
+ return ordered_results
96
+ finally:
97
+ if self._owns_runtime_ledger:
79
98
  self.runtime_ledger.close()
80
99
 
81
- for group_name, group_flows in grouped.items():
82
- thread = threading.Thread(target=run_group, args=(group_name, group_flows), daemon=True)
83
- threads.append(thread)
84
- thread.start()
85
-
86
- for thread in threads:
87
- thread.join()
88
-
89
- if not self.continuous and not errors.empty():
90
- _, exc = errors.get()
91
- raise exc
92
-
93
- ordered_results: list[FlowContext] = []
94
- for group_name in grouped:
95
- ordered_results.extend(results_by_group[group_name])
96
- return ordered_results
97
-
98
100
  def _grouped_flows(self) -> dict[str, tuple["Flow", ...]]:
99
101
  grouped: dict[str, list["Flow"]] = {}
100
102
  for index, flow in enumerate(self.flows):
@@ -4,6 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from collections import deque
6
6
  from pathlib import Path
7
+ from typing import TYPE_CHECKING
7
8
 
8
9
  from data_engine.authoring.primitives import WatchSpec
9
10
  from data_engine.authoring.execution.context import _QueuedJob
@@ -11,6 +12,9 @@ from data_engine.domain.source_state import SourceSignature
11
12
  from data_engine.runtime.file_watch import PollingWatcher, iter_candidate_paths
12
13
  from data_engine.runtime.runtime_db import RuntimeLedger
13
14
 
15
+ if TYPE_CHECKING:
16
+ from data_engine.authoring.flow import Flow
17
+
14
18
 
15
19
  class RuntimePollingSupport:
16
20
  """Own watcher creation, queueing, and stale-source detection."""
@@ -19,7 +19,6 @@ from data_engine.runtime.runtime_db import RuntimeLedger
19
19
 
20
20
  if TYPE_CHECKING:
21
21
  from data_engine.authoring.flow import Flow
22
- from data_engine.authoring.primitives import StepSpec
23
22
 
24
23
 
25
24
  def _open_default_runtime_ledger() -> RuntimeLedger:
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  from dataclasses import dataclass, replace
6
6
  import inspect
7
7
  from pathlib import Path
8
+ from typing import Callable
8
9
 
9
10
  from data_engine.authoring.helpers import (
10
11
  _callable_identifier,
@@ -45,7 +46,28 @@ def _resolve_authoring_services(
45
46
 
46
47
  @dataclass(frozen=True)
47
48
  class Flow:
48
- """Immutable fluent builder for generic runtime flows."""
49
+ """Immutable fluent builder for generic runtime flows.
50
+
51
+ Attributes
52
+ ----------
53
+ group : str
54
+ Display group used by the GUI, TUI, and runtime summaries.
55
+ name : str | None
56
+ Stable flow identifier. When omitted in a flow module, the module loader
57
+ can derive it from the module name.
58
+ label : str | None
59
+ Optional human-readable display label.
60
+ trigger : WatchSpec | None
61
+ Runtime trigger configuration.
62
+ mirror_spec : MirrorSpec | None
63
+ Mirrored output path configuration.
64
+ steps : tuple[StepSpec, ...]
65
+ Ordered callable steps to run.
66
+
67
+ Notes
68
+ -----
69
+ Builder methods return a new ``Flow`` instance, so calls can be chained.
70
+ """
49
71
 
50
72
  group: str
51
73
  name: str | None = None
@@ -80,6 +102,38 @@ class Flow:
80
102
  extensions: tuple[str, ...] | list[str] | set[str] | None = None,
81
103
  settle: int = 1,
82
104
  ) -> "Flow":
105
+ """Configure how this flow is triggered.
106
+
107
+ Parameters
108
+ ----------
109
+ mode : str
110
+ Trigger mode: ``"manual"``, ``"poll"``, or ``"schedule"``.
111
+ run_as : str
112
+ ``"individual"`` to run once per source file, or ``"batch"`` to run
113
+ once for the full source set.
114
+ source : str | Path | None
115
+ File or directory watched by poll/schedule triggers.
116
+ interval : str | None
117
+ Duration string such as ``"10s"`` or ``"5m"`` for poll intervals or
118
+ recurring schedules.
119
+ time : str | tuple[str, ...] | list[str] | set[str] | None
120
+ One or more ``HH:MM`` daily schedule times.
121
+ extensions : tuple[str, ...] | list[str] | set[str] | None
122
+ Optional file extensions used when discovering source files.
123
+ settle : int
124
+ Polling settle window in seconds before a changed file is queued.
125
+
126
+ Returns
127
+ -------
128
+ Flow
129
+ A new flow with the trigger configuration attached.
130
+
131
+ Raises
132
+ ------
133
+ FlowValidationError
134
+ If the trigger mode, source, schedule, or polling options are
135
+ inconsistent.
136
+ """
83
137
  normalized_mode = str(mode).strip().lower()
84
138
  if normalized_mode not in {"manual", "poll", "schedule"}:
85
139
  raise FlowValidationError("watch() mode must be one of 'manual', 'poll', or 'schedule'.")
@@ -157,17 +211,53 @@ class Flow:
157
211
  )
158
212
 
159
213
  def mirror(self, *, root: str | Path) -> "Flow":
160
- """Bind a mirrored output namespace rooted at one directory."""
214
+ """Bind a mirrored output namespace rooted at one directory.
215
+
216
+ Parameters
217
+ ----------
218
+ root : str | Path
219
+ Directory used by ``context.mirror`` helpers when writing outputs.
220
+
221
+ Returns
222
+ -------
223
+ Flow
224
+ A new flow with mirror output helpers enabled.
225
+ """
161
226
  return self._clone(mirror_spec=MirrorSpec(root=_resolve_flow_path(root)))
162
227
 
163
228
  def step(
164
229
  self,
165
- fn,
230
+ fn: Callable[[FlowContext], object],
166
231
  *,
167
232
  use: str | None = None,
168
233
  save_as: str | None = None,
169
234
  label: str | None = None,
170
235
  ) -> "Flow":
236
+ """Append one callable step to the flow.
237
+
238
+ Parameters
239
+ ----------
240
+ fn : Callable[[FlowContext], object]
241
+ Callable that accepts a single ``FlowContext`` and returns the next
242
+ value for ``context.current``.
243
+ use : str | None
244
+ Optional named object slot to load into ``context.current`` before
245
+ the step runs.
246
+ save_as : str | None
247
+ Optional named object slot to store the step result in.
248
+ label : str | None
249
+ Optional display label for logs and UI step summaries.
250
+
251
+ Returns
252
+ -------
253
+ Flow
254
+ A new flow with the step appended.
255
+
256
+ Raises
257
+ ------
258
+ FlowValidationError
259
+ If ``fn`` is not callable or does not accept exactly one argument.
260
+ """
171
261
  if not callable(fn):
172
262
  raise FlowValidationError("step() fn must be callable")
173
263
  normalized_use = _validate_slot_name(method_name="step", slot_name="use", value=use)
@@ -188,12 +278,36 @@ class Flow:
188
278
 
189
279
  def map(
190
280
  self,
191
- fn,
281
+ fn: Callable[..., object],
192
282
  *,
193
283
  use: str | None = None,
194
284
  save_as: str | None = None,
195
285
  label: str | None = None,
196
286
  ) -> "Flow":
287
+ """Append a step that maps a callable over the current iterable value.
288
+
289
+ Parameters
290
+ ----------
291
+ fn : Callable[..., object]
292
+ Callable accepting either ``item`` or ``context, item``.
293
+ use : str | None
294
+ Optional named object slot to map instead of the current value.
295
+ save_as : str | None
296
+ Optional named object slot to store the mapped ``Batch`` result in.
297
+ label : str | None
298
+ Optional display label for logs and UI step summaries.
299
+
300
+ Returns
301
+ -------
302
+ Flow
303
+ A new flow with the mapping step appended.
304
+
305
+ Raises
306
+ ------
307
+ FlowValidationError
308
+ If ``fn`` is not callable, has an unsupported signature, or the
309
+ mapped current value is not iterable.
310
+ """
197
311
  if not callable(fn):
198
312
  raise FlowValidationError("map() fn must be callable")
199
313
  normalized_use = _validate_slot_name(method_name="map", slot_name="use", value=use)
@@ -241,6 +355,28 @@ class Flow:
241
355
  save_as: str | None = None,
242
356
  label: str | None = None,
243
357
  ) -> "Flow":
358
+ """Append a step that collects source files into a ``Batch``.
359
+
360
+ Parameters
361
+ ----------
362
+ extensions : tuple[str, ...] | list[str] | set[str]
363
+ File extensions to include, such as ``(".xlsx", ".csv")``.
364
+ root : str | Path | None
365
+ Optional search root. Defaults to the active source root.
366
+ recursive : bool
367
+ Whether to search child directories.
368
+ use : str | None
369
+ Optional named object slot to load before collecting.
370
+ save_as : str | None
371
+ Optional named object slot to store the collected batch in.
372
+ label : str | None
373
+ Optional display label for logs and UI step summaries.
374
+
375
+ Returns
376
+ -------
377
+ Flow
378
+ A new flow with the collection step appended.
379
+ """
244
380
  normalized_use = _validate_slot_name(method_name="collect", slot_name="use", value=use)
245
381
  normalized_save_as = _validate_slot_name(method_name="collect", slot_name="save_as", value=save_as)
246
382
  normalized_label = _validate_label(method_name="collect", label=label)
@@ -253,12 +389,30 @@ class Flow:
253
389
 
254
390
  def step_each(
255
391
  self,
256
- fn,
392
+ fn: Callable[..., object],
257
393
  *,
258
394
  use: str | None = None,
259
395
  save_as: str | None = None,
260
396
  label: str | None = None,
261
397
  ) -> "Flow":
398
+ """Alias for ``map`` that reads naturally in step chains.
399
+
400
+ Parameters
401
+ ----------
402
+ fn : Callable[..., object]
403
+ Callable accepting either ``item`` or ``context, item``.
404
+ use : str | None
405
+ Optional named object slot to map instead of the current value.
406
+ save_as : str | None
407
+ Optional named object slot to store the mapped ``Batch`` result in.
408
+ label : str | None
409
+ Optional display label for logs and UI step summaries.
410
+
411
+ Returns
412
+ -------
413
+ Flow
414
+ A new flow with the per-item step appended.
415
+ """
262
416
  return self.map(fn, use=use, save_as=save_as, label=label)
263
417
 
264
418
  @property
@@ -273,6 +427,20 @@ class Flow:
273
427
  authoring_services: AuthoringServices | None = None,
274
428
  runtime_execution_service: RuntimeExecutionService | None = None,
275
429
  ) -> list[FlowContext]:
430
+ """Run this flow once and return completed runtime contexts.
431
+
432
+ Parameters
433
+ ----------
434
+ authoring_services : AuthoringServices | None
435
+ Optional service bundle used by tests or embedded hosts.
436
+ runtime_execution_service : RuntimeExecutionService | None
437
+ Optional runtime execution service override.
438
+
439
+ Returns
440
+ -------
441
+ list[FlowContext]
442
+ One context per executed source.
443
+ """
276
444
  service = _resolve_authoring_services(
277
445
  authoring_services=authoring_services,
278
446
  runtime_execution_service=runtime_execution_service,
@@ -285,7 +453,29 @@ class Flow:
285
453
  use: str | None = None,
286
454
  authoring_services: AuthoringServices | None = None,
287
455
  runtime_execution_service: RuntimeExecutionService | None = None,
288
- ):
456
+ ) -> object:
457
+ """Run this flow in preview mode and return one preview value.
458
+
459
+ Parameters
460
+ ----------
461
+ use : str | None
462
+ Optional named object slot to preview instead of the final current
463
+ value.
464
+ authoring_services : AuthoringServices | None
465
+ Optional service bundle used by tests or embedded hosts.
466
+ runtime_execution_service : RuntimeExecutionService | None
467
+ Optional runtime execution service override.
468
+
469
+ Returns
470
+ -------
471
+ object
472
+ Preview value returned by the runtime execution service.
473
+
474
+ Raises
475
+ ------
476
+ FlowValidationError
477
+ If preview is requested from inside a compiled flow module.
478
+ """
289
479
  if in_compiled_flow_module_context():
290
480
  raise FlowValidationError("preview() is not available inside compiled flow modules.")
291
481
  normalized_use = _validate_slot_name(method_name="preview", slot_name="use", value=use)
@@ -295,7 +485,20 @@ class Flow:
295
485
  ).runtime_execution_service
296
486
  return service.preview(self, use=normalized_use)
297
487
 
298
- def show(self):
488
+ def show(self) -> object:
489
+ """Run this flow once and return the single final current value.
490
+
491
+ Returns
492
+ -------
493
+ object
494
+ Final ``context.current`` value.
495
+
496
+ Raises
497
+ ------
498
+ FlowValidationError
499
+ If called from a compiled flow module or the flow produces anything
500
+ other than one result.
501
+ """
299
502
  if in_compiled_flow_module_context():
300
503
  raise FlowValidationError("show() is not available inside compiled flow modules.")
301
504
  results = self.run_once()
@@ -309,6 +512,20 @@ class Flow:
309
512
  authoring_services: AuthoringServices | None = None,
310
513
  runtime_execution_service: RuntimeExecutionService | None = None,
311
514
  ) -> list[FlowContext]:
515
+ """Run this flow continuously according to its trigger.
516
+
517
+ Parameters
518
+ ----------
519
+ authoring_services : AuthoringServices | None
520
+ Optional service bundle used by tests or embedded hosts.
521
+ runtime_execution_service : RuntimeExecutionService | None
522
+ Optional runtime execution service override.
523
+
524
+ Returns
525
+ -------
526
+ list[FlowContext]
527
+ Completed contexts collected before the runtime exits.
528
+ """
312
529
  service = _resolve_authoring_services(
313
530
  authoring_services=authoring_services,
314
531
  runtime_execution_service=runtime_execution_service,