py-data-engine 0.2.1__tar.gz → 0.2.2__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 (400) hide show
  1. {py_data_engine-0.2.1/src/py_data_engine.egg-info → py_data_engine-0.2.2}/PKG-INFO +1 -1
  2. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/core/flow.py +11 -0
  3. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/core/primitives.py +1 -0
  4. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/devtools/smoke_data.py +153 -1
  5. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/authoring/flow.html +1 -1
  6. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/core/flow.html +12 -1
  7. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/core/model.html +1 -1
  8. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/core/primitives.html +2 -1
  9. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb.html +1 -1
  10. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/helpers/polars.html +1 -1
  11. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/helpers/schema.html +13 -4
  12. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/hosts/scheduler.html +1 -1
  13. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/runtime/engine.html +1 -1
  14. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/grouped.html +1 -1
  15. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/single.html +127 -11
  16. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/runtime/file_watch.html +1 -1
  17. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/runtime/stop.html +1 -1
  18. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/daemon.html +1 -1
  19. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/daemon_state.html +1 -1
  20. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/flow_catalog.html +1 -1
  21. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/flow_execution.html +1 -1
  22. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/ledger.html +1 -1
  23. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/logs.html +17 -4
  24. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/runtime_binding.html +41 -4
  25. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/runtime_execution.html +1 -1
  26. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/runtime_history.html +77 -13
  27. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/settings.html +1 -1
  28. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/shared_state.html +23 -2
  29. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/theme.html +1 -1
  30. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/workspace_provisioning.html +1 -1
  31. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/data_engine/services/workspaces.html +1 -1
  32. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_modules/index.html +1 -1
  33. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/app-runtime-and-workspaces.md.txt +31 -15
  34. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/authoring-flow-modules.md.txt +9 -5
  35. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/configuring-flows.md.txt +5 -5
  36. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/core-concepts.md.txt +5 -5
  37. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/database-methods.md.txt +3 -3
  38. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/duckdb-helpers.md.txt +5 -5
  39. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/flow-context.md.txt +7 -7
  40. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/flow-methods.md.txt +6 -6
  41. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/getting-started.md.txt +8 -7
  42. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/project-inventory.md.txt +293 -15
  43. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/project-map.md.txt +20 -20
  44. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/guides/recipes.md.txt +3 -3
  45. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/documentation_options.js +1 -1
  46. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/api.html +150 -5
  47. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/genindex.html +25 -5
  48. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/app-runtime-and-workspaces.html +32 -18
  49. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/authoring-flow-modules.html +8 -6
  50. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/configuring-flows.html +6 -6
  51. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/core-concepts.html +6 -6
  52. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/database-methods.html +4 -4
  53. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/duckdb-helpers.html +6 -6
  54. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/flow-context.html +8 -8
  55. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/flow-methods.html +7 -7
  56. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/getting-started.html +9 -8
  57. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/project-inventory.html +507 -25
  58. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/project-map.html +46 -46
  59. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/guides/recipes.html +4 -4
  60. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/index.html +2 -1
  61. py_data_engine-0.2.2/src/data_engine/docs/html/objects.inv +0 -0
  62. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/py-modindex.html +1 -1
  63. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/search.html +1 -1
  64. py_data_engine-0.2.2/src/data_engine/docs/html/searchindex.js +1 -0
  65. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/app-runtime-and-workspaces.md +31 -15
  66. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/authoring-flow-modules.md +9 -5
  67. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/configuring-flows.md +5 -5
  68. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/core-concepts.md +5 -5
  69. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/database-methods.md +3 -3
  70. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/duckdb-helpers.md +5 -5
  71. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/flow-context.md +7 -7
  72. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/flow-methods.md +6 -6
  73. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/getting-started.md +8 -7
  74. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/project-inventory.md +293 -15
  75. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/project-map.md +20 -20
  76. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/guides/recipes.md +3 -3
  77. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/logs.py +20 -0
  78. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/flow_modules/flow_module_compiler.py +64 -18
  79. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/flow_modules/flow_module_loader.py +85 -15
  80. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/helpers/schema.py +12 -3
  81. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/commands.py +2 -0
  82. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/manager.py +27 -30
  83. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/identity.py +1 -1
  84. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/workspace_policy.py +3 -11
  85. py_data_engine-0.2.2/src/data_engine/runtime/execution/continuous.py +111 -0
  86. py_data_engine-0.2.2/src/data_engine/runtime/execution/logging.py +293 -0
  87. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/execution/single.py +117 -10
  88. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/runtime_cache_store.py +130 -1
  89. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/runtime_control_store.py +20 -0
  90. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/shared_state.py +56 -0
  91. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/sqlite_store.py +1 -1
  92. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/__init__.py +2 -0
  93. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/logs.py +16 -3
  94. py_data_engine-0.2.2/src/data_engine/services/reset.py +61 -0
  95. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/runtime_binding.py +40 -3
  96. py_data_engine-0.2.2/src/data_engine/services/runtime_history.py +120 -0
  97. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/runtime_ports.py +14 -1
  98. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/shared_state.py +16 -1
  99. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/app.py +1 -1
  100. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/bootstrap.py +12 -0
  101. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/bootstrapper.py +5 -0
  102. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/controllers/flows.py +33 -3
  103. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/controllers/runtime.py +26 -0
  104. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/__init__.py +2 -0
  105. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/logs.py +46 -5
  106. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/runtime_projection.py +2 -0
  107. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/sidebar.py +3 -1
  108. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/workspace_settings.py +51 -2
  109. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/support.py +5 -0
  110. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/widgets/panels.py +10 -1
  111. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/widgets/sidebar.py +1 -1
  112. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/app.py +1 -1
  113. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/bootstrap.py +12 -0
  114. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/bootstrapper.py +2 -0
  115. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/controllers/flows.py +22 -3
  116. py_data_engine-0.2.2/src/data_engine/views/logs.py +105 -0
  117. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/runs.py +6 -7
  118. {py_data_engine-0.2.1 → py_data_engine-0.2.2/src/py_data_engine.egg-info}/PKG-INFO +1 -1
  119. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/py_data_engine.egg-info/SOURCES.txt +3 -0
  120. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_builder.py +24 -0
  121. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_cli.py +13 -2
  122. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_daemon.py +35 -2
  123. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_details.py +1 -1
  124. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_runtime.py +1 -1
  125. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_flow_module_compiler.py +34 -0
  126. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_flow_module_loader.py +62 -3
  127. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_integration.py +76 -0
  128. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_logs.py +121 -0
  129. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_qt_ui.py +214 -15
  130. py_data_engine-0.2.2/tests/test_reset_service.py +194 -0
  131. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_runtime_db.py +43 -0
  132. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_runtime_history_service.py +62 -1
  133. py_data_engine-0.2.2/tests/test_runtime_logging.py +63 -0
  134. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_schema_helper.py +21 -4
  135. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_smoke_data.py +10 -0
  136. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_sources.py +16 -7
  137. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_tui.py +22 -0
  138. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_ui_bootstrap.py +2 -0
  139. py_data_engine-0.2.1/src/data_engine/docs/html/objects.inv +0 -0
  140. py_data_engine-0.2.1/src/data_engine/docs/html/searchindex.js +0 -1
  141. py_data_engine-0.2.1/src/data_engine/runtime/execution/continuous.py +0 -117
  142. py_data_engine-0.2.1/src/data_engine/runtime/execution/logging.py +0 -99
  143. py_data_engine-0.2.1/src/data_engine/services/runtime_history.py +0 -62
  144. py_data_engine-0.2.1/src/data_engine/views/logs.py +0 -62
  145. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/LICENSE +0 -0
  146. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/README.md +0 -0
  147. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/pyproject.toml +0 -0
  148. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/setup.cfg +0 -0
  149. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/setup.py +0 -0
  150. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/__init__.py +0 -0
  151. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/application/__init__.py +0 -0
  152. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/application/actions.py +0 -0
  153. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/application/catalog.py +0 -0
  154. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/application/control.py +0 -0
  155. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/application/details.py +0 -0
  156. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/application/runtime.py +0 -0
  157. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/application/workspace.py +0 -0
  158. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/authoring/__init__.py +0 -0
  159. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/authoring/flow.py +0 -0
  160. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/authoring/services.py +0 -0
  161. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/core/__init__.py +0 -0
  162. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/core/helpers.py +0 -0
  163. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/core/model.py +0 -0
  164. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/devtools/__init__.py +0 -0
  165. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/devtools/project_ast_map.py +0 -0
  166. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/__init__.py +0 -0
  167. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/api.rst.txt +0 -0
  168. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_sources/index.rst.txt +0 -0
  169. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  170. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/base-stemmer.js +0 -0
  171. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/basic.css +0 -0
  172. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/badge_only.css +0 -0
  173. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  174. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  175. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  176. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  177. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  178. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  179. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  180. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  181. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  182. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  183. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  184. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff +0 -0
  185. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
  186. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  187. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  188. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff +0 -0
  189. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
  190. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/css/theme.css +0 -0
  191. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/custom.css +0 -0
  192. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/doctools.js +0 -0
  193. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/english-stemmer.js +0 -0
  194. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/file.png +0 -0
  195. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
  196. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  197. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
  198. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  199. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  200. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  201. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  202. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  203. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
  204. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  205. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
  206. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  207. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
  208. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  209. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
  210. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  211. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  212. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  213. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  214. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  215. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  216. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  217. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  218. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  219. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/jquery.js +0 -0
  220. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/js/badge_only.js +0 -0
  221. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/js/theme.js +0 -0
  222. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/js/versions.js +0 -0
  223. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/language_data.js +0 -0
  224. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/minus.png +0 -0
  225. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/plus.png +0 -0
  226. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/pygments.css +0 -0
  227. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/searchtools.js +0 -0
  228. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/html/_static/sphinx_highlight.js +0 -0
  229. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/_static/custom.css +0 -0
  230. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/api.rst +0 -0
  231. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/conf.py +0 -0
  232. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/docs/sphinx_source/index.rst +0 -0
  233. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/__init__.py +0 -0
  234. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/actions.py +0 -0
  235. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/catalog.py +0 -0
  236. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/details.py +0 -0
  237. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/diagnostics.py +0 -0
  238. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/errors.py +0 -0
  239. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/inspection.py +0 -0
  240. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/operations.py +0 -0
  241. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/operator.py +0 -0
  242. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/runs.py +0 -0
  243. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/runtime.py +0 -0
  244. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/source_state.py +0 -0
  245. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/support.py +0 -0
  246. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/time.py +0 -0
  247. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/domain/workspace.py +0 -0
  248. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/flow_modules/__init__.py +0 -0
  249. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/helpers/__init__.py +0 -0
  250. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/helpers/duckdb.py +0 -0
  251. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/helpers/polars.py +0 -0
  252. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/__init__.py +0 -0
  253. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/__init__.py +0 -0
  254. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/app.py +0 -0
  255. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/bootstrap.py +0 -0
  256. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/client.py +0 -0
  257. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/composition.py +0 -0
  258. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/constants.py +0 -0
  259. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/entrypoints.py +0 -0
  260. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/lifecycle.py +0 -0
  261. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/ownership.py +0 -0
  262. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/runtime_commands.py +0 -0
  263. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/runtime_control.py +0 -0
  264. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/server.py +0 -0
  265. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/shared_state.py +0 -0
  266. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/daemon/state_sync.py +0 -0
  267. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/hosts/scheduler.py +0 -0
  268. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/__init__.py +0 -0
  269. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/interpreters.py +0 -0
  270. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/local_settings.py +0 -0
  271. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/paths.py +0 -0
  272. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/processes.py +0 -0
  273. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/theme.py +0 -0
  274. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/platform/workspace_models.py +0 -0
  275. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/__init__.py +0 -0
  276. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/engine.py +0 -0
  277. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/execution/__init__.py +0 -0
  278. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/execution/app.py +0 -0
  279. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/execution/context.py +0 -0
  280. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/execution/grouped.py +0 -0
  281. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/execution/polling.py +0 -0
  282. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/execution/runner.py +0 -0
  283. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/file_watch.py +0 -0
  284. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/ledger_models.py +0 -0
  285. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/runtime_db.py +0 -0
  286. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/runtime/stop.py +0 -0
  287. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/daemon.py +0 -0
  288. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/daemon_state.py +0 -0
  289. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/flow_catalog.py +0 -0
  290. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/flow_execution.py +0 -0
  291. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/ledger.py +0 -0
  292. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/runtime_execution.py +0 -0
  293. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/settings.py +0 -0
  294. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/theme.py +0 -0
  295. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/workspace_provisioning.py +0 -0
  296. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/services/workspaces.py +0 -0
  297. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/__init__.py +0 -0
  298. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/__init__.py +0 -0
  299. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/app.py +0 -0
  300. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/commands_doctor.py +0 -0
  301. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/commands_run.py +0 -0
  302. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/commands_start.py +0 -0
  303. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/commands_workspace.py +0 -0
  304. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/dependencies.py +0 -0
  305. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/cli/parser.py +0 -0
  306. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/__init__.py +0 -0
  307. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/cache_models.py +0 -0
  308. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/control_support.py +0 -0
  309. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/controllers/__init__.py +0 -0
  310. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/dialogs/__init__.py +0 -0
  311. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/dialogs/messages.py +0 -0
  312. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/dialogs/previews.py +0 -0
  313. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/helpers/__init__.py +0 -0
  314. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/helpers/inspection.py +0 -0
  315. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/helpers/lifecycle.py +0 -0
  316. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/helpers/scroll.py +0 -0
  317. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/helpers/theming.py +0 -0
  318. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/dark_light.svg +0 -0
  319. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/documentation.svg +0 -0
  320. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/failed.svg +0 -0
  321. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/group.svg +0 -0
  322. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/home.svg +0 -0
  323. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/manual.svg +0 -0
  324. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/poll.svg +0 -0
  325. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/schedule.svg +0 -0
  326. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/settings.svg +0 -0
  327. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/started.svg +0 -0
  328. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/success.svg +0 -0
  329. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons/view-log.svg +0 -0
  330. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/icons.py +0 -0
  331. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/launcher.py +0 -0
  332. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/docs.py +0 -0
  333. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/steps.py +0 -0
  334. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/workspace.py +0 -0
  335. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/presenters/workspace_binding.py +0 -0
  336. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/preview_models.py +0 -0
  337. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/render_support.py +0 -0
  338. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/rendering/__init__.py +0 -0
  339. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/rendering/artifacts.py +0 -0
  340. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/rendering/icons.py +0 -0
  341. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/runtime.py +0 -0
  342. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/state_support.py +0 -0
  343. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/surface.py +2 -2
  344. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/theme.py +0 -0
  345. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/widgets/__init__.py +0 -0
  346. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/widgets/config.py +0 -0
  347. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/widgets/logs.py +0 -0
  348. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/gui/widgets/steps.py +0 -0
  349. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/__init__.py +0 -0
  350. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/controllers/__init__.py +0 -0
  351. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/controllers/runtime.py +0 -0
  352. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/runtime.py +0 -0
  353. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/state_support.py +0 -0
  354. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/support.py +0 -0
  355. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/theme.py +0 -0
  356. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/ui/tui/widgets.py +0 -0
  357. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/__init__.py +0 -0
  358. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/actions.py +0 -0
  359. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/artifacts.py +0 -0
  360. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/flow_display.py +0 -0
  361. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/models.py +0 -0
  362. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/presentation.py +0 -0
  363. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/state.py +0 -0
  364. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/status.py +0 -0
  365. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/data_engine/views/text.py +0 -0
  366. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/py_data_engine.egg-info/dependency_links.txt +0 -0
  367. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/py_data_engine.egg-info/entry_points.txt +0 -0
  368. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/py_data_engine.egg-info/requires.txt +0 -0
  369. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/src/py_data_engine.egg-info/top_level.txt +0 -0
  370. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_application.py +0 -0
  371. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_authoring_helpers.py +0 -0
  372. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_authoring_services.py +0 -0
  373. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_cli_helpers.py +0 -0
  374. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_actions.py +0 -0
  375. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_catalog.py +0 -0
  376. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_errors.py +0 -0
  377. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_inspection.py +0 -0
  378. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_logs.py +0 -0
  379. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_operations.py +0 -0
  380. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_operator.py +0 -0
  381. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_runs.py +0 -0
  382. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_support.py +0 -0
  383. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_domain_workspace.py +0 -0
  384. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_export_project_bundle_script.py +0 -0
  385. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_helpers_duckdb.py +0 -0
  386. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_helpers_polars.py +0 -0
  387. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_live_runtime_suite.py +0 -0
  388. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_local_settings.py +0 -0
  389. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_platform_identity.py +0 -0
  390. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_project_ast_map.py +0 -0
  391. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_scheduler_host.py +0 -0
  392. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_services.py +0 -0
  393. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_shared_state.py +0 -0
  394. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_theme.py +0 -0
  395. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_tui_widgets.py +0 -0
  396. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_ui_models.py +0 -0
  397. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_ui_runtime_theme.py +0 -0
  398. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_ui_state.py +0 -0
  399. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/tests/test_views_helpers.py +0 -0
  400. {py_data_engine-0.2.1 → py_data_engine-0.2.2}/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.1
