py-data-engine 0.2.2__tar.gz → 0.2.4__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 (415) hide show
  1. py_data_engine-0.2.4/MANIFEST.in +4 -0
  2. {py_data_engine-0.2.2/src/py_data_engine.egg-info → py_data_engine-0.2.4}/PKG-INFO +2 -1
  3. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/pyproject.toml +1 -0
  4. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/application/actions.py +2 -0
  5. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/application/control.py +14 -14
  6. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/application/runtime.py +63 -21
  7. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/authoring/flow.py +52 -26
  8. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/authoring/flow.html +53 -30
  9. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/core/flow.html +1 -1
  10. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/core/model.html +1 -1
  11. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/core/primitives.html +1 -1
  12. py_data_engine-0.2.4/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_dimensions.html +387 -0
  13. py_data_engine-0.2.4/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_maintenance.html +228 -0
  14. py_data_engine-0.2.4/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_read.html +314 -0
  15. py_data_engine-0.2.4/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_replace.html +390 -0
  16. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/helpers/polars.html +516 -1
  17. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/helpers/schema.html +1 -1
  18. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/hosts/scheduler.html +1 -1
  19. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/runtime/engine.html +1 -1
  20. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/grouped.html +1 -1
  21. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/single.html +41 -12
  22. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/runtime/file_watch.html +1 -1
  23. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/runtime/stop.html +1 -1
  24. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/daemon.html +1 -1
  25. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/daemon_state.html +1 -1
  26. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/flow_catalog.html +19 -1
  27. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/flow_execution.html +1 -1
  28. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/ledger.html +1 -1
  29. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/logs.html +1 -1
  30. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/runtime_binding.html +9 -1
  31. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/runtime_execution.html +10 -2
  32. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/runtime_history.html +1 -1
  33. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/settings.html +1 -1
  34. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/shared_state.html +1 -1
  35. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/theme.html +1 -1
  36. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/workspace_provisioning.html +1 -1
  37. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/data_engine/services/workspaces.html +1 -1
  38. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_modules/index.html +5 -2
  39. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/duckdb-helpers.md.txt +39 -0
  40. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/flow-methods.md.txt +1 -6
  41. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/project-inventory.md.txt +1016 -263
  42. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/project-map.md.txt +22 -22
  43. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/recipes.md.txt +52 -0
  44. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/documentation_options.js +1 -1
  45. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/api.html +394 -191
  46. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/genindex.html +26 -8
  47. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/app-runtime-and-workspaces.html +1 -1
  48. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/authoring-flow-modules.html +1 -1
  49. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/configuring-flows.html +1 -1
  50. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/core-concepts.html +1 -1
  51. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/database-methods.html +1 -1
  52. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/duckdb-helpers.html +36 -1
  53. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/flow-context.html +1 -1
  54. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/flow-methods.html +3 -8
  55. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/getting-started.html +1 -1
  56. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/project-inventory.html +1511 -227
  57. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/project-map.html +69 -69
  58. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/guides/recipes.html +53 -1
  59. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/index.html +4 -2
  60. py_data_engine-0.2.4/src/data_engine/docs/html/objects.inv +0 -0
  61. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/py-modindex.html +1 -1
  62. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/search.html +1 -1
  63. py_data_engine-0.2.4/src/data_engine/docs/html/searchindex.js +1 -0
  64. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/duckdb-helpers.md +39 -0
  65. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/flow-methods.md +1 -6
  66. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/project-inventory.md +1016 -263
  67. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/project-map.md +22 -22
  68. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/recipes.md +52 -0
  69. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/actions.py +1 -0
  70. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/catalog.py +9 -5
  71. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/details.py +4 -0
  72. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/operations.py +13 -0
  73. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/flow_modules/flow_module_compiler.py +39 -21
  74. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/helpers/__init__.py +6 -0
  75. py_data_engine-0.2.4/src/data_engine/helpers/duckdb/__init__.py +31 -0
  76. py_data_engine-0.2.4/src/data_engine/helpers/duckdb/_common.py +137 -0
  77. py_data_engine-0.2.4/src/data_engine/helpers/duckdb/_dimensions.py +261 -0
  78. py_data_engine-0.2.4/src/data_engine/helpers/duckdb/_maintenance.py +111 -0
  79. py_data_engine-0.2.4/src/data_engine/helpers/duckdb/_read.py +191 -0
  80. py_data_engine-0.2.4/src/data_engine/helpers/duckdb/_replace.py +267 -0
  81. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/helpers/polars.py +497 -0
  82. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/app.py +36 -2
  83. py_data_engine-0.2.4/src/data_engine/hosts/daemon/commands.py +76 -0
  84. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/composition.py +17 -6
  85. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/manager.py +86 -69
  86. py_data_engine-0.2.4/src/data_engine/hosts/daemon/runtime_commands.py +234 -0
  87. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/runtime_control.py +5 -2
  88. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/server.py +42 -8
  89. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/identity.py +1 -1
  90. py_data_engine-0.2.4/src/data_engine/platform/instrumentation.py +184 -0
  91. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/single.py +40 -11
  92. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/__init__.py +34 -0
  93. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/flow_catalog.py +18 -0
  94. py_data_engine-0.2.4/src/data_engine/services/operator_commands.py +236 -0
  95. py_data_engine-0.2.4/src/data_engine/services/operator_queries.py +400 -0
  96. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/runtime_binding.py +5 -0
  97. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/runtime_execution.py +9 -1
  98. py_data_engine-0.2.4/src/data_engine/services/runtime_state.py +631 -0
  99. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/app.py +6 -0
  100. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/app.py +6 -1
  101. py_data_engine-0.2.2/src/data_engine/ui/gui/bootstrapper.py → py_data_engine-0.2.4/src/data_engine/ui/gui/app_binding.py +35 -16
  102. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/bootstrap.py +74 -105
  103. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/control_support.py +11 -29
  104. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/controllers/flows.py +229 -89
  105. py_data_engine-0.2.4/src/data_engine/ui/gui/controllers/runtime.py +488 -0
  106. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/helpers/inspection.py +7 -2
  107. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/__init__.py +0 -2
  108. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/logs.py +7 -3
  109. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/runtime_projection.py +1 -9
  110. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/workspace.py +0 -2
  111. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/workspace_binding.py +26 -5
  112. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/workspace_settings.py +121 -78
  113. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/runtime.py +1 -0
  114. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/support.py +3 -1
  115. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/surface.py +15 -0
  116. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/theme.py +26 -0
  117. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/widgets/panels.py +3 -0
  118. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/widgets/sidebar.py +1 -1
  119. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/widgets/steps.py +7 -0
  120. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/app.py +1 -1
  121. py_data_engine-0.2.2/src/data_engine/ui/tui/bootstrapper.py → py_data_engine-0.2.4/src/data_engine/ui/tui/app_binding.py +20 -20
  122. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/bootstrap.py +76 -94
  123. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/controllers/flows.py +77 -60
  124. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/controllers/runtime.py +68 -25
  125. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/support.py +1 -1
  126. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/__init__.py +5 -1
  127. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/actions.py +69 -10
  128. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/models.py +11 -5
  129. py_data_engine-0.2.4/src/data_engine/views/selection.py +69 -0
  130. {py_data_engine-0.2.2 → py_data_engine-0.2.4/src/py_data_engine.egg-info}/PKG-INFO +2 -1
  131. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/py_data_engine.egg-info/SOURCES.txt +19 -55
  132. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/py_data_engine.egg-info/requires.txt +1 -0
  133. py_data_engine-0.2.2/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb.html +0 -1124
  134. py_data_engine-0.2.2/src/data_engine/docs/html/objects.inv +0 -0
  135. py_data_engine-0.2.2/src/data_engine/docs/html/searchindex.js +0 -1
  136. py_data_engine-0.2.2/src/data_engine/helpers/duckdb.py +0 -980
  137. py_data_engine-0.2.2/src/data_engine/hosts/daemon/commands.py +0 -66
  138. py_data_engine-0.2.2/src/data_engine/hosts/daemon/runtime_commands.py +0 -188
  139. py_data_engine-0.2.2/src/data_engine/ui/gui/controllers/runtime.py +0 -273
  140. py_data_engine-0.2.2/tests/test_application.py +0 -1292
  141. py_data_engine-0.2.2/tests/test_authoring_helpers.py +0 -179
  142. py_data_engine-0.2.2/tests/test_authoring_services.py +0 -89
  143. py_data_engine-0.2.2/tests/test_builder.py +0 -1049
  144. py_data_engine-0.2.2/tests/test_cli.py +0 -593
  145. py_data_engine-0.2.2/tests/test_cli_helpers.py +0 -165
  146. py_data_engine-0.2.2/tests/test_daemon.py +0 -1925
  147. py_data_engine-0.2.2/tests/test_domain_actions.py +0 -90
  148. py_data_engine-0.2.2/tests/test_domain_catalog.py +0 -63
  149. py_data_engine-0.2.2/tests/test_domain_details.py +0 -107
  150. py_data_engine-0.2.2/tests/test_domain_errors.py +0 -25
  151. py_data_engine-0.2.2/tests/test_domain_inspection.py +0 -31
  152. py_data_engine-0.2.2/tests/test_domain_logs.py +0 -101
  153. py_data_engine-0.2.2/tests/test_domain_operations.py +0 -50
  154. py_data_engine-0.2.2/tests/test_domain_operator.py +0 -30
  155. py_data_engine-0.2.2/tests/test_domain_runs.py +0 -115
  156. py_data_engine-0.2.2/tests/test_domain_runtime.py +0 -126
  157. py_data_engine-0.2.2/tests/test_domain_support.py +0 -20
  158. py_data_engine-0.2.2/tests/test_domain_workspace.py +0 -136
  159. py_data_engine-0.2.2/tests/test_export_project_bundle_script.py +0 -152
  160. py_data_engine-0.2.2/tests/test_flow_module_compiler.py +0 -213
  161. py_data_engine-0.2.2/tests/test_flow_module_loader.py +0 -382
  162. py_data_engine-0.2.2/tests/test_helpers_duckdb.py +0 -907
  163. py_data_engine-0.2.2/tests/test_helpers_polars.py +0 -255
  164. py_data_engine-0.2.2/tests/test_integration.py +0 -744
  165. py_data_engine-0.2.2/tests/test_live_runtime_suite.py +0 -476
  166. py_data_engine-0.2.2/tests/test_local_settings.py +0 -69
  167. py_data_engine-0.2.2/tests/test_logs.py +0 -367
  168. py_data_engine-0.2.2/tests/test_platform_identity.py +0 -29
  169. py_data_engine-0.2.2/tests/test_project_ast_map.py +0 -156
  170. py_data_engine-0.2.2/tests/test_qt_ui.py +0 -2640
  171. py_data_engine-0.2.2/tests/test_reset_service.py +0 -194
  172. py_data_engine-0.2.2/tests/test_runtime_db.py +0 -456
  173. py_data_engine-0.2.2/tests/test_runtime_history_service.py +0 -254
  174. py_data_engine-0.2.2/tests/test_runtime_logging.py +0 -63
  175. py_data_engine-0.2.2/tests/test_scheduler_host.py +0 -105
  176. py_data_engine-0.2.2/tests/test_schema_helper.py +0 -194
  177. py_data_engine-0.2.2/tests/test_services.py +0 -699
  178. py_data_engine-0.2.2/tests/test_shared_state.py +0 -656
  179. py_data_engine-0.2.2/tests/test_smoke_data.py +0 -66
  180. py_data_engine-0.2.2/tests/test_sources.py +0 -263
  181. py_data_engine-0.2.2/tests/test_theme.py +0 -28
  182. py_data_engine-0.2.2/tests/test_tui.py +0 -752
  183. py_data_engine-0.2.2/tests/test_tui_widgets.py +0 -149
  184. py_data_engine-0.2.2/tests/test_ui_bootstrap.py +0 -457
  185. py_data_engine-0.2.2/tests/test_ui_models.py +0 -364
  186. py_data_engine-0.2.2/tests/test_ui_runtime_theme.py +0 -91
  187. py_data_engine-0.2.2/tests/test_ui_state.py +0 -83
  188. py_data_engine-0.2.2/tests/test_views_helpers.py +0 -409
  189. py_data_engine-0.2.2/tests/test_workspace_provisioning.py +0 -84
  190. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/LICENSE +0 -0
  191. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/README.md +0 -0
  192. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/setup.cfg +0 -0
  193. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/setup.py +0 -0
  194. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/__init__.py +0 -0
  195. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/application/__init__.py +0 -0
  196. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/application/catalog.py +0 -0
  197. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/application/details.py +0 -0
  198. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/application/workspace.py +0 -0
  199. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/authoring/__init__.py +0 -0
  200. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/authoring/services.py +0 -0
  201. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/core/__init__.py +0 -0
  202. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/core/flow.py +0 -0
  203. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/core/helpers.py +0 -0
  204. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/core/model.py +0 -0
  205. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/core/primitives.py +0 -0
  206. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/devtools/__init__.py +0 -0
  207. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/devtools/project_ast_map.py +0 -0
  208. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/devtools/smoke_data.py +0 -0
  209. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/__init__.py +0 -0
  210. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/api.rst.txt +0 -0
  211. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/app-runtime-and-workspaces.md.txt +0 -0
  212. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/authoring-flow-modules.md.txt +0 -0
  213. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/configuring-flows.md.txt +0 -0
  214. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/core-concepts.md.txt +0 -0
  215. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/database-methods.md.txt +0 -0
  216. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/flow-context.md.txt +0 -0
  217. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/guides/getting-started.md.txt +0 -0
  218. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_sources/index.rst.txt +0 -0
  219. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  220. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/base-stemmer.js +0 -0
  221. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/basic.css +0 -0
  222. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/badge_only.css +0 -0
  223. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  224. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  225. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  226. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  227. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  228. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  229. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  230. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  231. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  232. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  233. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  234. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff +0 -0
  235. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
  236. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  237. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  238. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff +0 -0
  239. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
  240. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/css/theme.css +0 -0
  241. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/custom.css +0 -0
  242. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/doctools.js +0 -0
  243. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/english-stemmer.js +0 -0
  244. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/file.png +0 -0
  245. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
  246. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  247. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
  248. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  249. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  250. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  251. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  252. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  253. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
  254. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  255. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
  256. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  257. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
  258. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  259. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
  260. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  261. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  262. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  263. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  264. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  265. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  266. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  267. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  268. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  269. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/jquery.js +0 -0
  270. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/js/badge_only.js +0 -0
  271. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/js/theme.js +0 -0
  272. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/js/versions.js +0 -0
  273. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/language_data.js +0 -0
  274. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/minus.png +0 -0
  275. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/plus.png +0 -0
  276. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/pygments.css +0 -0
  277. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/searchtools.js +0 -0
  278. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/html/_static/sphinx_highlight.js +0 -0
  279. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/_static/custom.css +0 -0
  280. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/api.rst +0 -0
  281. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/conf.py +0 -0
  282. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/app-runtime-and-workspaces.md +0 -0
  283. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/authoring-flow-modules.md +0 -0
  284. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/configuring-flows.md +0 -0
  285. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/core-concepts.md +0 -0
  286. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/database-methods.md +0 -0
  287. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/flow-context.md +0 -0
  288. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/guides/getting-started.md +0 -0
  289. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/docs/sphinx_source/index.rst +0 -0
  290. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/__init__.py +0 -0
  291. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/diagnostics.py +0 -0
  292. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/errors.py +0 -0
  293. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/inspection.py +0 -0
  294. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/logs.py +0 -0
  295. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/operator.py +0 -0
  296. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/runs.py +0 -0
  297. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/runtime.py +0 -0
  298. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/source_state.py +0 -0
  299. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/support.py +0 -0
  300. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/time.py +0 -0
  301. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/domain/workspace.py +0 -0
  302. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/flow_modules/__init__.py +0 -0
  303. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/flow_modules/flow_module_loader.py +0 -0
  304. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/helpers/schema.py +0 -0
  305. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/__init__.py +0 -0
  306. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/__init__.py +0 -0
  307. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/bootstrap.py +0 -0
  308. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/client.py +0 -0
  309. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/constants.py +0 -0
  310. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/entrypoints.py +0 -0
  311. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/lifecycle.py +0 -0
  312. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/ownership.py +0 -0
  313. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/shared_state.py +0 -0
  314. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/daemon/state_sync.py +0 -0
  315. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/hosts/scheduler.py +0 -0
  316. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/__init__.py +0 -0
  317. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/interpreters.py +0 -0
  318. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/local_settings.py +0 -0
  319. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/paths.py +0 -0
  320. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/processes.py +0 -0
  321. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/theme.py +0 -0
  322. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/workspace_models.py +0 -0
  323. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/platform/workspace_policy.py +0 -0
  324. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/__init__.py +0 -0
  325. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/engine.py +0 -0
  326. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/__init__.py +0 -0
  327. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/app.py +0 -0
  328. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/context.py +0 -0
  329. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/continuous.py +0 -0
  330. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/grouped.py +0 -0
  331. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/logging.py +0 -0
  332. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/polling.py +0 -0
  333. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/execution/runner.py +0 -0
  334. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/file_watch.py +0 -0
  335. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/ledger_models.py +0 -0
  336. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/runtime_cache_store.py +0 -0
  337. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/runtime_control_store.py +0 -0
  338. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/runtime_db.py +0 -0
  339. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/shared_state.py +0 -0
  340. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/sqlite_store.py +0 -0
  341. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/runtime/stop.py +0 -0
  342. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/daemon.py +0 -0
  343. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/daemon_state.py +0 -0
  344. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/flow_execution.py +0 -0
  345. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/ledger.py +0 -0
  346. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/logs.py +0 -0
  347. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/reset.py +0 -0
  348. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/runtime_history.py +0 -0
  349. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/runtime_ports.py +0 -0
  350. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/settings.py +0 -0
  351. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/shared_state.py +0 -0
  352. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/theme.py +0 -0
  353. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/workspace_provisioning.py +0 -0
  354. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/services/workspaces.py +0 -0
  355. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/__init__.py +0 -0
  356. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/__init__.py +0 -0
  357. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/commands_doctor.py +0 -0
  358. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/commands_run.py +0 -0
  359. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/commands_start.py +0 -0
  360. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/commands_workspace.py +0 -0
  361. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/dependencies.py +0 -0
  362. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/cli/parser.py +0 -0
  363. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/__init__.py +0 -0
  364. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/cache_models.py +0 -0
  365. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/controllers/__init__.py +0 -0
  366. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/dialogs/__init__.py +0 -0
  367. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/dialogs/messages.py +0 -0
  368. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/dialogs/previews.py +0 -0
  369. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/helpers/__init__.py +0 -0
  370. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/helpers/lifecycle.py +0 -0
  371. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/helpers/scroll.py +0 -0
  372. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/helpers/theming.py +0 -0
  373. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/dark_light.svg +0 -0
  374. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/documentation.svg +0 -0
  375. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/failed.svg +0 -0
  376. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/group.svg +0 -0
  377. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/home.svg +0 -0
  378. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/manual.svg +0 -0
  379. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/poll.svg +0 -0
  380. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/schedule.svg +0 -0
  381. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/settings.svg +0 -0
  382. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/started.svg +0 -0
  383. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/success.svg +0 -0
  384. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons/view-log.svg +0 -0
  385. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/icons.py +0 -0
  386. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/launcher.py +0 -0
  387. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/docs.py +0 -0
  388. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/sidebar.py +0 -0
  389. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/presenters/steps.py +0 -0
  390. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/preview_models.py +0 -0
  391. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/render_support.py +0 -0
  392. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/rendering/__init__.py +0 -0
  393. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/rendering/artifacts.py +0 -0
  394. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/rendering/icons.py +0 -0
  395. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/state_support.py +0 -0
  396. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/widgets/__init__.py +0 -0
  397. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/widgets/config.py +0 -0
  398. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/gui/widgets/logs.py +0 -0
  399. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/__init__.py +0 -0
  400. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/controllers/__init__.py +0 -0
  401. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/runtime.py +0 -0
  402. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/state_support.py +0 -0
  403. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/theme.py +0 -0
  404. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/ui/tui/widgets.py +0 -0
  405. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/artifacts.py +0 -0
  406. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/flow_display.py +0 -0
  407. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/logs.py +0 -0
  408. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/presentation.py +0 -0
  409. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/runs.py +0 -0
  410. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/state.py +0 -0
  411. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/status.py +0 -0
  412. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/data_engine/views/text.py +0 -0
  413. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/py_data_engine.egg-info/dependency_links.txt +0 -0
  414. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/py_data_engine.egg-info/entry_points.txt +0 -0
  415. {py_data_engine-0.2.2 → py_data_engine-0.2.4}/src/py_data_engine.egg-info/top_level.txt +0 -0
