py-data-engine 0.2.2__tar.gz → 0.2.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 (401) hide show
  1. {py_data_engine-0.2.2/src/py_data_engine.egg-info → py_data_engine-0.2.3}/PKG-INFO +2 -1
  2. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/pyproject.toml +1 -0
  3. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/application/actions.py +2 -0
  4. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/application/control.py +14 -14
  5. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/application/runtime.py +63 -21
  6. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/authoring/flow.html +1 -1
  7. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/core/flow.html +1 -1
  8. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/core/model.html +1 -1
  9. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/core/primitives.html +1 -1
  10. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb.html +1 -1
  11. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/helpers/polars.html +512 -1
  12. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/helpers/schema.html +1 -1
  13. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/hosts/scheduler.html +1 -1
  14. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/runtime/engine.html +1 -1
  15. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/grouped.html +1 -1
  16. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/single.html +41 -12
  17. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/runtime/file_watch.html +1 -1
  18. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/runtime/stop.html +1 -1
  19. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/daemon.html +1 -1
  20. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/daemon_state.html +1 -1
  21. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/flow_catalog.html +10 -1
  22. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/flow_execution.html +1 -1
  23. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/ledger.html +1 -1
  24. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/logs.html +1 -1
  25. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/runtime_binding.html +9 -1
  26. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/runtime_execution.html +10 -2
  27. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/runtime_history.html +1 -1
  28. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/settings.html +1 -1
  29. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/shared_state.html +1 -1
  30. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/theme.html +1 -1
  31. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/workspace_provisioning.html +1 -1
  32. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/data_engine/services/workspaces.html +1 -1
  33. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_modules/index.html +1 -1
  34. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/project-inventory.md.txt +252 -4
  35. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/project-map.md.txt +16 -16
  36. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/recipes.md.txt +52 -0
  37. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/documentation_options.js +1 -1
  38. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/api.html +315 -6
  39. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/genindex.html +22 -4
  40. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/app-runtime-and-workspaces.html +1 -1
  41. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/authoring-flow-modules.html +1 -1
  42. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/configuring-flows.html +1 -1
  43. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/core-concepts.html +1 -1
  44. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/database-methods.html +1 -1
  45. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/duckdb-helpers.html +1 -1
  46. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/flow-context.html +1 -1
  47. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/flow-methods.html +1 -1
  48. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/getting-started.html +1 -1
  49. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/project-inventory.html +403 -5
  50. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/project-map.html +50 -50
  51. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/guides/recipes.html +53 -1
  52. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/index.html +3 -1
  53. py_data_engine-0.2.3/src/data_engine/docs/html/objects.inv +0 -0
  54. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/py-modindex.html +1 -1
  55. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/search.html +1 -1
  56. py_data_engine-0.2.3/src/data_engine/docs/html/searchindex.js +1 -0
  57. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/project-inventory.md +252 -4
  58. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/project-map.md +16 -16
  59. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/recipes.md +52 -0
  60. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/actions.py +1 -0
  61. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/catalog.py +2 -0
  62. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/details.py +2 -0
  63. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/operations.py +13 -0
  64. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/flow_modules/flow_module_compiler.py +39 -21
  65. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/helpers/__init__.py +4 -0
  66. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/helpers/polars.py +493 -0
  67. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/app.py +36 -2
  68. py_data_engine-0.2.3/src/data_engine/hosts/daemon/commands.py +76 -0
  69. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/composition.py +17 -6
  70. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/manager.py +86 -69
  71. py_data_engine-0.2.3/src/data_engine/hosts/daemon/runtime_commands.py +234 -0
  72. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/runtime_control.py +5 -2
  73. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/server.py +42 -8
  74. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/identity.py +1 -1
  75. py_data_engine-0.2.3/src/data_engine/platform/instrumentation.py +184 -0
  76. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/single.py +40 -11
  77. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/flow_catalog.py +9 -0
  78. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/runtime_binding.py +5 -0
  79. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/runtime_execution.py +9 -1
  80. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/app.py +6 -0
  81. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/bootstrapper.py +15 -0
  82. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/control_support.py +12 -26
  83. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/controllers/flows.py +180 -54
  84. py_data_engine-0.2.3/src/data_engine/ui/gui/controllers/runtime.py +461 -0
  85. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/workspace_binding.py +13 -0
  86. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/workspace_settings.py +141 -78
  87. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/runtime.py +1 -0
  88. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/surface.py +15 -0
  89. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/theme.py +26 -0
  90. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/widgets/panels.py +3 -0
  91. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/widgets/sidebar.py +1 -1
  92. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/widgets/steps.py +7 -0
  93. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/actions.py +35 -9
  94. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/models.py +3 -0
  95. {py_data_engine-0.2.2 → py_data_engine-0.2.3/src/py_data_engine.egg-info}/PKG-INFO +2 -1
  96. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/py_data_engine.egg-info/SOURCES.txt +2 -0
  97. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/py_data_engine.egg-info/requires.txt +1 -0
  98. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_application.py +280 -0
  99. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_daemon.py +240 -18
  100. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_details.py +2 -1
  101. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_inspection.py +21 -0
  102. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_flow_module_compiler.py +47 -0
  103. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_helpers_polars.py +154 -0
  104. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_integration.py +64 -0
  105. py_data_engine-0.2.3/tests/test_platform_instrumentation.py +78 -0
  106. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_qt_ui.py +535 -9
  107. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_services.py +15 -3
  108. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_ui_models.py +87 -1
  109. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_views_helpers.py +4 -1
  110. py_data_engine-0.2.2/src/data_engine/docs/html/objects.inv +0 -0
  111. py_data_engine-0.2.2/src/data_engine/docs/html/searchindex.js +0 -1
  112. py_data_engine-0.2.2/src/data_engine/hosts/daemon/commands.py +0 -66
  113. py_data_engine-0.2.2/src/data_engine/hosts/daemon/runtime_commands.py +0 -188
  114. py_data_engine-0.2.2/src/data_engine/ui/gui/controllers/runtime.py +0 -273
  115. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/LICENSE +0 -0
  116. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/README.md +0 -0
  117. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/setup.cfg +0 -0
  118. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/setup.py +0 -0
  119. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/__init__.py +0 -0
  120. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/application/__init__.py +0 -0
  121. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/application/catalog.py +0 -0
  122. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/application/details.py +0 -0
  123. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/application/workspace.py +0 -0
  124. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/authoring/__init__.py +0 -0
  125. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/authoring/flow.py +0 -0
  126. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/authoring/services.py +0 -0
  127. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/core/__init__.py +0 -0
  128. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/core/flow.py +0 -0
  129. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/core/helpers.py +0 -0
  130. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/core/model.py +0 -0
  131. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/core/primitives.py +0 -0
  132. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/devtools/__init__.py +0 -0
  133. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/devtools/project_ast_map.py +0 -0
  134. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/devtools/smoke_data.py +0 -0
  135. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/__init__.py +0 -0
  136. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/api.rst.txt +0 -0
  137. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/app-runtime-and-workspaces.md.txt +0 -0
  138. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/authoring-flow-modules.md.txt +0 -0
  139. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/configuring-flows.md.txt +0 -0
  140. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/core-concepts.md.txt +0 -0
  141. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/database-methods.md.txt +0 -0
  142. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/duckdb-helpers.md.txt +0 -0
  143. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/flow-context.md.txt +0 -0
  144. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/flow-methods.md.txt +0 -0
  145. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/guides/getting-started.md.txt +0 -0
  146. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_sources/index.rst.txt +0 -0
  147. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  148. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/base-stemmer.js +0 -0
  149. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/basic.css +0 -0
  150. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/badge_only.css +0 -0
  151. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  152. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  153. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  154. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  155. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  156. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  157. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  158. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  159. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  160. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  161. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  162. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff +0 -0
  163. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
  164. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  165. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  166. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff +0 -0
  167. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
  168. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/css/theme.css +0 -0
  169. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/custom.css +0 -0
  170. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/doctools.js +0 -0
  171. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/english-stemmer.js +0 -0
  172. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/file.png +0 -0
  173. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
  174. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  175. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
  176. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  177. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  178. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  179. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  180. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  181. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
  182. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  183. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
  184. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  185. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
  186. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  187. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
  188. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  189. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  190. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  191. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  192. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  193. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  194. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  195. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  196. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  197. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/jquery.js +0 -0
  198. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/js/badge_only.js +0 -0
  199. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/js/theme.js +0 -0
  200. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/js/versions.js +0 -0
  201. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/language_data.js +0 -0
  202. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/minus.png +0 -0
  203. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/plus.png +0 -0
  204. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/pygments.css +0 -0
  205. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/searchtools.js +0 -0
  206. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/html/_static/sphinx_highlight.js +0 -0
  207. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/_static/custom.css +0 -0
  208. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/api.rst +0 -0
  209. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/conf.py +0 -0
  210. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/app-runtime-and-workspaces.md +0 -0
  211. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/authoring-flow-modules.md +0 -0
  212. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/configuring-flows.md +0 -0
  213. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/core-concepts.md +0 -0
  214. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/database-methods.md +0 -0
  215. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/duckdb-helpers.md +0 -0
  216. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/flow-context.md +0 -0
  217. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/flow-methods.md +0 -0
  218. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/guides/getting-started.md +0 -0
  219. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/docs/sphinx_source/index.rst +0 -0
  220. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/__init__.py +0 -0
  221. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/diagnostics.py +0 -0
  222. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/errors.py +0 -0
  223. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/inspection.py +0 -0
  224. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/logs.py +0 -0
  225. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/operator.py +0 -0
  226. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/runs.py +0 -0
  227. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/runtime.py +0 -0
  228. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/source_state.py +0 -0
  229. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/support.py +0 -0
  230. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/time.py +0 -0
  231. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/domain/workspace.py +0 -0
  232. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/flow_modules/__init__.py +0 -0
  233. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/flow_modules/flow_module_loader.py +0 -0
  234. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/helpers/duckdb.py +0 -0
  235. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/helpers/schema.py +0 -0
  236. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/__init__.py +0 -0
  237. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/__init__.py +0 -0
  238. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/bootstrap.py +0 -0
  239. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/client.py +0 -0
  240. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/constants.py +0 -0
  241. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/entrypoints.py +0 -0
  242. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/lifecycle.py +0 -0
  243. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/ownership.py +0 -0
  244. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/shared_state.py +0 -0
  245. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/daemon/state_sync.py +0 -0
  246. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/hosts/scheduler.py +0 -0
  247. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/__init__.py +0 -0
  248. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/interpreters.py +0 -0
  249. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/local_settings.py +0 -0
  250. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/paths.py +0 -0
  251. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/processes.py +0 -0
  252. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/theme.py +0 -0
  253. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/workspace_models.py +0 -0
  254. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/platform/workspace_policy.py +0 -0
  255. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/__init__.py +0 -0
  256. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/engine.py +0 -0
  257. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/__init__.py +0 -0
  258. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/app.py +0 -0
  259. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/context.py +0 -0
  260. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/continuous.py +0 -0
  261. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/grouped.py +0 -0
  262. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/logging.py +0 -0
  263. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/polling.py +0 -0
  264. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/execution/runner.py +0 -0
  265. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/file_watch.py +0 -0
  266. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/ledger_models.py +0 -0
  267. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/runtime_cache_store.py +0 -0
  268. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/runtime_control_store.py +0 -0
  269. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/runtime_db.py +0 -0
  270. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/shared_state.py +0 -0
  271. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/sqlite_store.py +0 -0
  272. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/runtime/stop.py +0 -0
  273. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/__init__.py +0 -0
  274. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/daemon.py +0 -0
  275. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/daemon_state.py +0 -0
  276. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/flow_execution.py +0 -0
  277. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/ledger.py +0 -0
  278. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/logs.py +0 -0
  279. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/reset.py +0 -0
  280. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/runtime_history.py +0 -0
  281. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/runtime_ports.py +0 -0
  282. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/settings.py +0 -0
  283. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/shared_state.py +0 -0
  284. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/theme.py +0 -0
  285. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/workspace_provisioning.py +0 -0
  286. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/services/workspaces.py +0 -0
  287. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/__init__.py +0 -0
  288. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/__init__.py +0 -0
  289. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/commands_doctor.py +0 -0
  290. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/commands_run.py +0 -0
  291. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/commands_start.py +0 -0
  292. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/commands_workspace.py +0 -0
  293. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/dependencies.py +0 -0
  294. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/cli/parser.py +0 -0
  295. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/__init__.py +0 -0
  296. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/app.py +0 -0
  297. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/bootstrap.py +0 -0
  298. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/cache_models.py +0 -0
  299. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/controllers/__init__.py +0 -0
  300. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/dialogs/__init__.py +0 -0
  301. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/dialogs/messages.py +0 -0
  302. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/dialogs/previews.py +0 -0
  303. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/helpers/__init__.py +0 -0
  304. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/helpers/inspection.py +0 -0
  305. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/helpers/lifecycle.py +0 -0
  306. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/helpers/scroll.py +0 -0
  307. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/helpers/theming.py +0 -0
  308. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/dark_light.svg +0 -0
  309. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/documentation.svg +0 -0
  310. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/failed.svg +0 -0
  311. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/group.svg +0 -0
  312. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/home.svg +0 -0
  313. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/manual.svg +0 -0
  314. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/poll.svg +0 -0
  315. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/schedule.svg +0 -0
  316. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/settings.svg +0 -0
  317. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/started.svg +0 -0
  318. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/success.svg +0 -0
  319. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons/view-log.svg +0 -0
  320. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/icons.py +0 -0
  321. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/launcher.py +0 -0
  322. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/__init__.py +0 -0
  323. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/docs.py +0 -0
  324. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/logs.py +0 -0
  325. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/runtime_projection.py +0 -0
  326. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/sidebar.py +0 -0
  327. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/steps.py +0 -0
  328. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/presenters/workspace.py +0 -0
  329. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/preview_models.py +0 -0
  330. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/render_support.py +0 -0
  331. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/rendering/__init__.py +0 -0
  332. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/rendering/artifacts.py +0 -0
  333. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/rendering/icons.py +0 -0
  334. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/state_support.py +0 -0
  335. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/support.py +0 -0
  336. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/widgets/__init__.py +0 -0
  337. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/widgets/config.py +0 -0
  338. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/gui/widgets/logs.py +0 -0
  339. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/__init__.py +0 -0
  340. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/app.py +0 -0
  341. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/bootstrap.py +0 -0
  342. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/bootstrapper.py +0 -0
  343. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/controllers/__init__.py +0 -0
  344. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/controllers/flows.py +0 -0
  345. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/controllers/runtime.py +0 -0
  346. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/runtime.py +0 -0
  347. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/state_support.py +0 -0
  348. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/support.py +0 -0
  349. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/theme.py +0 -0
  350. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/ui/tui/widgets.py +0 -0
  351. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/__init__.py +0 -0
  352. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/artifacts.py +0 -0
  353. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/flow_display.py +0 -0
  354. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/logs.py +0 -0
  355. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/presentation.py +0 -0
  356. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/runs.py +0 -0
  357. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/state.py +0 -0
  358. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/status.py +0 -0
  359. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/data_engine/views/text.py +0 -0
  360. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/py_data_engine.egg-info/dependency_links.txt +0 -0
  361. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/py_data_engine.egg-info/entry_points.txt +0 -0
  362. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/src/py_data_engine.egg-info/top_level.txt +0 -0
  363. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_authoring_helpers.py +0 -0
  364. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_authoring_services.py +0 -0
  365. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_builder.py +0 -0
  366. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_cli.py +0 -0
  367. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_cli_helpers.py +0 -0
  368. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_actions.py +0 -0
  369. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_catalog.py +0 -0
  370. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_errors.py +0 -0
  371. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_logs.py +0 -0
  372. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_operations.py +0 -0
  373. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_operator.py +0 -0
  374. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_runs.py +0 -0
  375. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_runtime.py +0 -0
  376. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_support.py +0 -0
  377. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_domain_workspace.py +0 -0
  378. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_export_project_bundle_script.py +0 -0
  379. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_flow_module_loader.py +0 -0
  380. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_helpers_duckdb.py +0 -0
  381. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_live_runtime_suite.py +0 -0
  382. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_local_settings.py +0 -0
  383. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_logs.py +0 -0
  384. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_platform_identity.py +0 -0
  385. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_project_ast_map.py +0 -0
  386. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_reset_service.py +0 -0
  387. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_runtime_db.py +0 -0
  388. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_runtime_history_service.py +0 -0
  389. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_runtime_logging.py +0 -0
  390. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_scheduler_host.py +0 -0
  391. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_schema_helper.py +0 -0
  392. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_shared_state.py +0 -0
  393. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_smoke_data.py +0 -0
  394. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_sources.py +0 -0
  395. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_theme.py +0 -0
  396. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_tui.py +0 -0
  397. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_tui_widgets.py +0 -0
  398. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_ui_bootstrap.py +0 -0
  399. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_ui_runtime_theme.py +0 -0
  400. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_ui_state.py +0 -0
  401. {py_data_engine-0.2.2 → py_data_engine-0.2.3}/tests/test_workspace_provisioning.py +0 -0
@@ -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.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
@@ -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:
@@ -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=a47416a6"></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=a47416a6"></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=a47416a6"></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=a47416a6"></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=a47416a6"></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>