3
+ Version: 0.2.2
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
@@ -92,6 +92,7 @@ class Flow:
92
92
  *,
93
93
  mode: str,
94
94
  run_as: str = "individual",
95
+ max_parallel: int = 1,
95
96
  source: str | Path | None = None,
96
97
  interval: str | None = None,
97
98
  time: str | tuple[str, ...] | list[str] | set[str] | None = None,
@@ -126,6 +127,9 @@ class Flow:
126
127
  run_as : str
127
128
  ``"individual"`` to run once per source file, or ``"batch"`` to run
128
129
  once for the full source set.
130
+ max_parallel : int
131
+ Maximum number of concurrent source-file runs for one flow when
132
+ ``run_as="individual"``. Defaults to ``1``.
129
133
  source : str | Path | None
130
134
  File or directory watched by poll/schedule triggers.
131
135
  interval : str | None
@@ -157,6 +161,9 @@ class Flow:
157
161
  if normalized_run_as not in {"individual", "batch"}:
158
162
  raise FlowValidationError("watch() run_as must be either 'individual' or 'batch'.")
159
163
 
164
+ if not isinstance(max_parallel, int) or max_parallel <= 0:
165
+ raise FlowValidationError("watch() max_parallel must be an integer greater than or equal to one.")
166
+
160
167
  if not isinstance(settle, int) or settle < 0:
161
168
  raise FlowValidationError("watch() settle must be an integer greater than or equal to zero.")
162
169
 
@@ -172,6 +179,7 @@ class Flow:
172
179
  trigger=WatchSpec(
173
180
  mode="manual",
174
181
  run_as=normalized_run_as,
182
+ max_parallel=max_parallel,
175
183
  source=resolved_source,
176
184
  extensions=normalized_extensions,
177
185
  )
@@ -188,6 +196,7 @@ class Flow:
188
196
  trigger=WatchSpec(
189
197
  mode="poll",
190
198
  run_as=normalized_run_as,
199
+ max_parallel=max_parallel,
191
200
  source=resolved_source,
192
201
  interval=interval,
193
202
  interval_seconds=_parse_duration(interval),
@@ -205,6 +214,7 @@ class Flow:
205
214
  trigger=WatchSpec(
206
215
  mode="schedule",
207
216
  run_as=normalized_run_as,
217
+ max_parallel=max_parallel,
208
218
  source=resolved_source,
209
219
  interval=interval,
210
220
  interval_seconds=_parse_duration(interval),
@@ -217,6 +227,7 @@ class Flow:
217
227
  trigger=WatchSpec(
218
228
  mode="schedule",
219
229
  run_as=normalized_run_as,
230
+ max_parallel=max_parallel,
220
231
  source=resolved_source,
221
232
  time=time_values[0] if len(time_values) == 1 else time_values,
222
233
  times=time_values,
@@ -21,6 +21,7 @@ class WatchSpec:
21
21
 
22
22
  mode: str
23
23
  run_as: str
24
+ max_parallel: int = 1
24
25
  source: Path | None = None
25
26
  interval: str | None = None
26
27
  interval_seconds: float | None = None
@@ -38,6 +38,7 @@ def build_smoke_environment(
38
38
  secondary_data_dir_name: str = "data2",
39
39
  create_app_root: bool = False,
40
40
  rows_per_workbook: int = 2,
41
+ parallel_rows_per_workbook: int | None = None,
41
42
  column_count: int = len(_BASE_CLAIMS_COLUMNS),
42
43
  ) -> None:
43
44
  """Generate starter data roots plus authored workspaces under one root."""
@@ -59,6 +60,12 @@ def build_smoke_environment(
59
60
  rows_per_workbook=rows_per_workbook,
60
61
  column_count=column_count,
61
62
  )
63
+ create_parallel_claims_data_root(
64
+ secondary_data_root,
65
+ file_count=12,
66
+ rows_per_workbook=parallel_rows_per_workbook or rows_per_workbook,
67
+ column_count=column_count,
68
+ )
62
69
 
63
70
  for workspace_id in workspace_ids:
64
71
  target_workspace = workspace_collection_root / workspace_id
@@ -87,7 +94,6 @@ def create_python_flow_modules(
87
94
  schedule_interval: str = "30s",
88
95
  ) -> None:
89
96
  """Write starter Python-authored flow modules into one workspace."""
90
- del workspace_id
91
97
  flow_dir = target_workspace / "flow_modules"
92
98
  write_text_file(flow_dir / "example_mirror.py", _python_poll_source(data_folder_name=data_folder_name))
93
99
  write_text_file(
@@ -99,6 +105,19 @@ def create_python_flow_modules(
99
105
  flow_dir / "example_database_dimensions.py",
100
106
  _python_database_dimensions_source(data_folder_name=data_folder_name),
101
107
  )
108
+ if workspace_id == "claims2":
109
+ write_text_file(
110
+ flow_dir / "claims2_parallel_poll.py",
111
+ _python_parallel_poll_source(data_folder_name=data_folder_name),
112
+ )
113
+ write_text_file(
114
+ flow_dir / "claims2_parallel_schedule.py",
115
+ _python_parallel_schedule_source(data_folder_name=data_folder_name),
116
+ )
117
+ write_text_file(
118
+ flow_dir / "claims2_parallel_manual.py",
119
+ _python_parallel_manual_source(data_folder_name=data_folder_name),
120
+ )
102
121
 
103
122
 
104
123
  def create_notebook_flow_modules(
@@ -168,6 +187,25 @@ def create_smoke_data_root(
168
187
  )
169
188
 
170
189
 
190
+ def create_parallel_claims_data_root(
191
+ data_root: Path,
192
+ *,
193
+ file_count: int = 12,
194
+ rows_per_workbook: int = 2,
195
+ column_count: int = len(_BASE_CLAIMS_COLUMNS),
196
+ ) -> None:
197
+ """Generate one fixed-size parallel smoke dataset for file-scoped runtime tests."""
198
+ parallel_dir = data_root / "Input" / "claims_parallel_12"
199
+ parallel_dir.mkdir(parents=True, exist_ok=True)
200
+ for index in range(1, file_count + 1):
201
+ _write_claims_workbook(
202
+ parallel_dir / f"claims_parallel_{index:02d}.xlsx",
203
+ workbook_index=100 + index,
204
+ rows_per_workbook=rows_per_workbook,
205
+ column_count=column_count,
206
+ )
207
+
208
+
171
209
  def _claims_headers(*, column_count: int) -> tuple[str, ...]:
172
210
  extra_count = column_count - len(_BASE_CLAIMS_COLUMNS)
173
211
  extra_columns = tuple(f"Attribute {index:02d}" for index in range(1, extra_count + 1))
@@ -488,6 +526,120 @@ def build():
488
526
  """
489
527
 
490
528
 
529
+ def _parallel_runtime_helpers(*, data_folder_name: str, output_folder_name: str) -> str:
530
+ return f"""
531
+
532
+ import polars as pl
533
+
534
+ from data_engine.helpers import write_parquet_atomic
535
+
536
+
537
+ def read_claims(context):
538
+ return pl.read_excel(context.source.path)
539
+
540
+
541
+ def write_target(context):
542
+ output = context.mirror.with_suffix(".parquet")
543
+ write_parquet_atomic(context.current, output)
544
+ return output
545
+
546
+
547
+ SOURCE_ROOT = "../../../{data_folder_name}/Input/claims_parallel_12"
548
+ TARGET_ROOT = "../../../{data_folder_name}/Output/{output_folder_name}"
549
+ """
550
+
551
+
552
+ def _python_parallel_poll_source(*, data_folder_name: str) -> str:
553
+ return (
554
+ """from __future__ import annotations
555
+
556
+ from data_engine import Flow
557
+ """
558
+ + _parallel_runtime_helpers(data_folder_name=data_folder_name, output_folder_name="claims2_parallel_poll")
559
+ + """
560
+
561
+ DESCRIPTION = "Claims2 parallel poll demo with 12 source workbooks and bounded file concurrency."
562
+
563
+
564
+ def build():
565
+ return (
566
+ Flow(name="claims2_parallel_poll", group="Parallel")
567
+ .watch(
568
+ mode="poll",
569
+ source=SOURCE_ROOT,
570
+ interval="5s",
571
+ extensions=[".xlsx", ".xls", ".xlsm"],
572
+ settle=1,
573
+ max_parallel=4,
574
+ )
575
+ .mirror(root=TARGET_ROOT)
576
+ .step(read_claims, label="Read Excel")
577
+ .step(write_target, label="Write Parquet")
578
+ )
579
+ """
580
+ )
581
+
582
+
583
+ def _python_parallel_schedule_source(*, data_folder_name: str) -> str:
584
+ return (
585
+ """from __future__ import annotations
586
+
587
+ from data_engine import Flow
588
+ """
589
+ + _parallel_runtime_helpers(data_folder_name=data_folder_name, output_folder_name="claims2_parallel_schedule")
590
+ + """
591
+
592
+ DESCRIPTION = "Claims2 parallel schedule demo with 12 source workbooks and bounded file concurrency."
593
+
594
+
595
+ def build():
596
+ return (
597
+ Flow(name="claims2_parallel_schedule", group="Parallel")
598
+ .watch(
599
+ mode="schedule",
600
+ run_as="individual",
601
+ source=SOURCE_ROOT,
602
+ interval="5s",
603
+ extensions=[".xlsx", ".xls", ".xlsm"],
604
+ max_parallel=4,
605
+ )
606
+ .mirror(root=TARGET_ROOT)
607
+ .step(read_claims, label="Read Excel")
608
+ .step(write_target, label="Write Parquet")
609
+ )
610
+ """
611
+ )
612
+
613
+
614
+ def _python_parallel_manual_source(*, data_folder_name: str) -> str:
615
+ return (
616
+ """from __future__ import annotations
617
+
618
+ from data_engine import Flow
619
+ """
620
+ + _parallel_runtime_helpers(data_folder_name=data_folder_name, output_folder_name="claims2_parallel_manual")
621
+ + """
622
+
623
+ DESCRIPTION = "Claims2 parallel manual demo with 12 source workbooks and bounded file concurrency."
624
+
625
+
626
+ def build():
627
+ return (
628
+ Flow(name="claims2_parallel_manual", group="Parallel")
629
+ .watch(
630
+ mode="manual",
631
+ source=SOURCE_ROOT,
632
+ extensions=[".xlsx", ".xls", ".xlsm"],
633
+ max_parallel=4,
634
+ )
635
+ .mirror(root=TARGET_ROOT)
636
+ .step(read_claims, label="Read Excel")
637
+ .step(write_target, label="Write Parquet")
638
+ )
639
+ """
640
+ )
641
+
642
+
491
643
  def _poll_notebook_source(*, workspace_id: str, data_folder_name: str) -> str:
492
644
  return f"""from __future__ import annotations
493
645
 
@@ -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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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>
@@ -180,6 +180,7 @@
180
180
  <span class="o">*</span><span class="p">,</span>
181
181
  <span class="n">mode</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
182
182
  <span class="n">run_as</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;individual&quot;</span><span class="p">,</span>
183
+ <span class="n">max_parallel</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
183
184
  <span class="n">source</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
184
185
  <span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
185
186
  <span class="n">time</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> <span class="o">|</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="nb">set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
@@ -214,6 +215,9 @@
214
215
  <span class="sd"> run_as : str</span>
215
216
  <span class="sd"> ``&quot;individual&quot;`` to run once per source file, or ``&quot;batch&quot;`` to run</span>
216
217
  <span class="sd"> once for the full source set.</span>
218
+ <span class="sd"> max_parallel : int</span>
219
+ <span class="sd"> Maximum number of concurrent source-file runs for one flow when</span>
220
+ <span class="sd"> ``run_as=&quot;individual&quot;``. Defaults to ``1``.</span>
217
221
  <span class="sd"> source : str | Path | None</span>
218
222
  <span class="sd"> File or directory watched by poll/schedule triggers.</span>
219
223
  <span class="sd"> interval : str | None</span>
@@ -245,6 +249,9 @@
245
249
  <span class="k">if</span> <span class="n">normalized_run_as</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">&quot;individual&quot;</span><span class="p">,</span> <span class="s2">&quot;batch&quot;</span><span class="p">}:</span>
246
250
  <span class="k">raise</span> <span class="n">FlowValidationError</span><span class="p">(</span><span class="s2">&quot;watch() run_as must be either &#39;individual&#39; or &#39;batch&#39;.&quot;</span><span class="p">)</span>
247
251
 
252
+ <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">max_parallel</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">or</span> <span class="n">max_parallel</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
253
+ <span class="k">raise</span> <span class="n">FlowValidationError</span><span class="p">(</span><span class="s2">&quot;watch() max_parallel must be an integer greater than or equal to one.&quot;</span><span class="p">)</span>
254
+
248
255
  <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">settle</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">or</span> <span class="n">settle</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
249
256
  <span class="k">raise</span> <span class="n">FlowValidationError</span><span class="p">(</span><span class="s2">&quot;watch() settle must be an integer greater than or equal to zero.&quot;</span><span class="p">)</span>
250
257
 
@@ -260,6 +267,7 @@
260
267
  <span class="n">trigger</span><span class="o">=</span><span class="n">WatchSpec</span><span class="p">(</span>
261
268
  <span class="n">mode</span><span class="o">=</span><span class="s2">&quot;manual&quot;</span><span class="p">,</span>
262
269
  <span class="n">run_as</span><span class="o">=</span><span class="n">normalized_run_as</span><span class="p">,</span>
270
+ <span class="n">max_parallel</span><span class="o">=</span><span class="n">max_parallel</span><span class="p">,</span>
263
271
  <span class="n">source</span><span class="o">=</span><span class="n">resolved_source</span><span class="p">,</span>
264
272
  <span class="n">extensions</span><span class="o">=</span><span class="n">normalized_extensions</span><span class="p">,</span>
265
273
  <span class="p">)</span>
@@ -276,6 +284,7 @@
276
284
  <span class="n">trigger</span><span class="o">=</span><span class="n">WatchSpec</span><span class="p">(</span>
277
285
  <span class="n">mode</span><span class="o">=</span><span class="s2">&quot;poll&quot;</span><span class="p">,</span>
278
286
  <span class="n">run_as</span><span class="o">=</span><span class="n">normalized_run_as</span><span class="p">,</span>
287
+ <span class="n">max_parallel</span><span class="o">=</span><span class="n">max_parallel</span><span class="p">,</span>
279
288
  <span class="n">source</span><span class="o">=</span><span class="n">resolved_source</span><span class="p">,</span>
280
289
  <span class="n">interval</span><span class="o">=</span><span class="n">interval</span><span class="p">,</span>
281
290
  <span class="n">interval_seconds</span><span class="o">=</span><span class="n">_parse_duration</span><span class="p">(</span><span class="n">interval</span><span class="p">),</span>
@@ -293,6 +302,7 @@
293
302
  <span class="n">trigger</span><span class="o">=</span><span class="n">WatchSpec</span><span class="p">(</span>
294
303
  <span class="n">mode</span><span class="o">=</span><span class="s2">&quot;schedule&quot;</span><span class="p">,</span>
295
304
  <span class="n">run_as</span><span class="o">=</span><span class="n">normalized_run_as</span><span class="p">,</span>
305
+ <span class="n">max_parallel</span><span class="o">=</span><span class="n">max_parallel</span><span class="p">,</span>
296
306
  <span class="n">source</span><span class="o">=</span><span class="n">resolved_source</span><span class="p">,</span>
297
307
  <span class="n">interval</span><span class="o">=</span><span class="n">interval</span><span class="p">,</span>
298
308
  <span class="n">interval_seconds</span><span class="o">=</span><span class="n">_parse_duration</span><span class="p">(</span><span class="n">interval</span><span class="p">),</span>
@@ -305,6 +315,7 @@
305
315
  <span class="n">trigger</span><span class="o">=</span><span class="n">WatchSpec</span><span class="p">(</span>
306
316
  <span class="n">mode</span><span class="o">=</span><span class="s2">&quot;schedule&quot;</span><span class="p">,</span>
307
317
  <span class="n">run_as</span><span class="o">=</span><span class="n">normalized_run_as</span><span class="p">,</span>
318
+ <span class="n">max_parallel</span><span class="o">=</span><span class="n">max_parallel</span><span class="p">,</span>
308
319
  <span class="n">source</span><span class="o">=</span><span class="n">resolved_source</span><span class="p">,</span>
309
320
  <span class="n">time</span><span class="o">=</span><span class="n">time_values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">time_values</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">time_values</span><span class="p">,</span>
310
321
  <span class="n">times</span><span class="o">=</span><span class="n">time_values</span><span class="p">,</span>
@@ -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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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>
@@ -107,6 +107,7 @@
107
107
 
108
108
  <span class="n">mode</span><span class="p">:</span> <span class="nb">str</span>
109
109
  <span class="n">run_as</span><span class="p">:</span> <span class="nb">str</span>
110
+ <span class="n">max_parallel</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span>
110
111
  <span class="n">source</span><span class="p">:</span> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
111
112
  <span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
112
113
  <span class="n">interval_seconds</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
@@ -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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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>
@@ -88,6 +88,7 @@
88
88
 
89
89
  <span class="kn">from</span><span class="w"> </span><span class="nn">collections.abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">Iterable</span><span class="p">,</span> <span class="n">Mapping</span>
90
90
  <span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span>
91
+ <span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
91
92
  <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">TypeAlias</span>
92
93
 
93
94
  <span class="kn">import</span><span class="w"> </span><span class="nn">polars</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pl</span>
@@ -188,7 +189,11 @@
188
189
  <span class="sd"> &quot;&quot;&quot;</span>
189
190
  <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="p">:</span>
190
191
  <span class="k">return</span> <span class="n">df</span>
191
- <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span></div>
192
+ <span class="n">available</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">columns</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">pl</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">)</span> <span class="k">else</span> <span class="n">df</span><span class="o">.</span><span class="n">collect_schema</span><span class="p">()</span><span class="o">.</span><span class="n">names</span><span class="p">()</span>
193
+ <span class="n">present</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span> <span class="k">if</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">available</span><span class="p">)</span>
194
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">present</span><span class="p">:</span>
195
+ <span class="k">return</span> <span class="n">df</span>
196
+ <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">present</span><span class="p">)</span></div>
192
197
  </div>
193
198
 
194
199
 
@@ -338,10 +343,14 @@
338
343
  <span class="sd"> Returns</span>
339
344
  <span class="sd"> -------</span>
340
345
  <span class="sd"> str</span>
341
- <span class="sd"> Lowercase column name with leading/trailing whitespace removed, internal</span>
346
+ <span class="sd"> Lowercase column name with separator-adjacent spaces removed, remaining</span>
342
347
  <span class="sd"> whitespace collapsed, and spaces replaced with underscores.</span>
343
348
  <span class="sd"> &quot;&quot;&quot;</span>
344
- <span class="k">return</span> <span class="s2">&quot;_&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">())</span></div>
349
+ <span class="n">text</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
350
+ <span class="n">text</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;\s*([#_\-/</span><span class="se">\\\\</span><span class="s2">])\s*&quot;</span><span class="p">,</span> <span class="sa">r</span><span class="s2">&quot;\1&quot;</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
351
+ <span class="n">text</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
352
+ <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;_&quot;</span><span class="p">)</span>
353
+ <span class="k">return</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span></div>
345
354
 
346
355
 
347
356
 
@@ -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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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=37f418d5"></script>
16
+ <script src="../../../_static/documentation_options.js?v=000c92bf"></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=37f418d5"></script>
16
+ <script src="../../../../_static/documentation_options.js?v=000c92bf"></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>