@@ -0,0 +1,4 @@
1
+ prune tests
2
+ prune data
3
+ prune data2
4
+ prune workspaces
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: py-data-engine
3
- Version: 0.2.2
3
+ Version: 0.2.4
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
@@ -66,6 +66,7 @@ Requires-Dist: pytest-cov>=7.0.0; extra == "dev"
66
66
  Requires-Dist: ruff>=0.15.10; extra == "dev"
67
67
  Requires-Dist: Sphinx>=9.1.0; extra == "dev"
68
68
  Requires-Dist: sphinx_rtd_theme>=3.1.0; extra == "dev"
69
+ Requires-Dist: viztracer>=1.1.0; extra == "dev"
69
70
  Dynamic: license-file
70
71
 
71
72
  # Data Engine
@@ -98,6 +98,7 @@ dev = [
98
98
  "ruff>=0.15.10",
99
99
  "Sphinx>=9.1.0",
100
100
  "sphinx_rtd_theme>=3.1.0",
101
+ "viztracer>=1.1.0",
101
102
  ]
102
103
 
103
104
  [tool.setuptools]
@@ -20,6 +20,7 @@ class ActionStateApplication:
20
20
  has_automated_flows: bool,
21
21
  workspace_available: bool = True,
22
22
  selected_run_group_present: bool = False,
