py-data-engine 0.1.2__tar.gz → 0.2.1__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.
- {py_data_engine-0.1.2/src/py_data_engine.egg-info → py_data_engine-0.2.1}/PKG-INFO +4 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/pyproject.toml +9 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/setup.py +11 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/__init__.py +12 -12
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/application/catalog.py +13 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/application/runtime.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/authoring/__init__.py +5 -2
- py_data_engine-0.2.1/src/data_engine/authoring/flow.py +198 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/authoring/services.py +7 -2
- py_data_engine-0.2.1/src/data_engine/core/__init__.py +35 -0
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/core}/flow.py +266 -123
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/core}/helpers.py +18 -7
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/core}/model.py +2 -1
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/core}/primitives.py +105 -8
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/devtools/project_ast_map.py +95 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/devtools/smoke_data.py +40 -10
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/authoring/flow.html +336 -0
- {py_data_engine-0.1.2/src/data_engine/docs/html/_modules/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/core}/flow.html +277 -155
- {py_data_engine-0.1.2/src/data_engine/docs/html/_modules/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/core}/model.html +9 -8
- {py_data_engine-0.1.2/src/data_engine/docs/html/_modules/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/core}/primitives.html +165 -41
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb.html +1124 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/helpers/polars.html +959 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/helpers/schema.html +555 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/hosts/scheduler.html +282 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/runtime/engine.html +254 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/runtime/execution/grouped.html +233 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/runtime/execution/single.html +349 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_modules/data_engine/runtime/file_watch.html +5 -7
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/runtime/stop.html +184 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/daemon.html +193 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/daemon_state.html +169 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/flow_catalog.html +226 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/flow_execution.html +174 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/ledger.html +225 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/logs.html +198 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/runtime_binding.html +419 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/runtime_execution.html +362 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/runtime_history.html +185 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/settings.html +199 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/shared_state.html +153 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/theme.html +191 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/workspace_provisioning.html +384 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/_modules/data_engine/services/workspaces.html +197 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_modules/index.html +26 -3
- py_data_engine-0.2.1/src/data_engine/docs/html/_sources/api.rst.txt +167 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/database-methods.md.txt +5 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/duckdb-helpers.md.txt +6 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/flow-methods.md.txt +13 -7
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/getting-started.md.txt +2 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/project-inventory.md.txt +1664 -634
- py_data_engine-0.2.1/src/data_engine/docs/html/_sources/guides/project-map.md.txt +76 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/documentation_options.js +1 -1
- py_data_engine-0.2.1/src/data_engine/docs/html/api.html +5125 -0
- py_data_engine-0.2.1/src/data_engine/docs/html/genindex.html +1241 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/app-runtime-and-workspaces.html +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/authoring-flow-modules.html +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/configuring-flows.html +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/core-concepts.html +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/database-methods.html +5 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/duckdb-helpers.html +6 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/flow-context.html +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/flow-methods.html +13 -8
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/getting-started.html +3 -3
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/project-inventory.html +4173 -2339
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/project-map.html +114 -159
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/guides/recipes.html +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/index.html +9 -6
- py_data_engine-0.2.1/src/data_engine/docs/html/objects.inv +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/py-modindex.html +114 -4
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/search.html +1 -1
- py_data_engine-0.2.1/src/data_engine/docs/html/searchindex.js +1 -0
- py_data_engine-0.2.1/src/data_engine/docs/sphinx_source/api.rst +167 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/conf.py +4 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/database-methods.md +5 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/duckdb-helpers.md +6 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/flow-methods.md +13 -7
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/getting-started.md +2 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/project-inventory.md +1664 -634
- py_data_engine-0.2.1/src/data_engine/docs/sphinx_source/guides/project-map.md +76 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/actions.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/workspace.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/flow_modules/flow_module_compiler.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/flow_modules/flow_module_loader.py +12 -9
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/helpers/__init__.py +18 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/helpers/duckdb.py +303 -28
- py_data_engine-0.2.1/src/data_engine/helpers/polars.py +773 -0
- py_data_engine-0.2.1/src/data_engine/helpers/schema.py +399 -0
- py_data_engine-0.2.1/src/data_engine/hosts/__init__.py +5 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/app.py +1 -8
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/client.py +11 -66
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/composition.py +0 -8
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/constants.py +2 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/lifecycle.py +2 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/manager.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/runtime_commands.py +2 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/server.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/shared_state.py +5 -5
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/state_sync.py +1 -1
- py_data_engine-0.2.1/src/data_engine/hosts/scheduler.py +135 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/platform/identity.py +2 -0
- py_data_engine-0.2.1/src/data_engine/platform/interpreters.py +50 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/platform/local_settings.py +9 -8
- py_data_engine-0.2.1/src/data_engine/platform/paths.py +57 -0
- py_data_engine-0.2.1/src/data_engine/platform/processes.py +213 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/platform/workspace_models.py +8 -33
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/platform/workspace_policy.py +1 -1
- py_data_engine-0.2.1/src/data_engine/runtime/engine.py +116 -0
- py_data_engine-0.2.1/src/data_engine/runtime/execution/__init__.py +6 -0
- py_data_engine-0.2.1/src/data_engine/runtime/execution/app.py +6 -0
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/runtime}/execution/context.py +7 -3
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/runtime}/execution/continuous.py +12 -71
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/runtime}/execution/grouped.py +18 -13
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/runtime}/execution/logging.py +21 -5
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/runtime}/execution/polling.py +35 -16
- py_data_engine-0.2.1/src/data_engine/runtime/execution/runner.py +379 -0
- {py_data_engine-0.1.2/src/data_engine/authoring → py_data_engine-0.2.1/src/data_engine/runtime}/execution/single.py +76 -36
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/runtime/file_watch.py +4 -6
- py_data_engine-0.1.2/src/data_engine/runtime/runtime_db.py → py_data_engine-0.2.1/src/data_engine/runtime/runtime_cache_store.py +377 -696
- py_data_engine-0.2.1/src/data_engine/runtime/runtime_control_store.py +231 -0
- py_data_engine-0.2.1/src/data_engine/runtime/runtime_db.py +30 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/runtime/shared_state.py +76 -31
- py_data_engine-0.2.1/src/data_engine/runtime/sqlite_store.py +70 -0
- py_data_engine-0.2.1/src/data_engine/runtime/stop.py +52 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/flow_catalog.py +4 -3
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/flow_execution.py +8 -8
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/ledger.py +18 -17
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/logs.py +10 -15
- py_data_engine-0.2.1/src/data_engine/services/runtime_binding.py +266 -0
- py_data_engine-0.2.1/src/data_engine/services/runtime_execution.py +215 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/runtime_history.py +7 -7
- py_data_engine-0.2.1/src/data_engine/services/runtime_ports.py +89 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/shared_state.py +3 -4
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/workspace_provisioning.py +2 -5
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/app.py +1 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/commands_doctor.py +10 -90
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/commands_run.py +5 -4
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/commands_start.py +6 -32
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/commands_workspace.py +1 -3
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/app.py +2 -4
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/bootstrap.py +6 -4
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/bootstrapper.py +2 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/control_support.py +3 -3
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/controllers/runtime.py +8 -6
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/dialogs/previews.py +0 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/helpers/inspection.py +2 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/launcher.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/workspace_settings.py +1 -14
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/runtime.py +1 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/state_support.py +2 -7
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/support.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/widgets/panels.py +0 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/app.py +3 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/bootstrap.py +6 -4
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/controllers/flows.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/controllers/runtime.py +4 -5
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/state_support.py +2 -7
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/logs.py +8 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/state.py +3 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1/src/py_data_engine.egg-info}/PKG-INFO +4 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/py_data_engine.egg-info/SOURCES.txt +54 -15
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/py_data_engine.egg-info/requires.txt +3 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_application.py +43 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_authoring_helpers.py +2 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_builder.py +54 -48
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_cli.py +3 -3
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_cli_helpers.py +0 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_daemon.py +22 -23
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_actions.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_details.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_inspection.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_flow_module_compiler.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_flow_module_loader.py +2 -2
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_helpers_duckdb.py +52 -1
- py_data_engine-0.2.1/tests/test_helpers_polars.py +255 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_integration.py +33 -26
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_live_runtime_suite.py +9 -73
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_local_settings.py +0 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_logs.py +3 -3
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_project_ast_map.py +36 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_qt_ui.py +16 -16
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_runtime_db.py +122 -64
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_runtime_history_service.py +9 -9
- py_data_engine-0.2.1/tests/test_scheduler_host.py +105 -0
- py_data_engine-0.2.1/tests/test_schema_helper.py +177 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_services.py +189 -13
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_shared_state.py +103 -49
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_tui.py +15 -15
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_tui_widgets.py +2 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_ui_bootstrap.py +5 -3
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_ui_models.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_views_helpers.py +1 -1
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_workspace_provisioning.py +0 -1
- py_data_engine-0.1.2/src/data_engine/authoring/builder.py +0 -31
- py_data_engine-0.1.2/src/data_engine/authoring/execution/__init__.py +0 -6
- py_data_engine-0.1.2/src/data_engine/authoring/execution/app.py +0 -6
- py_data_engine-0.1.2/src/data_engine/authoring/execution/runner.py +0 -210
- py_data_engine-0.1.2/src/data_engine/docs/html/_sources/api.rst.txt +0 -42
- py_data_engine-0.1.2/src/data_engine/docs/html/_sources/guides/project-map.md.txt +0 -118
- py_data_engine-0.1.2/src/data_engine/docs/html/api.html +0 -1093
- py_data_engine-0.1.2/src/data_engine/docs/html/genindex.html +0 -483
- py_data_engine-0.1.2/src/data_engine/docs/html/objects.inv +0 -0
- py_data_engine-0.1.2/src/data_engine/docs/html/searchindex.js +0 -1
- py_data_engine-0.1.2/src/data_engine/docs/sphinx_source/api.rst +0 -42
- py_data_engine-0.1.2/src/data_engine/docs/sphinx_source/guides/project-map.md +0 -118
- py_data_engine-0.1.2/src/data_engine/hosts/__init__.py +0 -1
- py_data_engine-0.1.2/src/data_engine/services/runtime_binding.py +0 -151
- py_data_engine-0.1.2/src/data_engine/services/runtime_execution.py +0 -126
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/LICENSE +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/README.md +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/setup.cfg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/application/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/application/actions.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/application/control.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/application/details.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/application/workspace.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/devtools/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/app-runtime-and-workspaces.md.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/authoring-flow-modules.md.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/configuring-flows.md.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/core-concepts.md.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/flow-context.md.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/guides/recipes.md.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_sources/index.rst.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/base-stemmer.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/basic.css +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/badge_only.css +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/css/theme.css +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/custom.css +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/doctools.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/english-stemmer.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/file.png +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/jquery.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/js/badge_only.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/js/theme.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/js/versions.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/language_data.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/minus.png +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/plus.png +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/pygments.css +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/searchtools.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/html/_static/sphinx_highlight.js +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/_static/custom.css +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/app-runtime-and-workspaces.md +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/authoring-flow-modules.md +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/configuring-flows.md +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/core-concepts.md +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/flow-context.md +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/guides/recipes.md +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/docs/sphinx_source/index.rst +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/catalog.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/details.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/diagnostics.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/errors.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/inspection.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/logs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/operations.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/operator.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/runs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/runtime.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/source_state.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/support.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/domain/time.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/flow_modules/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/bootstrap.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/commands.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/entrypoints.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/ownership.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/hosts/daemon/runtime_control.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/platform/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/platform/theme.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/runtime/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/runtime/ledger_models.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/daemon.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/daemon_state.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/settings.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/theme.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/services/workspaces.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/dependencies.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/cli/parser.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/cache_models.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/controllers/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/controllers/flows.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/dialogs/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/dialogs/messages.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/helpers/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/helpers/lifecycle.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/helpers/scroll.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/helpers/theming.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/dark_light.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/documentation.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/failed.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/group.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/home.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/manual.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/poll.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/schedule.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/settings.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/started.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/success.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons/view-log.svg +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/icons.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/docs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/logs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/runtime_projection.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/sidebar.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/steps.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/workspace.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/presenters/workspace_binding.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/preview_models.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/render_support.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/rendering/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/rendering/artifacts.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/rendering/icons.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/surface.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/theme.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/widgets/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/widgets/config.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/widgets/logs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/widgets/sidebar.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/gui/widgets/steps.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/bootstrapper.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/controllers/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/runtime.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/support.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/theme.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/ui/tui/widgets.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/__init__.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/actions.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/artifacts.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/flow_display.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/models.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/presentation.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/runs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/status.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/data_engine/views/text.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/py_data_engine.egg-info/dependency_links.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/py_data_engine.egg-info/entry_points.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/src/py_data_engine.egg-info/top_level.txt +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_authoring_services.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_catalog.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_errors.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_logs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_operations.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_operator.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_runs.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_runtime.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_support.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_domain_workspace.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_export_project_bundle_script.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_platform_identity.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_smoke_data.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_sources.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_theme.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_ui_runtime_theme.py +0 -0
- {py_data_engine-0.1.2 → py_data_engine-0.2.1}/tests/test_ui_state.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: py-data-engine
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.2.1
|
|
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
|
|
@@ -18,6 +18,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
18
18
|
Requires-Python: >=3.14
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE
|
|
21
|
+
Requires-Dist: APScheduler>=3.11.0
|
|
21
22
|
Requires-Dist: duckdb>=1.5.0
|
|
22
23
|
Requires-Dist: fastexcel>=0.19.0
|
|
23
24
|
Requires-Dist: polars>=1.39.0
|
|
@@ -57,10 +58,12 @@ Requires-Dist: notebook>=7.4.0; extra == "dev"
|
|
|
57
58
|
Requires-Dist: numpy>=2.4.0; extra == "dev"
|
|
58
59
|
Requires-Dist: openpyxl>=3.1.0; extra == "dev"
|
|
59
60
|
Requires-Dist: pandas>=3.0.0; extra == "dev"
|
|
61
|
+
Requires-Dist: pydoclint>=0.7.6; extra == "dev"
|
|
60
62
|
Requires-Dist: pydocstyle>=6.3.0; extra == "dev"
|
|
61
63
|
Requires-Dist: pyinstaller>=6.15.0; extra == "dev"
|
|
62
64
|
Requires-Dist: pytest>=9.0.0; extra == "dev"
|
|
63
65
|
Requires-Dist: pytest-cov>=7.0.0; extra == "dev"
|
|
66
|
+
Requires-Dist: ruff>=0.15.10; extra == "dev"
|
|
64
67
|
Requires-Dist: Sphinx>=9.1.0; extra == "dev"
|
|
65
68
|
Requires-Dist: sphinx_rtd_theme>=3.1.0; extra == "dev"
|
|
66
69
|
Dynamic: license-file
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
requires = [
|
|
3
3
|
"setuptools>=68",
|
|
4
4
|
"wheel",
|
|
5
|
+
"APScheduler>=3.11.0",
|
|
6
|
+
"duckdb>=1.5.0",
|
|
5
7
|
"polars>=1.39.0",
|
|
6
8
|
"myst-parser>=4.0.0",
|
|
7
9
|
"Sphinx>=9.1.0",
|
|
@@ -11,7 +13,7 @@ build-backend = "setuptools.build_meta"
|
|
|
11
13
|
|
|
12
14
|
[project]
|
|
13
15
|
name = "py-data-engine"
|
|
14
|
-
|
|
16
|
+
dynamic = ["version"]
|
|
15
17
|
description = "Workbook-driven workflow jobs with strict filename parsing and DuckDB-backed processing."
|
|
16
18
|
readme = "README.md"
|
|
17
19
|
requires-python = ">=3.14"
|
|
@@ -31,6 +33,7 @@ classifiers = [
|
|
|
31
33
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
32
34
|
]
|
|
33
35
|
dependencies = [
|
|
36
|
+
"APScheduler>=3.11.0",
|
|
34
37
|
"duckdb>=1.5.0",
|
|
35
38
|
"fastexcel>=0.19.0",
|
|
36
39
|
"polars>=1.39.0",
|
|
@@ -87,10 +90,12 @@ dev = [
|
|
|
87
90
|
"numpy>=2.4.0",
|
|
88
91
|
"openpyxl>=3.1.0",
|
|
89
92
|
"pandas>=3.0.0",
|
|
93
|
+
"pydoclint>=0.7.6",
|
|
90
94
|
"pydocstyle>=6.3.0",
|
|
91
95
|
"pyinstaller>=6.15.0",
|
|
92
96
|
"pytest>=9.0.0",
|
|
93
97
|
"pytest-cov>=7.0.0",
|
|
98
|
+
"ruff>=0.15.10",
|
|
94
99
|
"Sphinx>=9.1.0",
|
|
95
100
|
"sphinx_rtd_theme>=3.1.0",
|
|
96
101
|
]
|
|
@@ -114,6 +119,9 @@ data_engine = [
|
|
|
114
119
|
"docs/html/**/*",
|
|
115
120
|
]
|
|
116
121
|
|
|
122
|
+
[tool.setuptools.dynamic]
|
|
123
|
+
version = {attr = "data_engine.platform.identity.APP_VERSION"}
|
|
124
|
+
|
|
117
125
|
[tool.pytest.ini_options]
|
|
118
126
|
pythonpath = ["src"]
|
|
119
127
|
testpaths = ["tests"]
|
|
@@ -12,11 +12,22 @@ from setuptools.command.sdist import sdist as _sdist
|
|
|
12
12
|
ROOT = Path(__file__).resolve().parent
|
|
13
13
|
DOCS_SOURCE_DIR = ROOT / "src" / "data_engine" / "docs" / "sphinx_source"
|
|
14
14
|
DOCS_OUTPUT_DIR = ROOT / "src" / "data_engine" / "docs" / "html"
|
|
15
|
+
PROJECT_AST_MAP_SCRIPT = ROOT / "src" / "data_engine" / "devtools" / "project_ast_map.py"
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
def _build_packaged_docs() -> None:
|
|
18
19
|
if not DOCS_SOURCE_DIR.is_dir():
|
|
19
20
|
raise FileNotFoundError(f"Packaged docs source directory is missing: {DOCS_SOURCE_DIR}")
|
|
21
|
+
subprocess.run(
|
|
22
|
+
[
|
|
23
|
+
sys.executable,
|
|
24
|
+
str(PROJECT_AST_MAP_SCRIPT),
|
|
25
|
+
str(ROOT / "src" / "data_engine"),
|
|
26
|
+
"--write-docs",
|
|
27
|
+
str(DOCS_SOURCE_DIR / "guides"),
|
|
28
|
+
],
|
|
29
|
+
check=True,
|
|
30
|
+
)
|
|
20
31
|
subprocess.run(
|
|
21
32
|
[
|
|
22
33
|
sys.executable,
|
|
@@ -5,11 +5,11 @@ from __future__ import annotations
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING:
|
|
8
|
-
from data_engine.authoring.
|
|
9
|
-
from data_engine.authoring.
|
|
10
|
-
from data_engine.
|
|
11
|
-
from data_engine.
|
|
12
|
-
from data_engine.
|
|
8
|
+
from data_engine.authoring.flow import Flow
|
|
9
|
+
from data_engine.authoring.flow import discover_flows, load_flow, run
|
|
10
|
+
from data_engine.core.primitives import Batch
|
|
11
|
+
from data_engine.core.primitives import FileRef
|
|
12
|
+
from data_engine.core.primitives import FlowContext
|
|
13
13
|
|
|
14
14
|
__all__ = ["Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_flow", "run"]
|
|
15
15
|
|
|
@@ -17,13 +17,13 @@ __all__ = ["Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_fl
|
|
|
17
17
|
def __getattr__(name: str):
|
|
18
18
|
"""Lazy-load runtime symbols so lightweight helpers can import package submodules safely."""
|
|
19
19
|
if name in {"Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_flow", "run"}:
|
|
20
|
-
from data_engine.authoring.
|
|
21
|
-
from data_engine.authoring.
|
|
22
|
-
from data_engine.authoring.
|
|
23
|
-
from data_engine.authoring.
|
|
24
|
-
from data_engine.
|
|
25
|
-
from data_engine.
|
|
26
|
-
from data_engine.
|
|
20
|
+
from data_engine.authoring.flow import Flow
|
|
21
|
+
from data_engine.authoring.flow import discover_flows
|
|
22
|
+
from data_engine.authoring.flow import load_flow
|
|
23
|
+
from data_engine.authoring.flow import run
|
|
24
|
+
from data_engine.core.primitives import Batch
|
|
25
|
+
from data_engine.core.primitives import FileRef
|
|
26
|
+
from data_engine.core.primitives import FlowContext
|
|
27
27
|
|
|
28
28
|
return {
|
|
29
29
|
"Batch": Batch,
|
|
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
|
-
from data_engine.
|
|
8
|
+
from data_engine.core.model import FlowValidationError
|
|
9
9
|
from data_engine.domain import FlowCatalogEntry, FlowCatalogLike, FlowCatalogState
|
|
10
10
|
from data_engine.platform.workspace_models import WorkspacePaths
|
|
11
11
|
from data_engine.services import FlowCatalogService
|
|
@@ -86,7 +86,10 @@ class FlowCatalogApplication:
|
|
|
86
86
|
"""Load discovered entries and merge them into one catalog state."""
|
|
87
87
|
base = current_state or FlowCatalogState.empty()
|
|
88
88
|
entries = self.flow_catalog_service.load_entries(workspace_root=workspace_root)
|
|
89
|
-
|
|
89
|
+
state = base.with_entries(entries).with_empty_message("")
|
|
90
|
+
if base.selected_flow_name is not None and state.selected_flow_name == base.selected_flow_name:
|
|
91
|
+
return state
|
|
92
|
+
return state.with_selected_flow_name(_first_grouped_entry_name(state.entries))
|
|
90
93
|
|
|
91
94
|
def empty_state(
|
|
92
95
|
self,
|
|
@@ -149,3 +152,11 @@ class FlowCatalogApplication:
|
|
|
149
152
|
error_text=message,
|
|
150
153
|
)
|
|
151
154
|
return FlowCatalogLoadResult(catalog_state=catalog_state, loaded=True)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def _first_grouped_entry_name(entries: tuple[FlowCatalogEntry, ...]) -> str | None:
|
|
158
|
+
"""Return the first entry name in the same grouped order used by operator surfaces."""
|
|
159
|
+
for bucket in group_cards(entries):
|
|
160
|
+
if bucket.entries:
|
|
161
|
+
return bucket.entries[0].name
|
|
162
|
+
return None
|
|
@@ -7,7 +7,7 @@ from datetime import UTC, datetime
|
|
|
7
7
|
from typing import Any
|
|
8
8
|
from collections.abc import Iterable
|
|
9
9
|
|
|
10
|
-
from data_engine.
|
|
10
|
+
from data_engine.core.model import FlowStoppedError
|
|
11
11
|
from data_engine.domain import (
|
|
12
12
|
DaemonLifecyclePolicy,
|
|
13
13
|
DaemonStatusState,
|
|
@@ -10,5 +10,8 @@ __all__ = ["Batch", "FileRef", "Flow", "FlowContext", "discover_flows", "load_fl
|
|
|
10
10
|
def __getattr__(name: str):
|
|
11
11
|
if name not in __all__:
|
|
12
12
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if name in {"Flow", "discover_flows", "load_flow", "run"}:
|
|
14
|
+
module = import_module("data_engine.authoring.flow")
|
|
15
|
+
return getattr(module, name)
|
|
16
|
+
module = import_module("data_engine.core.primitives")
|
|
17
|
+
return getattr(module, name)
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"""Flow DSL and public authoring entrypoints."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
from data_engine.core.flow import Flow as _CoreFlow
|
|
9
|
+
from data_engine.core.helpers import _validate_slot_name
|
|
10
|
+
from data_engine.core.model import FlowValidationError
|
|
11
|
+
from data_engine.core.primitives import FlowContext
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from data_engine.authoring.services import AuthoringServices
|
|
15
|
+
from data_engine.services.flow_execution import FlowExecutionService
|
|
16
|
+
from data_engine.services.runtime_execution import RuntimeExecutionService
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _resolve_authoring_services(
|
|
20
|
+
*,
|
|
21
|
+
authoring_services: AuthoringServices | None = None,
|
|
22
|
+
runtime_execution_service: RuntimeExecutionService | None = None,
|
|
23
|
+
flow_execution_service: FlowExecutionService | None = None,
|
|
24
|
+
) -> AuthoringServices:
|
|
25
|
+
"""Return one authoring collaborator bundle with explicit overrides applied."""
|
|
26
|
+
from data_engine.authoring.services import build_authoring_services, default_authoring_services
|
|
27
|
+
|
|
28
|
+
services = authoring_services or default_authoring_services()
|
|
29
|
+
if runtime_execution_service is None and flow_execution_service is None:
|
|
30
|
+
return services
|
|
31
|
+
return build_authoring_services(
|
|
32
|
+
runtime_execution_service=runtime_execution_service or services.runtime_execution_service,
|
|
33
|
+
flow_execution_service=flow_execution_service or services.flow_execution_service,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class Flow(_CoreFlow):
|
|
38
|
+
"""Public authoring flow with execution conveniences layered over core definitions."""
|
|
39
|
+
|
|
40
|
+
def run_once(
|
|
41
|
+
self,
|
|
42
|
+
*,
|
|
43
|
+
authoring_services: AuthoringServices | None = None,
|
|
44
|
+
runtime_execution_service: RuntimeExecutionService | None = None,
|
|
45
|
+
) -> list[FlowContext]:
|
|
46
|
+
"""Run this flow once and return completed runtime contexts.
|
|
47
|
+
|
|
48
|
+
Parameters
|
|
49
|
+
----------
|
|
50
|
+
authoring_services : AuthoringServices | None
|
|
51
|
+
Optional service bundle used by tests or embedded hosts.
|
|
52
|
+
runtime_execution_service : RuntimeExecutionService | None
|
|
53
|
+
Optional runtime execution service override.
|
|
54
|
+
|
|
55
|
+
Returns
|
|
56
|
+
-------
|
|
57
|
+
list[FlowContext]
|
|
58
|
+
One context per executed source.
|
|
59
|
+
"""
|
|
60
|
+
service = _resolve_authoring_services(
|
|
61
|
+
authoring_services=authoring_services,
|
|
62
|
+
runtime_execution_service=runtime_execution_service,
|
|
63
|
+
).runtime_execution_service
|
|
64
|
+
return service.run_once(self)
|
|
65
|
+
|
|
66
|
+
def preview(
|
|
67
|
+
self,
|
|
68
|
+
*,
|
|
69
|
+
use: str | None = None,
|
|
70
|
+
authoring_services: AuthoringServices | None = None,
|
|
71
|
+
runtime_execution_service: RuntimeExecutionService | None = None,
|
|
72
|
+
) -> object:
|
|
73
|
+
"""Run this flow in preview mode and return one preview value.
|
|
74
|
+
|
|
75
|
+
Parameters
|
|
76
|
+
----------
|
|
77
|
+
use : str | None
|
|
78
|
+
Optional named object slot to preview instead of the final current
|
|
79
|
+
value.
|
|
80
|
+
authoring_services : AuthoringServices | None
|
|
81
|
+
Optional service bundle used by tests or embedded hosts.
|
|
82
|
+
runtime_execution_service : RuntimeExecutionService | None
|
|
83
|
+
Optional runtime execution service override.
|
|
84
|
+
|
|
85
|
+
Returns
|
|
86
|
+
-------
|
|
87
|
+
object
|
|
88
|
+
Preview value returned by the runtime execution service.
|
|
89
|
+
|
|
90
|
+
Raises
|
|
91
|
+
------
|
|
92
|
+
FlowValidationError
|
|
93
|
+
If preview is requested from inside a compiled flow module.
|
|
94
|
+
"""
|
|
95
|
+
from data_engine.flow_modules.flow_module_loader import in_compiled_flow_module_context
|
|
96
|
+
|
|
97
|
+
if in_compiled_flow_module_context():
|
|
98
|
+
raise FlowValidationError("preview() is not available inside compiled flow modules.")
|
|
99
|
+
normalized_use = _validate_slot_name(method_name="preview", slot_name="use", value=use)
|
|
100
|
+
service = _resolve_authoring_services(
|
|
101
|
+
authoring_services=authoring_services,
|
|
102
|
+
runtime_execution_service=runtime_execution_service,
|
|
103
|
+
).runtime_execution_service
|
|
104
|
+
return service.preview(self, use=normalized_use)
|
|
105
|
+
|
|
106
|
+
def show(self) -> object:
|
|
107
|
+
"""Run this flow once and return the single final current value.
|
|
108
|
+
|
|
109
|
+
Returns
|
|
110
|
+
-------
|
|
111
|
+
object
|
|
112
|
+
Final ``context.current`` value.
|
|
113
|
+
|
|
114
|
+
Raises
|
|
115
|
+
------
|
|
116
|
+
FlowValidationError
|
|
117
|
+
If called from a compiled flow module or the flow produces anything
|
|
118
|
+
other than one result.
|
|
119
|
+
"""
|
|
120
|
+
from data_engine.flow_modules.flow_module_loader import in_compiled_flow_module_context
|
|
121
|
+
|
|
122
|
+
if in_compiled_flow_module_context():
|
|
123
|
+
raise FlowValidationError("show() is not available inside compiled flow modules.")
|
|
124
|
+
results = self.run_once()
|
|
125
|
+
if len(results) != 1:
|
|
126
|
+
raise FlowValidationError(f"show() requires exactly one result, found {len(results)}.")
|
|
127
|
+
return results[0].current
|
|
128
|
+
|
|
129
|
+
def run(
|
|
130
|
+
self,
|
|
131
|
+
*,
|
|
132
|
+
authoring_services: AuthoringServices | None = None,
|
|
133
|
+
runtime_execution_service: RuntimeExecutionService | None = None,
|
|
134
|
+
) -> list[FlowContext]:
|
|
135
|
+
"""Run this flow continuously according to its trigger.
|
|
136
|
+
|
|
137
|
+
Parameters
|
|
138
|
+
----------
|
|
139
|
+
authoring_services : AuthoringServices | None
|
|
140
|
+
Optional service bundle used by tests or embedded hosts.
|
|
141
|
+
runtime_execution_service : RuntimeExecutionService | None
|
|
142
|
+
Optional runtime execution service override.
|
|
143
|
+
|
|
144
|
+
Returns
|
|
145
|
+
-------
|
|
146
|
+
list[FlowContext]
|
|
147
|
+
Completed contexts collected before the runtime exits.
|
|
148
|
+
"""
|
|
149
|
+
service = _resolve_authoring_services(
|
|
150
|
+
authoring_services=authoring_services,
|
|
151
|
+
runtime_execution_service=runtime_execution_service,
|
|
152
|
+
).runtime_execution_service
|
|
153
|
+
return service.run_continuous(self)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def load_flow(
|
|
157
|
+
name: str,
|
|
158
|
+
*,
|
|
159
|
+
data_root: Path | None = None,
|
|
160
|
+
authoring_services: AuthoringServices | None = None,
|
|
161
|
+
flow_execution_service: FlowExecutionService | None = None,
|
|
162
|
+
) -> Flow:
|
|
163
|
+
"""Load one code-defined flow by flow-module name."""
|
|
164
|
+
service = _resolve_authoring_services(
|
|
165
|
+
authoring_services=authoring_services,
|
|
166
|
+
flow_execution_service=flow_execution_service,
|
|
167
|
+
).flow_execution_service
|
|
168
|
+
return service.load_flow(name, workspace_root=data_root)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def discover_flows(
|
|
172
|
+
*,
|
|
173
|
+
data_root: Path | None = None,
|
|
174
|
+
authoring_services: AuthoringServices | None = None,
|
|
175
|
+
flow_execution_service: FlowExecutionService | None = None,
|
|
176
|
+
) -> tuple[Flow, ...]:
|
|
177
|
+
"""Discover and build all code-defined flows from compiled flow modules."""
|
|
178
|
+
service = _resolve_authoring_services(
|
|
179
|
+
authoring_services=authoring_services,
|
|
180
|
+
flow_execution_service=flow_execution_service,
|
|
181
|
+
).flow_execution_service
|
|
182
|
+
return service.discover_flows(workspace_root=data_root)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def run(
|
|
186
|
+
*flows: Flow,
|
|
187
|
+
authoring_services: AuthoringServices | None = None,
|
|
188
|
+
runtime_execution_service: RuntimeExecutionService | None = None,
|
|
189
|
+
) -> list[FlowContext]:
|
|
190
|
+
"""Run multiple flows with sequential execution per group and parallel groups."""
|
|
191
|
+
service = _resolve_authoring_services(
|
|
192
|
+
authoring_services=authoring_services,
|
|
193
|
+
runtime_execution_service=runtime_execution_service,
|
|
194
|
+
).runtime_execution_service
|
|
195
|
+
return service.run_grouped_continuous(tuple(flows))
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
__all__ = ["Flow", "discover_flows", "load_flow", "run"]
|
|
@@ -4,9 +4,11 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from functools import lru_cache
|
|
7
|
+
from typing import TYPE_CHECKING
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
from data_engine.services.
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from data_engine.services.flow_execution import FlowExecutionService
|
|
11
|
+
from data_engine.services.runtime_execution import RuntimeExecutionService
|
|
10
12
|
|
|
11
13
|
|
|
12
14
|
@dataclass(frozen=True)
|
|
@@ -23,6 +25,9 @@ def build_authoring_services(
|
|
|
23
25
|
flow_execution_service: FlowExecutionService | None = None,
|
|
24
26
|
) -> AuthoringServices:
|
|
25
27
|
"""Build one authoring collaborator bundle with optional overrides."""
|
|
28
|
+
from data_engine.services.flow_execution import FlowExecutionService
|
|
29
|
+
from data_engine.services.runtime_execution import RuntimeExecutionService
|
|
30
|
+
|
|
26
31
|
return AuthoringServices(
|
|
27
32
|
runtime_execution_service=runtime_execution_service or RuntimeExecutionService(),
|
|
28
33
|
flow_execution_service=flow_execution_service or FlowExecutionService(),
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Core flow definitions and runtime primitives."""
|
|
2
|
+
|
|
3
|
+
from data_engine.core.flow import Flow
|
|
4
|
+
from data_engine.core.model import FlowExecutionError, FlowStoppedError, FlowValidationError
|
|
5
|
+
from data_engine.core.primitives import (
|
|
6
|
+
Batch,
|
|
7
|
+
FileRef,
|
|
8
|
+
FlowContext,
|
|
9
|
+
MirrorContext,
|
|
10
|
+
MirrorSpec,
|
|
11
|
+
SourceContext,
|
|
12
|
+
SourceMetadata,
|
|
13
|
+
StepSpec,
|
|
14
|
+
WatchSpec,
|
|
15
|
+
WorkspaceConfigContext,
|
|
16
|
+
collect_files,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
__all__ = [
|
|
20
|
+
"Batch",
|
|
21
|
+
"FileRef",
|
|
22
|
+
"Flow",
|
|
23
|
+
"FlowContext",
|
|
24
|
+
"FlowExecutionError",
|
|
25
|
+
"FlowStoppedError",
|
|
26
|
+
"FlowValidationError",
|
|
27
|
+
"MirrorContext",
|
|
28
|
+
"MirrorSpec",
|
|
29
|
+
"SourceContext",
|
|
30
|
+
"SourceMetadata",
|
|
31
|
+
"StepSpec",
|
|
32
|
+
"WatchSpec",
|
|
33
|
+
"WorkspaceConfigContext",
|
|
34
|
+
"collect_files",
|
|
35
|
+
]
|