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