23
+ local_request_pending: bool = False,
23
24
  ) -> OperatorActionContext:
24
25
  """Return one operator action context from current runtime and selection state."""
25
26
  selected_flow = SelectedFlowState.from_runtime(
@@ -36,6 +37,7 @@ class ActionStateApplication:
36
37
  has_automated_flows=has_automated_flows,
37
38
  workspace_available=workspace_available,
38
39
  selected_run_group_present=selected_run_group_present,
40
+ local_request_pending=local_request_pending,
39
41
  )
40
42
 
41
43
 
@@ -68,7 +68,7 @@ class OperatorControlApplication:
68
68
  requested=False,
69
69
  status_text=f"{selected_flow_name} is invalid and cannot run.",
70
70
  )
71
- if selected_flow_group_active or runtime_session.manual_run_active:
71
+ if selected_flow_group_active:
72
72
  return OperatorActionResult(requested=False)
73
73
  if not runtime_session.control_available:
74
74
  return OperatorActionResult(requested=False, status_text=blocked_status_text)
@@ -128,27 +128,27 @@ class OperatorControlApplication:
128
128
  timeout: float = 2.0,
129
129
  ) -> OperatorActionResult:
130
130
  """Validate and request stop for the engine or selected manual flow."""
131
- if runtime_session.runtime_active:
132
- result = self.runtime_application.stop_engine(paths, timeout=timeout)
131
+ manual_flow_name = runtime_session.active_manual_runs.get(selected_flow_group)
132
+ if manual_flow_name is None and len(runtime_session.manual_runs) == 1:
133
+ manual_flow_name = runtime_session.manual_runs[0].flow_name
134
+ if manual_flow_name is not None:
135
+ if not runtime_session.control_available:
136
+ return OperatorActionResult(requested=False, status_text=blocked_status_text)
137
+ result = self.runtime_application.stop_flow(paths, name=manual_flow_name, timeout=timeout)
133
138
  if not result.ok:
134
139
  return OperatorActionResult(
135
140
  requested=False,
136
- error_text=_verbose_action_error("stop the engine", result.error),
141
+ error_text=_verbose_action_error(f"stop {manual_flow_name}", result.error),
137
142
  )
138
- return OperatorActionResult(requested=True, sync_after=True, status_text="Stopping engine...")
139
- if runtime_session.manual_run_active:
140
- if not runtime_session.control_available:
141
- return OperatorActionResult(requested=False, status_text=blocked_status_text)
142
- flow_name = runtime_session.active_manual_runs.get(selected_flow_group)
143
- if flow_name is None:
144
- return OperatorActionResult(requested=False)
145
- result = self.runtime_application.stop_flow(paths, name=flow_name, timeout=timeout)
143
+ return OperatorActionResult(requested=True, sync_after=True, status_text="Stopping selected flow...")
144
+ if runtime_session.runtime_active:
145
+ result = self.runtime_application.stop_engine(paths, timeout=timeout)
146
146
  if not result.ok:
147
147
  return OperatorActionResult(
148
148
  requested=False,
149
- error_text=_verbose_action_error(f"stop {flow_name}", result.error),
149
+ error_text=_verbose_action_error("stop the engine", result.error),
150
150
  )
151
- return OperatorActionResult(requested=True, sync_after=True, status_text="Stopping selected flow...")
151
+ return OperatorActionResult(requested=True, sync_after=True, status_text="Stopping engine...")
152
152
  return OperatorActionResult(requested=False)
153
153
 
154
154
  def request_control(self, daemon_manager: WorkspaceDaemonManager) -> OperatorActionResult:
@@ -19,6 +19,7 @@ from data_engine.domain import (
19
19
  )
20
20
  from data_engine.domain.catalog import FlowCatalogLike
21
21
  from data_engine.hosts.daemon.manager import WorkspaceDaemonManager
22
+ from data_engine.platform.instrumentation import dev_instrumentation_enabled, new_request_id, timed_operation
22
23
  from data_engine.platform.workspace_models import WorkspacePaths, authored_workspace_is_available
23
24
  from data_engine.services import DaemonService, DaemonStateService, SharedStateService
24
25
 
@@ -57,12 +58,13 @@ class RuntimeSnapshotPresentation:
57
58
 
58
59
  operation_tracker: OperationSessionState
59
60
  flow_states: dict[str, str]
61
+ active_runtime_flow_names: tuple[str, ...] = ()
60
62
 
61
63
  def signature_for(self, runtime_session: RuntimeSessionState) -> tuple[object, ...]:
62
64
  """Return a stable signature for render-diff decisions."""
63
65
  return (
64
66
  tuple(sorted(self.flow_states.items())),
65
- tuple(sorted(runtime_session.active_runtime_flow_names)),
67
+ tuple(sorted(self.active_runtime_flow_names or runtime_session.active_runtime_flow_names)),
66
68
  tuple(sorted(runtime_session.active_manual_runs.items())),
67
69
  runtime_session.workspace_owned,
68
70
  runtime_session.leased_by_machine_id,
@@ -133,7 +135,7 @@ class RuntimeApplication:
133
135
  ) -> RuntimeSyncState:
134
136
  """Return normalized daemon/runtime state for one host surface."""
135
137
  snapshot = self.daemon_state_service.sync(daemon_manager)
136
- if snapshot.source == "lease":
138
+ if snapshot.source in {"lease", "cached"} and not snapshot.workspace_owned:
137
139
  self.shared_state_service.hydrate_local_runtime(paths, runtime_ledger)
138
140
  daemon_status = DaemonStatusState.from_snapshot(snapshot)
139
141
  return RuntimeSyncState(
@@ -184,7 +186,18 @@ class RuntimeApplication:
184
186
  )
185
187
  for flow_name in list(states):
186
188
  tracker = tracker.normalize_completed(flow_name)
187
- for flow_name in runtime_session.active_runtime_flow_names:
189
+ active_runtime_flow_names = runtime_session.active_runtime_flow_names
190
+ if runtime_session.runtime_stopping:
191
+ active_runtime_flow_names = tuple(
192
+ flow_name
193
+ for flow_name in runtime_session.active_runtime_flow_names
194
+ if (
195
+ (flow_state := tracker.state_for(flow_name)) is None
196
+ or not flow_state.has_observed_activity
197
+ or flow_state.has_running_rows
198
+ )
199
+ )
200
+ for flow_name in active_runtime_flow_names:
188
201
  card = cards_by_name.get(flow_name)
189
202
  if card is None or states.get(flow_name) == "failed":
190
203
  continue
@@ -199,6 +212,7 @@ class RuntimeApplication:
199
212
  return RuntimeSnapshotPresentation(
200
213
  operation_tracker=tracker,
201
214
  flow_states=states,
215
+ active_runtime_flow_names=active_runtime_flow_names,
202
216
  )
203
217
 
204
218
  def plan_flow_state_refresh(
@@ -366,13 +380,20 @@ class RuntimeApplication:
366
380
  *,
367
381
  timeout: float = 0.0,
368
382
  ) -> DaemonCommandResult:
369
- spawn_result = self.spawn_daemon(paths)
370
- if not spawn_result.ok:
371
- return DaemonCommandResult(
372
- ok=False,
373
- error=_daemon_command_error_text(payload, spawn_result.error),
374
- )
375
- return self._request(paths, payload, timeout=timeout)
383
+ request_payload = self._instrumented_payload(payload)
384
+ with timed_operation(
385
+ self._client_timing_log_path(paths),
386
+ scope="client.daemon",
387
+ event=f"spawn_and_request:{request_payload.get('command', 'unknown')}",
388
+ fields={"request_id": request_payload.get("request_id"), "workspace": paths.workspace_id},
389
+ ):
390
+ spawn_result = self.spawn_daemon(paths)
391
+ if not spawn_result.ok:
392
+ return DaemonCommandResult(
393
+ ok=False,
394
+ error=_daemon_command_error_text(request_payload, spawn_result.error),
395
+ )
396
+ return self._request(paths, request_payload, timeout=timeout)
376
397
 
377
398
  def _request(
378
399
  self,
@@ -381,17 +402,38 @@ class RuntimeApplication:
381
402
  *,
382
403
  timeout: float = 0.0,
383
404
  ) -> DaemonCommandResult:
384
- try:
385
- response = self.daemon_service.request(paths, payload, timeout=timeout)
386
- except self.daemon_service.client_error_type as exc:
387
- return DaemonCommandResult(ok=False, error=_daemon_command_error_text(payload, exc))
388
- if not response.get("ok"):
389
- return DaemonCommandResult(
390
- ok=False,
391
- error=_daemon_command_error_text(payload, response.get("error")),
392
- payload=response,
393
- )
394
- return DaemonCommandResult(ok=True, payload=response)
405
+ request_payload = self._instrumented_payload(payload)
406
+ with timed_operation(
407
+ self._client_timing_log_path(paths),
408
+ scope="client.daemon",
409
+ event=str(request_payload.get("command", "unknown")),
410
+ fields={"request_id": request_payload.get("request_id"), "timeout": timeout, "workspace": paths.workspace_id},
411
+ ):
412
+ try:
413
+ response = self.daemon_service.request(paths, request_payload, timeout=timeout)
414
+ except self.daemon_service.client_error_type as exc:
415
+ return DaemonCommandResult(ok=False, error=_daemon_command_error_text(request_payload, exc))
416
+ if not response.get("ok"):
417
+ return DaemonCommandResult(
418
+ ok=False,
419
+ error=_daemon_command_error_text(request_payload, response.get("error")),
420
+ payload=response,
421
+ )
422
+ return DaemonCommandResult(ok=True, payload=response)
423
+
424
+ @staticmethod
425
+ def _client_timing_log_path(paths: WorkspacePaths):
426
+ if not paths.workspace_configured:
427
+ return None
428
+ return paths.runtime_state_dir / "client_timing.log"
429
+
430
+ @staticmethod
431
+ def _instrumented_payload(payload: dict[str, Any]) -> dict[str, Any]:
432
+ if "request_id" in payload or not dev_instrumentation_enabled():
433
+ return dict(payload)
434
+ instrumented = dict(payload)
435
+ instrumented["request_id"] = new_request_id(str(payload.get("command", "cmd")))
436
+ return instrumented
395
437
 
396
438
 
397
439
  def _daemon_command_error_text(payload: dict[str, Any], detail: object | None) -> str:
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import inspect
5
6
  from pathlib import Path
6
7
  from typing import TYPE_CHECKING
7
8
 
@@ -34,6 +35,51 @@ def _resolve_authoring_services(
34
35
  )
35
36
 
36
37
 
38
+ def _infer_authoring_flow_origin() -> tuple[str, Path] | None:
39
+ """Return ``(flow_name, workspace_root)`` for direct authored module execution.
40
+
41
+ This is a narrow authoring convenience for calls such as ``build().preview()``
42
+ executed directly inside ``workspaces/<id>/flow_modules/*.py``. It should not
43
+ affect compiled runtime execution or ad hoc inline flows outside a workspace
44
+ ``flow_modules`` tree.
45
+ """
46
+ current = inspect.currentframe()
47
+ if current is None:
48
+ return None
49
+ try:
50
+ frame = current.f_back
51
+ while frame is not None:
52
+ filename = frame.f_code.co_filename
53
+ try:
54
+ path = Path(filename).resolve()
55
+ except (OSError, RuntimeError):
56
+ frame = frame.f_back
57
+ continue
58
+ if path.name == __file__:
59
+ frame = frame.f_back
60
+ continue
61
+ if path.parent.name == "flow_modules":
62
+ return path.stem, path.parent.parent.resolve()
63
+ frame = frame.f_back
64
+ finally:
65
+ del current
66
+ return None
67
+
68
+
69
+ def _with_inferred_authoring_metadata(flow: "Flow") -> "Flow":
70
+ """Fill in missing direct-authoring metadata when executing from flow_modules."""
71
+ if flow.name is not None and flow._workspace_root is not None:
72
+ return flow
73
+ inferred = _infer_authoring_flow_origin()
74
+ if inferred is None:
75
+ return flow
76
+ inferred_name, inferred_workspace_root = inferred
77
+ return flow._clone(
78
+ name=flow.name or inferred_name,
79
+ _workspace_root=flow._workspace_root or inferred_workspace_root,
80
+ )
81
+
82
+
37
83
  class Flow(_CoreFlow):
38
84
  """Public authoring flow with execution conveniences layered over core definitions."""
39
85
 
@@ -57,11 +103,12 @@ class Flow(_CoreFlow):
57
103
  list[FlowContext]
58
104
  One context per executed source.
59
105
  """
106
+ flow = _with_inferred_authoring_metadata(self)
60
107
  service = _resolve_authoring_services(
61
108
  authoring_services=authoring_services,
62
109
  runtime_execution_service=runtime_execution_service,
63
110
  ).runtime_execution_service
64
- return service.run_once(self)
111
+ return service.run_once(flow)
65
112
 
66
113
  def preview(
67
114
  self,
@@ -96,35 +143,13 @@ class Flow(_CoreFlow):
96
143
 
97
144
  if in_compiled_flow_module_context():
98
145
  raise FlowValidationError("preview() is not available inside compiled flow modules.")
146
+ flow = _with_inferred_authoring_metadata(self)
99
147
  normalized_use = _validate_slot_name(method_name="preview", slot_name="use", value=use)
100
148
  service = _resolve_authoring_services(
101
149
  authoring_services=authoring_services,
102
150
  runtime_execution_service=runtime_execution_service,
103
151
  ).runtime_execution_service
104
- return service.preview(self, use=normalized_use)
105
-
106
- def show(self) -> object:
107
- """Run this flow once and return the single final current value.
108
-
109
- Returns
110
- -------
111
- object
112
- Final ``context.current`` value.
113
-
114
- Raises
115
- ------
116
- FlowValidationError
117
- If called from a compiled flow module or the flow produces anything
118
- other than one result.
119
- """
120
- from data_engine.flow_modules.flow_module_loader import in_compiled_flow_module_context
121
-
122
- if in_compiled_flow_module_context():
123
- raise FlowValidationError("show() is not available inside compiled flow modules.")
124
- results = self.run_once()
125
- if len(results) != 1:
126
- raise FlowValidationError(f"show() requires exactly one result, found {len(results)}.")
127
- return results[0].current
152
+ return service.preview(flow, use=normalized_use)
128
153
 
129
154
  def run(
130
155
  self,
@@ -146,11 +171,12 @@ class Flow(_CoreFlow):
146
171
  list[FlowContext]
147
172
  Completed contexts collected before the runtime exits.
148
173
  """
174
+ flow = _with_inferred_authoring_metadata(self)
149
175
  service = _resolve_authoring_services(
150
176
  authoring_services=authoring_services,
151
177
  runtime_execution_service=runtime_execution_service,
152
178
  ).runtime_execution_service
153
- return service.run_continuous(self)
179
+ return service.run_continuous(flow)
154
180
 
155
181
 
156
182
  def load_flow(
@@ -13,7 +13,7 @@
13
13
 
14
14
  <script src="../../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../../_static/documentation_options.js?v=000c92bf"></script>
16
+ <script src="../../../_static/documentation_options.js?v=6ffd866b"></script>
17
17
  <script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../../_static/js/theme.js"></script>
@@ -86,6 +86,7 @@
86
86
 
87
87
  <span class="kn">from</span><span class="w"> </span><span class="nn">__future__</span><span class="w"> </span><span class="kn">import</span> <span class="n">annotations</span>
88
88
 
89
+ <span class="kn">import</span><span class="w"> </span><span class="nn">inspect</span>
89
90
  <span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
90
91
  <span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">TYPE_CHECKING</span>
91
92
 
@@ -118,6 +119,51 @@
118
119
  <span class="p">)</span>
119
120
 
120
121
 
122
+ <span class="k">def</span><span class="w"> </span><span class="nf">_infer_authoring_flow_origin</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Path</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
123
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Return ``(flow_name, workspace_root)`` for direct authored module execution.</span>
124
+
125
+ <span class="sd"> This is a narrow authoring convenience for calls such as ``build().preview()``</span>
126
+ <span class="sd"> executed directly inside ``workspaces/&lt;id&gt;/flow_modules/*.py``. It should not</span>
127
+ <span class="sd"> affect compiled runtime execution or ad hoc inline flows outside a workspace</span>
128
+ <span class="sd"> ``flow_modules`` tree.</span>
129
+ <span class="sd"> &quot;&quot;&quot;</span>
130
+ <span class="n">current</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">currentframe</span><span class="p">()</span>
131
+ <span class="k">if</span> <span class="n">current</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
132
+ <span class="k">return</span> <span class="kc">None</span>
133
+ <span class="k">try</span><span class="p">:</span>
134
+ <span class="n">frame</span> <span class="o">=</span> <span class="n">current</span><span class="o">.</span><span class="n">f_back</span>
135
+ <span class="k">while</span> <span class="n">frame</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
136
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">f_code</span><span class="o">.</span><span class="n">co_filename</span>
137
+ <span class="k">try</span><span class="p">:</span>
138
+ <span class="n">path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span><span class="o">.</span><span class="n">resolve</span><span class="p">()</span>
139
+ <span class="k">except</span> <span class="p">(</span><span class="ne">OSError</span><span class="p">,</span> <span class="ne">RuntimeError</span><span class="p">):</span>
140
+ <span class="n">frame</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">f_back</span>
141
+ <span class="k">continue</span>
142
+ <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="vm">__file__</span><span class="p">:</span>
143
+ <span class="n">frame</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">f_back</span>
144
+ <span class="k">continue</span>
145
+ <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;flow_modules&quot;</span><span class="p">:</span>
146
+ <span class="k">return</span> <span class="n">path</span><span class="o">.</span><span class="n">stem</span><span class="p">,</span> <span class="n">path</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">resolve</span><span class="p">()</span>
147
+ <span class="n">frame</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">f_back</span>
148
+ <span class="k">finally</span><span class="p">:</span>
149
+ <span class="k">del</span> <span class="n">current</span>
150
+ <span class="k">return</span> <span class="kc">None</span>
151
+
152
+
153
+ <span class="k">def</span><span class="w"> </span><span class="nf">_with_inferred_authoring_metadata</span><span class="p">(</span><span class="n">flow</span><span class="p">:</span> <span class="s2">&quot;Flow&quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;Flow&quot;</span><span class="p">:</span>
154
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Fill in missing direct-authoring metadata when executing from flow_modules.&quot;&quot;&quot;</span>
155
+ <span class="k">if</span> <span class="n">flow</span><span class="o">.</span><span class="n">name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">flow</span><span class="o">.</span><span class="n">_workspace_root</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
156
+ <span class="k">return</span> <span class="n">flow</span>
157
+ <span class="n">inferred</span> <span class="o">=</span> <span class="n">_infer_authoring_flow_origin</span><span class="p">()</span>
158
+ <span class="k">if</span> <span class="n">inferred</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
159
+ <span class="k">return</span> <span class="n">flow</span>
160
+ <span class="n">inferred_name</span><span class="p">,</span> <span class="n">inferred_workspace_root</span> <span class="o">=</span> <span class="n">inferred</span>
161
+ <span class="k">return</span> <span class="n">flow</span><span class="o">.</span><span class="n">_clone</span><span class="p">(</span>
162
+ <span class="n">name</span><span class="o">=</span><span class="n">flow</span><span class="o">.</span><span class="n">name</span> <span class="ow">or</span> <span class="n">inferred_name</span><span class="p">,</span>
163
+ <span class="n">_workspace_root</span><span class="o">=</span><span class="n">flow</span><span class="o">.</span><span class="n">_workspace_root</span> <span class="ow">or</span> <span class="n">inferred_workspace_root</span><span class="p">,</span>
164
+ <span class="p">)</span>
165
+
166
+
121
167
  <div class="viewcode-block" id="Flow">
122
168
  <a class="viewcode-back" href="../../../api.html#data_engine.authoring.flow.Flow">[docs]</a>
123
169
  <span class="k">class</span><span class="w"> </span><span class="nc">Flow</span><span class="p">(</span><span class="n">_CoreFlow</span><span class="p">):</span>
@@ -145,11 +191,12 @@
145
191
  <span class="sd"> list[FlowContext]</span>
146
192
  <span class="sd"> One context per executed source.</span>
147
193
  <span class="sd"> &quot;&quot;&quot;</span>
194
+ <span class="n">flow</span> <span class="o">=</span> <span class="n">_with_inferred_authoring_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
148
195
  <span class="n">service</span> <span class="o">=</span> <span class="n">_resolve_authoring_services</span><span class="p">(</span>
149
196
  <span class="n">authoring_services</span><span class="o">=</span><span class="n">authoring_services</span><span class="p">,</span>
150
197
  <span class="n">runtime_execution_service</span><span class="o">=</span><span class="n">runtime_execution_service</span><span class="p">,</span>
151
198
  <span class="p">)</span><span class="o">.</span><span class="n">runtime_execution_service</span>
152
- <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">run_once</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
199
+ <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">run_once</span><span class="p">(</span><span class="n">flow</span><span class="p">)</span></div>
153
200
 
154
201
 
155
202
  <div class="viewcode-block" id="Flow.preview">
@@ -187,38 +234,13 @@
187
234
 
188
235
  <span class="k">if</span> <span class="n">in_compiled_flow_module_context</span><span class="p">():</span>
189
236
  <span class="k">raise</span> <span class="n">FlowValidationError</span><span class="p">(</span><span class="s2">&quot;preview() is not available inside compiled flow modules.&quot;</span><span class="p">)</span>
237
+ <span class="n">flow</span> <span class="o">=</span> <span class="n">_with_inferred_authoring_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
190
238
  <span class="n">normalized_use</span> <span class="o">=</span> <span class="n">_validate_slot_name</span><span class="p">(</span><span class="n">method_name</span><span class="o">=</span><span class="s2">&quot;preview&quot;</span><span class="p">,</span> <span class="n">slot_name</span><span class="o">=</span><span class="s2">&quot;use&quot;</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">use</span><span class="p">)</span>
191
239
  <span class="n">service</span> <span class="o">=</span> <span class="n">_resolve_authoring_services</span><span class="p">(</span>
192
240
  <span class="n">authoring_services</span><span class="o">=</span><span class="n">authoring_services</span><span class="p">,</span>
193
241
  <span class="n">runtime_execution_service</span><span class="o">=</span><span class="n">runtime_execution_service</span><span class="p">,</span>
194
242
  <span class="p">)</span><span class="o">.</span><span class="n">runtime_execution_service</span>
195
- <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">preview</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">use</span><span class="o">=</span><span class="n">normalized_use</span><span class="p">)</span></div>
196
-
197
-
198
- <div class="viewcode-block" id="Flow.show">
199
- <a class="viewcode-back" href="../../../api.html#data_engine.authoring.flow.Flow.show">[docs]</a>
200
- <span class="k">def</span><span class="w"> </span><span class="nf">show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">object</span><span class="p">:</span>
201
- <span class="w"> </span><span class="sd">&quot;&quot;&quot;Run this flow once and return the single final current value.</span>
202
-
203
- <span class="sd"> Returns</span>
204
- <span class="sd"> -------</span>
205
- <span class="sd"> object</span>
206
- <span class="sd"> Final ``context.current`` value.</span>
207
-
208
- <span class="sd"> Raises</span>
209
- <span class="sd"> ------</span>
210
- <span class="sd"> FlowValidationError</span>
211
- <span class="sd"> If called from a compiled flow module or the flow produces anything</span>
212
- <span class="sd"> other than one result.</span>
213
- <span class="sd"> &quot;&quot;&quot;</span>
214
- <span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.flow_modules.flow_module_loader</span><span class="w"> </span><span class="kn">import</span> <span class="n">in_compiled_flow_module_context</span>
215
-
216
- <span class="k">if</span> <span class="n">in_compiled_flow_module_context</span><span class="p">():</span>
217
- <span class="k">raise</span> <span class="n">FlowValidationError</span><span class="p">(</span><span class="s2">&quot;show() is not available inside compiled flow modules.&quot;</span><span class="p">)</span>
218
- <span class="n">results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">run_once</span><span class="p">()</span>
219
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">results</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
220
- <span class="k">raise</span> <span class="n">FlowValidationError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;show() requires exactly one result, found </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">results</span><span class="p">)</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
221
- <span class="k">return</span> <span class="n">results</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">current</span></div>
243
+ <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">preview</span><span class="p">(</span><span class="n">flow</span><span class="p">,</span> <span class="n">use</span><span class="o">=</span><span class="n">normalized_use</span><span class="p">)</span></div>
222
244
 
223
245
 
224
246
  <div class="viewcode-block" id="Flow.run">
@@ -243,11 +265,12 @@
243
265
  <span class="sd"> list[FlowContext]</span>
244
266
  <span class="sd"> Completed contexts collected before the runtime exits.</span>
245
267
  <span class="sd"> &quot;&quot;&quot;</span>
268
+ <span class="n">flow</span> <span class="o">=</span> <span class="n">_with_inferred_authoring_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
246
269
  <span class="n">service</span> <span class="o">=</span> <span class="n">_resolve_authoring_services</span><span class="p">(</span>
247
270
  <span class="n">authoring_services</span><span class="o">=</span><span class="n">authoring_services</span><span class="p">,</span>
248
271
  <span class="n">runtime_execution_service</span><span class="o">=</span><span class="n">runtime_execution_service</span><span class="p">,</span>
249
272
  <span class="p">)</span><span class="o">.</span><span class="n">runtime_execution_service</span>
250
- <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">run_continuous</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
273
+ <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">run_continuous</span><span class="p">(</span><span class="n">flow</span><span class="p">)</span></div>
251
274
  </div>
252
275
 
253
276
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  <script src="../../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../../_static/documentation_options.js?v=000c92bf"></script>
16
+ <script src="../../../_static/documentation_options.js?v=6ffd866b"></script>
17
17
  <script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../../_static/js/theme.js"></script>
@@ -13,7 +13,7 @@
13
13
 
14
14
  <script src="../../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../../_static/documentation_options.js?v=000c92bf"></script>
16
+ <script src="../../../_static/documentation_options.js?v=6ffd866b"></script>
17
17
  <script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../../_static/js/theme.js"></script>
@@ -13,7 +13,7 @@
13
13
 
14
14
  <script src="../../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../../_static/documentation_options.js?v=000c92bf"></script>
16
+ <script src="../../../_static/documentation_options.js?v=6ffd866b"></script>
17
17
  <script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../../_static/js/theme.js"></script>