py-data-engine 0.3.11__tar.gz → 0.4.0__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.4.0/PKG-INFO +230 -0
- py_data_engine-0.4.0/README.md +159 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/pyproject.toml +53 -55
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/application/actions.py +0 -4
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/application/runtime.py +13 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/authoring/flow.py +2 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/core/flow.py +1 -1
- py_data_engine-0.4.0/src/data_engine/daemon_bootstrap.py +275 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/authoring/flow.html +3 -3
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/core/flow.html +2 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/core/model.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/core/primitives.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_dimensions.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_maintenance.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_read.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_replace.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/helpers/excel.html +43 -8
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/helpers/polars.html +237 -69
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/helpers/schema.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/hosts/scheduler.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/runtime/engine.html +2 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/grouped.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/single.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/runtime/file_watch.html +17 -16
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/runtime/result_cleanup.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/runtime/stop.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/daemon.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/daemon_state.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/flow_catalog.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/flow_execution.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/ledger.html +8 -16
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/logs.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/runtime_binding.html +41 -5
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/runtime_execution.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/runtime_history.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/settings.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/shared_state.html +49 -10
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/theme.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/workspace_provisioning.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/data_engine/services/workspaces.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_modules/index.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/app-runtime-and-workspaces.md.txt +53 -23
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/getting-started.md.txt +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/polars-helpers.md.txt +30 -9
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/project-inventory.md.txt +1461 -735
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/project-map.md.txt +23 -22
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/recipes.md.txt +2 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/documentation_options.js +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/api.html +365 -85
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/genindex.html +23 -7
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/app-runtime-and-workspaces.html +55 -25
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/authoring-flow-modules.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/configuring-flows.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/core-concepts.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/database-methods.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/duckdb-helpers.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/excel-helpers.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/flow-context.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/flow-methods.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/getting-started.html +2 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/polars-helpers.html +29 -10
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/project-inventory.html +7544 -6458
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/project-map.html +91 -84
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/guides/recipes.html +3 -3
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/index.html +1 -1
- py_data_engine-0.4.0/src/data_engine/docs/html/objects.inv +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/py-modindex.html +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/search.html +1 -1
- py_data_engine-0.4.0/src/data_engine/docs/html/searchindex.js +1 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/app-runtime-and-workspaces.md +53 -23
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/getting-started.md +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/polars-helpers.md +30 -9
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/project-inventory.md +1461 -735
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/project-map.md +23 -22
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/recipes.md +2 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/actions.py +0 -8
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/runtime.py +8 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/__init__.py +2 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/excel.py +42 -7
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/polars.py +224 -65
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/app.py +47 -10
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/bootstrap.py +51 -27
- py_data_engine-0.4.0/src/data_engine/hosts/daemon/client.py +2218 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/commands.py +23 -4
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/composition.py +139 -16
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/constants.py +0 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/entrypoints.py +27 -4
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/lifecycle.py +172 -45
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/manager.py +34 -22
- py_data_engine-0.4.0/src/data_engine/hosts/daemon/ownership.py +205 -0
- py_data_engine-0.4.0/src/data_engine/hosts/daemon/runtime_commands.py +410 -0
- py_data_engine-0.4.0/src/data_engine/hosts/daemon/runtime_control.py +196 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/runtime_events.py +6 -0
- py_data_engine-0.4.0/src/data_engine/hosts/daemon/server.py +302 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/shared_state.py +78 -11
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/state_sync.py +53 -22
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/identity.py +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/local_settings.py +56 -0
- py_data_engine-0.4.0/src/data_engine/platform/machine_identity.py +58 -0
- py_data_engine-0.4.0/src/data_engine/platform/posix_watchdog.py +764 -0
- py_data_engine-0.4.0/src/data_engine/platform/processes.py +1566 -0
- py_data_engine-0.4.0/src/data_engine/platform/windows_spawn.py +727 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/workspace_models.py +45 -33
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/workspace_policy.py +22 -25
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/engine.py +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/continuous.py +19 -14
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/runner.py +10 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/file_watch.py +16 -15
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/ledger_models.py +6 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/runtime_cache_store.py +90 -6
- py_data_engine-0.4.0/src/data_engine/runtime/runtime_control_store.py +514 -0
- py_data_engine-0.4.0/src/data_engine/runtime/shared_state.py +2066 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/sqlite_store.py +35 -5
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/debug_artifacts.py +31 -8
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/ledger.py +4 -12
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/operator_commands.py +11 -11
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/operator_queries.py +1 -1
- py_data_engine-0.4.0/src/data_engine/services/reset.py +68 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/runtime_binding.py +39 -3
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/runtime_io.py +208 -53
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/runtime_ports.py +6 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/runtime_state.py +6 -2
- py_data_engine-0.4.0/src/data_engine/services/shared_state.py +69 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/workspace_io.py +178 -56
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/__init__.py +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/app.py +5 -6
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/commands_doctor.py +49 -10
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/commands_run.py +2 -6
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/commands_start.py +0 -11
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/parser.py +2 -5
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/app_binding.py +0 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/controllers/flows.py +0 -7
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/dialogs/inputs.py +7 -17
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/launcher.py +13 -4
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/logs.py +0 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/sidebar.py +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/workspace_binding.py +5 -3
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/rendering/artifacts.py +54 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/surface.py +1 -1
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/widgets/sidebar.py +2 -2
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/__init__.py +1 -22
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/actions.py +1 -53
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/flow_display.py +4 -16
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/presentation.py +1 -25
- py_data_engine-0.4.0/src/py_data_engine.egg-info/PKG-INFO +230 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/py_data_engine.egg-info/SOURCES.txt +4 -13
- py_data_engine-0.4.0/src/py_data_engine.egg-info/requires.txt +55 -0
- py_data_engine-0.3.11/PKG-INFO +0 -446
- py_data_engine-0.3.11/README.md +0 -374
- py_data_engine-0.3.11/src/data_engine/docs/html/objects.inv +0 -0
- py_data_engine-0.3.11/src/data_engine/docs/html/searchindex.js +0 -1
- py_data_engine-0.3.11/src/data_engine/hosts/daemon/client.py +0 -533
- py_data_engine-0.3.11/src/data_engine/hosts/daemon/ownership.py +0 -131
- py_data_engine-0.3.11/src/data_engine/hosts/daemon/runtime_commands.py +0 -301
- py_data_engine-0.3.11/src/data_engine/hosts/daemon/runtime_control.py +0 -35
- py_data_engine-0.3.11/src/data_engine/hosts/daemon/server.py +0 -118
- py_data_engine-0.3.11/src/data_engine/platform/processes.py +0 -218
- py_data_engine-0.3.11/src/data_engine/runtime/runtime_control_store.py +0 -251
- py_data_engine-0.3.11/src/data_engine/runtime/shared_state.py +0 -621
- py_data_engine-0.3.11/src/data_engine/services/reset.py +0 -61
- py_data_engine-0.3.11/src/data_engine/services/shared_state.py +0 -39
- py_data_engine-0.3.11/src/data_engine/ui/tui/__init__.py +0 -5
- py_data_engine-0.3.11/src/data_engine/ui/tui/app.py +0 -237
- py_data_engine-0.3.11/src/data_engine/ui/tui/app_binding.py +0 -126
- py_data_engine-0.3.11/src/data_engine/ui/tui/bootstrap.py +0 -471
- py_data_engine-0.3.11/src/data_engine/ui/tui/controllers/__init__.py +0 -6
- py_data_engine-0.3.11/src/data_engine/ui/tui/controllers/flows.py +0 -486
- py_data_engine-0.3.11/src/data_engine/ui/tui/controllers/runtime.py +0 -358
- py_data_engine-0.3.11/src/data_engine/ui/tui/runtime.py +0 -34
- py_data_engine-0.3.11/src/data_engine/ui/tui/state_support.py +0 -136
- py_data_engine-0.3.11/src/data_engine/ui/tui/support.py +0 -142
- py_data_engine-0.3.11/src/data_engine/ui/tui/theme.py +0 -204
- py_data_engine-0.3.11/src/data_engine/ui/tui/widgets.py +0 -123
- py_data_engine-0.3.11/src/data_engine/views/text.py +0 -109
- py_data_engine-0.3.11/src/py_data_engine.egg-info/PKG-INFO +0 -446
- py_data_engine-0.3.11/src/py_data_engine.egg-info/requires.txt +0 -57
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/LICENSE +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/MANIFEST.in +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/setup.cfg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/setup.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/application/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/application/catalog.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/application/control.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/application/details.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/application/workspace.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/authoring/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/authoring/services.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/core/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/core/helpers.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/core/model.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/core/primitives.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/devtools/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/devtools/project_ast_map.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/devtools/smoke_data.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/api.rst.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/authoring-flow-modules.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/configuring-flows.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/core-concepts.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/database-methods.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/duckdb-helpers.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/excel-helpers.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/flow-context.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/guides/flow-methods.md.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_sources/index.rst.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/base-stemmer.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/basic.css +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/badge_only.css +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/css/theme.css +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/custom.css +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/doctools.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/english-stemmer.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/file.png +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/jquery.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/js/badge_only.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/js/theme.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/js/versions.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/language_data.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/minus.png +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/plus.png +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/pygments.css +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/searchtools.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/html/_static/sphinx_highlight.js +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/_static/custom.css +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/api.rst +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/conf.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/authoring-flow-modules.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/configuring-flows.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/core-concepts.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/database-methods.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/duckdb-helpers.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/excel-helpers.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/flow-context.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/guides/flow-methods.md +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/docs/sphinx_source/index.rst +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/catalog.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/debug_artifacts.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/details.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/diagnostics.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/errors.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/inspection.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/logs.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/operations.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/operator.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/runs.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/source_state.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/support.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/time.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/domain/workspace.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/flow_modules/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/flow_modules/flow_module_compiler.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/flow_modules/flow_module_loader.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/duckdb/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/duckdb/_common.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/duckdb/_dimensions.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/duckdb/_maintenance.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/duckdb/_read.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/duckdb/_replace.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/helpers/schema.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/daemon/runtime_ledger.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/hosts/scheduler.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/instrumentation.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/interpreters.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/paths.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/platform/theme.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/app.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/context.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/grouped.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/logging.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/polling.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/execution/single.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/result_cleanup.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/runtime_db.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/runtime/stop.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/daemon.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/daemon_state.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/flow_catalog.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/flow_execution.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/logs.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/runtime_execution.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/runtime_history.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/settings.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/theme.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/workspace_provisioning.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/services/workspaces.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/commands_workspace.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/cli/dependencies.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/app.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/bootstrap.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/cache_models.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/control_support.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/controllers/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/controllers/runtime.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/dialogs/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/dialogs/messages.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/dialogs/previews.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/helpers/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/helpers/inspection.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/helpers/lifecycle.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/helpers/scroll.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/helpers/theming.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/check-mark-dark.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/check-mark-light.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/dark_light.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/dataframe.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/debug.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/documentation.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/down-chevron-dark.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/down-chevron-light.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/failed.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/group.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/home.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/manual.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/poll.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/schedule.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/select-all-all.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/select-all-none.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/select-all-partial.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/settings.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/sort-ascending.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/sort-descending.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/started.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/success.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/up-chevron-dark.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/up-chevron-light.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons/view-log.svg +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/icons.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/dataframes.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/debug.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/docs.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/runtime_projection.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/steps.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/workspace.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/presenters/workspace_settings.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/preview_models.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/render_support.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/rendering/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/rendering/icons.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/rendering/preview_filters.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/runtime.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/state_support.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/support.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/theme.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/widgets/__init__.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/widgets/config.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/widgets/log_list.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/widgets/logs.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/widgets/panels.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/ui/gui/widgets/steps.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/artifacts.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/logs.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/models.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/runs.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/selection.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/state.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/data_engine/views/status.py +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/py_data_engine.egg-info/dependency_links.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/py_data_engine.egg-info/entry_points.txt +0 -0
- {py_data_engine-0.3.11 → py_data_engine-0.4.0}/src/py_data_engine.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: py-data-engine
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: GUI orchestrator for python-based dataframe transform pipelines.
|
|
5
|
+
Author: Data Engine contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/bj-data-eng/data-engine
|
|
8
|
+
Project-URL: Repository, https://github.com/bj-data-eng/data-engine
|
|
9
|
+
Project-URL: Issues, https://github.com/bj-data-eng/data-engine/issues
|
|
10
|
+
Keywords: duckdb,excel,parquet,flow,polars,notebook
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Classifier: Topic :: Database
|
|
16
|
+
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Requires-Python: >=3.14
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: APScheduler==3.11.3
|
|
22
|
+
Requires-Dist: duckdb==1.5.4
|
|
23
|
+
Requires-Dist: fastexcel==0.20.2
|
|
24
|
+
Requires-Dist: numpy==2.5.1
|
|
25
|
+
Requires-Dist: openpyxl==3.1.5
|
|
26
|
+
Requires-Dist: polars==1.42.1
|
|
27
|
+
Requires-Dist: pyarrow==25.0.0
|
|
28
|
+
Requires-Dist: PySide6==6.11.1
|
|
29
|
+
Requires-Dist: xlsxwriter==3.2.9
|
|
30
|
+
Provides-Extra: synthetic
|
|
31
|
+
Requires-Dist: openpyxl==3.1.5; extra == "synthetic"
|
|
32
|
+
Requires-Dist: pandas==3.0.3; extra == "synthetic"
|
|
33
|
+
Provides-Extra: notebook
|
|
34
|
+
Requires-Dist: ipykernel==7.3.0; extra == "notebook"
|
|
35
|
+
Requires-Dist: ipython==9.15.0; extra == "notebook"
|
|
36
|
+
Requires-Dist: jupyterlab==4.6.1; extra == "notebook"
|
|
37
|
+
Requires-Dist: notebook==7.6.0; extra == "notebook"
|
|
38
|
+
Provides-Extra: docs
|
|
39
|
+
Requires-Dist: myst-parser==5.1.0; extra == "docs"
|
|
40
|
+
Requires-Dist: Sphinx==9.1.0; extra == "docs"
|
|
41
|
+
Requires-Dist: sphinx_rtd_theme==3.1.0; extra == "docs"
|
|
42
|
+
Provides-Extra: package
|
|
43
|
+
Requires-Dist: build==1.5.1; extra == "package"
|
|
44
|
+
Requires-Dist: pyinstaller==6.21.0; extra == "package"
|
|
45
|
+
Requires-Dist: twine==6.2.0; extra == "package"
|
|
46
|
+
Provides-Extra: test
|
|
47
|
+
Requires-Dist: openpyxl==3.1.5; extra == "test"
|
|
48
|
+
Requires-Dist: pandas==3.0.3; extra == "test"
|
|
49
|
+
Requires-Dist: pydocstyle==6.3.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest==9.1.1; extra == "test"
|
|
51
|
+
Requires-Dist: pytest-cov==7.1.0; extra == "test"
|
|
52
|
+
Provides-Extra: dev
|
|
53
|
+
Requires-Dist: ipykernel==7.3.0; extra == "dev"
|
|
54
|
+
Requires-Dist: ipython==9.15.0; extra == "dev"
|
|
55
|
+
Requires-Dist: jupyterlab==4.6.1; extra == "dev"
|
|
56
|
+
Requires-Dist: myst-parser==5.1.0; extra == "dev"
|
|
57
|
+
Requires-Dist: notebook==7.6.0; extra == "dev"
|
|
58
|
+
Requires-Dist: numpy==2.5.1; extra == "dev"
|
|
59
|
+
Requires-Dist: openpyxl==3.1.5; extra == "dev"
|
|
60
|
+
Requires-Dist: pandas==3.0.3; extra == "dev"
|
|
61
|
+
Requires-Dist: pydoclint==0.9.1; extra == "dev"
|
|
62
|
+
Requires-Dist: pydocstyle==6.3.0; extra == "dev"
|
|
63
|
+
Requires-Dist: pyinstaller==6.21.0; extra == "dev"
|
|
64
|
+
Requires-Dist: pytest==9.1.1; extra == "dev"
|
|
65
|
+
Requires-Dist: pytest-cov==7.1.0; extra == "dev"
|
|
66
|
+
Requires-Dist: ruff==0.15.21; extra == "dev"
|
|
67
|
+
Requires-Dist: Sphinx==9.1.0; extra == "dev"
|
|
68
|
+
Requires-Dist: sphinx_rtd_theme==3.1.0; extra == "dev"
|
|
69
|
+
Requires-Dist: viztracer==1.1.1; extra == "dev"
|
|
70
|
+
Dynamic: license-file
|
|
71
|
+
|
|
72
|
+
# Data Engine
|
|
73
|
+
|
|
74
|
+
Data Engine is a GUI orchestrator for Python dataframe workflows. It lets you
|
|
75
|
+
author flows as plain Python modules, run them manually or automatically, and
|
|
76
|
+
inspect parquet-first outputs from the desktop app.
|
|
77
|
+
|
|
78
|
+
The runtime is built around:
|
|
79
|
+
|
|
80
|
+
- workspace-based flow discovery
|
|
81
|
+
- manual, poll, and schedule execution modes
|
|
82
|
+
- Polars and DuckDB-friendly flow steps
|
|
83
|
+
- mirrored output paths for source-driven runs
|
|
84
|
+
- saved run, log, and dataframe inspection state
|
|
85
|
+
- a desktop operator surface
|
|
86
|
+
|
|
87
|
+
## Install
|
|
88
|
+
|
|
89
|
+
Use the installer for your environment:
|
|
90
|
+
|
|
91
|
+
- macOS: [INSTALL/INSTALL MAC.command](INSTALL/INSTALL%20MAC.command)
|
|
92
|
+
- Windows: [INSTALL/INSTALL WINDOWS.bat](INSTALL/INSTALL%20WINDOWS.bat)
|
|
93
|
+
|
|
94
|
+
For local development:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
python -m pip install --constraint requirements/constraints.txt -e ".[dev]"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
For a published package install:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
python -m pip install py-data-engine
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Data Engine requires Python `>=3.14`.
|
|
107
|
+
|
|
108
|
+
Dependency pinning, constrained installs, and hash-locked runtime installs are
|
|
109
|
+
documented in [SECURITY.md](SECURITY.md).
|
|
110
|
+
|
|
111
|
+
## Start
|
|
112
|
+
|
|
113
|
+
Desktop GUI:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
data-engine start gui
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Headless commands:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
data-engine list
|
|
123
|
+
data-engine show example_summary
|
|
124
|
+
data-engine run --once example_summary
|
|
125
|
+
data-engine run
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Minimal Flow
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
from data_engine import Flow
|
|
132
|
+
import polars as pl
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def read_docs(context):
|
|
136
|
+
return pl.read_excel(context.source.path)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def keep_open(context):
|
|
140
|
+
return context.current.filter(pl.col("status") == "OPEN")
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def write_parquet(context):
|
|
144
|
+
output = context.mirror.with_suffix(".parquet")
|
|
145
|
+
context.current.write_parquet(output)
|
|
146
|
+
return output
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def build():
|
|
150
|
+
return (
|
|
151
|
+
Flow(group="Docs")
|
|
152
|
+
.watch(
|
|
153
|
+
mode="poll",
|
|
154
|
+
source="../../../example_data/Input/docs_flat",
|
|
155
|
+
interval="5s",
|
|
156
|
+
extensions=[".xlsx", ".xls", ".xlsm"],
|
|
157
|
+
settle=1,
|
|
158
|
+
)
|
|
159
|
+
.mirror(root="../../../example_data/Output/example_mirror")
|
|
160
|
+
.step(read_docs, save_as="raw_df")
|
|
161
|
+
.step(keep_open, use="raw_df", save_as="filtered_df")
|
|
162
|
+
.step(write_parquet, use="filtered_df")
|
|
163
|
+
)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Each authored flow module exports `build() -> Flow`. The module filename is the
|
|
167
|
+
flow identity.
|
|
168
|
+
|
|
169
|
+
## Workspaces
|
|
170
|
+
|
|
171
|
+
Data Engine discovers workspaces from a collection root. Each workspace keeps
|
|
172
|
+
authored flows under:
|
|
173
|
+
|
|
174
|
+
```text
|
|
175
|
+
workspaces/<workspace_id>/flow_modules/
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Shared workspace state lives under:
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
workspaces/<workspace_id>/.workspace_state/
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Machine-local runtime artifacts are stored outside the authored workspace.
|
|
185
|
+
|
|
186
|
+
## Useful APIs
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
from data_engine import Flow, FlowContext, discover_flows, load_flow, run
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Common `Flow` methods:
|
|
193
|
+
|
|
194
|
+
- `.watch(...)`
|
|
195
|
+
- `.mirror(...)`
|
|
196
|
+
- `.date_range_input(...)`
|
|
197
|
+
- `.step(...)`
|
|
198
|
+
- `.collect(...)`
|
|
199
|
+
- `.map(...)`
|
|
200
|
+
- `.step_each(...)`
|
|
201
|
+
- `.preview(...)`
|
|
202
|
+
- `.run_once()`
|
|
203
|
+
- `.run()`
|
|
204
|
+
|
|
205
|
+
Common `FlowContext` values:
|
|
206
|
+
|
|
207
|
+
- `context.source`
|
|
208
|
+
- `context.mirror`
|
|
209
|
+
- `context.current`
|
|
210
|
+
- `context.objects`
|
|
211
|
+
- `context.metadata`
|
|
212
|
+
- `context.database("analytics.duckdb")`
|
|
213
|
+
- `context.template("reports/base.xlsx")`
|
|
214
|
+
- `context.debug`
|
|
215
|
+
|
|
216
|
+
The full authoring guide and helper reference live in
|
|
217
|
+
`src/data_engine/docs/sphinx_source/guides/`.
|
|
218
|
+
|
|
219
|
+
## Testing
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
python -m pytest -q
|
|
223
|
+
python -m build
|
|
224
|
+
python -m twine check dist/*
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Status
|
|
228
|
+
|
|
229
|
+
This project is pre-alpha. Internal architecture is still moving quickly, and
|
|
230
|
+
backwards compatibility is not a current goal.
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Data Engine
|
|
2
|
+
|
|
3
|
+
Data Engine is a GUI orchestrator for Python dataframe workflows. It lets you
|
|
4
|
+
author flows as plain Python modules, run them manually or automatically, and
|
|
5
|
+
inspect parquet-first outputs from the desktop app.
|
|
6
|
+
|
|
7
|
+
The runtime is built around:
|
|
8
|
+
|
|
9
|
+
- workspace-based flow discovery
|
|
10
|
+
- manual, poll, and schedule execution modes
|
|
11
|
+
- Polars and DuckDB-friendly flow steps
|
|
12
|
+
- mirrored output paths for source-driven runs
|
|
13
|
+
- saved run, log, and dataframe inspection state
|
|
14
|
+
- a desktop operator surface
|
|
15
|
+
|
|
16
|
+
## Install
|
|
17
|
+
|
|
18
|
+
Use the installer for your environment:
|
|
19
|
+
|
|
20
|
+
- macOS: [INSTALL/INSTALL MAC.command](INSTALL/INSTALL%20MAC.command)
|
|
21
|
+
- Windows: [INSTALL/INSTALL WINDOWS.bat](INSTALL/INSTALL%20WINDOWS.bat)
|
|
22
|
+
|
|
23
|
+
For local development:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
python -m pip install --constraint requirements/constraints.txt -e ".[dev]"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For a published package install:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
python -m pip install py-data-engine
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Data Engine requires Python `>=3.14`.
|
|
36
|
+
|
|
37
|
+
Dependency pinning, constrained installs, and hash-locked runtime installs are
|
|
38
|
+
documented in [SECURITY.md](SECURITY.md).
|
|
39
|
+
|
|
40
|
+
## Start
|
|
41
|
+
|
|
42
|
+
Desktop GUI:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
data-engine start gui
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Headless commands:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
data-engine list
|
|
52
|
+
data-engine show example_summary
|
|
53
|
+
data-engine run --once example_summary
|
|
54
|
+
data-engine run
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Minimal Flow
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from data_engine import Flow
|
|
61
|
+
import polars as pl
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def read_docs(context):
|
|
65
|
+
return pl.read_excel(context.source.path)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def keep_open(context):
|
|
69
|
+
return context.current.filter(pl.col("status") == "OPEN")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def write_parquet(context):
|
|
73
|
+
output = context.mirror.with_suffix(".parquet")
|
|
74
|
+
context.current.write_parquet(output)
|
|
75
|
+
return output
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def build():
|
|
79
|
+
return (
|
|
80
|
+
Flow(group="Docs")
|
|
81
|
+
.watch(
|
|
82
|
+
mode="poll",
|
|
83
|
+
source="../../../example_data/Input/docs_flat",
|
|
84
|
+
interval="5s",
|
|
85
|
+
extensions=[".xlsx", ".xls", ".xlsm"],
|
|
86
|
+
settle=1,
|
|
87
|
+
)
|
|
88
|
+
.mirror(root="../../../example_data/Output/example_mirror")
|
|
89
|
+
.step(read_docs, save_as="raw_df")
|
|
90
|
+
.step(keep_open, use="raw_df", save_as="filtered_df")
|
|
91
|
+
.step(write_parquet, use="filtered_df")
|
|
92
|
+
)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Each authored flow module exports `build() -> Flow`. The module filename is the
|
|
96
|
+
flow identity.
|
|
97
|
+
|
|
98
|
+
## Workspaces
|
|
99
|
+
|
|
100
|
+
Data Engine discovers workspaces from a collection root. Each workspace keeps
|
|
101
|
+
authored flows under:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
workspaces/<workspace_id>/flow_modules/
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Shared workspace state lives under:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
workspaces/<workspace_id>/.workspace_state/
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Machine-local runtime artifacts are stored outside the authored workspace.
|
|
114
|
+
|
|
115
|
+
## Useful APIs
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
from data_engine import Flow, FlowContext, discover_flows, load_flow, run
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Common `Flow` methods:
|
|
122
|
+
|
|
123
|
+
- `.watch(...)`
|
|
124
|
+
- `.mirror(...)`
|
|
125
|
+
- `.date_range_input(...)`
|
|
126
|
+
- `.step(...)`
|
|
127
|
+
- `.collect(...)`
|
|
128
|
+
- `.map(...)`
|
|
129
|
+
- `.step_each(...)`
|
|
130
|
+
- `.preview(...)`
|
|
131
|
+
- `.run_once()`
|
|
132
|
+
- `.run()`
|
|
133
|
+
|
|
134
|
+
Common `FlowContext` values:
|
|
135
|
+
|
|
136
|
+
- `context.source`
|
|
137
|
+
- `context.mirror`
|
|
138
|
+
- `context.current`
|
|
139
|
+
- `context.objects`
|
|
140
|
+
- `context.metadata`
|
|
141
|
+
- `context.database("analytics.duckdb")`
|
|
142
|
+
- `context.template("reports/base.xlsx")`
|
|
143
|
+
- `context.debug`
|
|
144
|
+
|
|
145
|
+
The full authoring guide and helper reference live in
|
|
146
|
+
`src/data_engine/docs/sphinx_source/guides/`.
|
|
147
|
+
|
|
148
|
+
## Testing
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
python -m pytest -q
|
|
152
|
+
python -m build
|
|
153
|
+
python -m twine check dist/*
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Status
|
|
157
|
+
|
|
158
|
+
This project is pre-alpha. Internal architecture is still moving quickly, and
|
|
159
|
+
backwards compatibility is not a current goal.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
|
-
"setuptools
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"numpy
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"Sphinx
|
|
11
|
-
"sphinx_rtd_theme
|
|
12
|
-
"xlsxwriter
|
|
3
|
+
"setuptools==83.0.0",
|
|
4
|
+
"APScheduler==3.11.3",
|
|
5
|
+
"duckdb==1.5.4",
|
|
6
|
+
"myst-parser==5.1.0",
|
|
7
|
+
"numpy==2.5.1",
|
|
8
|
+
"openpyxl==3.1.5",
|
|
9
|
+
"polars==1.42.1",
|
|
10
|
+
"Sphinx==9.1.0",
|
|
11
|
+
"sphinx_rtd_theme==3.1.0",
|
|
12
|
+
"xlsxwriter==3.2.9",
|
|
13
13
|
]
|
|
14
14
|
build-backend = "setuptools.build_meta"
|
|
15
15
|
|
|
@@ -35,16 +35,15 @@ classifiers = [
|
|
|
35
35
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
36
36
|
]
|
|
37
37
|
dependencies = [
|
|
38
|
-
"APScheduler
|
|
39
|
-
"duckdb
|
|
40
|
-
"fastexcel
|
|
41
|
-
"numpy
|
|
42
|
-
"openpyxl
|
|
43
|
-
"polars
|
|
44
|
-
"pyarrow
|
|
45
|
-
"PySide6
|
|
46
|
-
"
|
|
47
|
-
"xlsxwriter>=3.2.9",
|
|
38
|
+
"APScheduler==3.11.3",
|
|
39
|
+
"duckdb==1.5.4",
|
|
40
|
+
"fastexcel==0.20.2",
|
|
41
|
+
"numpy==2.5.1",
|
|
42
|
+
"openpyxl==3.1.5",
|
|
43
|
+
"polars==1.42.1",
|
|
44
|
+
"pyarrow==25.0.0",
|
|
45
|
+
"PySide6==6.11.1",
|
|
46
|
+
"xlsxwriter==3.2.9",
|
|
48
47
|
]
|
|
49
48
|
|
|
50
49
|
[project.urls]
|
|
@@ -56,52 +55,51 @@ Issues = "https://github.com/bj-data-eng/data-engine/issues"
|
|
|
56
55
|
data-engine = "data_engine.ui.cli.app:main"
|
|
57
56
|
|
|
58
57
|
[project.optional-dependencies]
|
|
59
|
-
polars-lts = [
|
|
60
|
-
"polars-lts-cpu>=1.33.1",
|
|
61
|
-
]
|
|
62
58
|
synthetic = [
|
|
63
|
-
"openpyxl
|
|
64
|
-
"pandas
|
|
59
|
+
"openpyxl==3.1.5",
|
|
60
|
+
"pandas==3.0.3",
|
|
65
61
|
]
|
|
66
62
|
notebook = [
|
|
67
|
-
"ipykernel
|
|
68
|
-
"ipython
|
|
69
|
-
"jupyterlab
|
|
70
|
-
"notebook
|
|
63
|
+
"ipykernel==7.3.0",
|
|
64
|
+
"ipython==9.15.0",
|
|
65
|
+
"jupyterlab==4.6.1",
|
|
66
|
+
"notebook==7.6.0",
|
|
71
67
|
]
|
|
72
68
|
docs = [
|
|
73
|
-
"myst-parser
|
|
74
|
-
"Sphinx
|
|
75
|
-
"sphinx_rtd_theme
|
|
69
|
+
"myst-parser==5.1.0",
|
|
70
|
+
"Sphinx==9.1.0",
|
|
71
|
+
"sphinx_rtd_theme==3.1.0",
|
|
76
72
|
]
|
|
77
73
|
package = [
|
|
78
|
-
"
|
|
74
|
+
"build==1.5.1",
|
|
75
|
+
"pyinstaller==6.21.0",
|
|
76
|
+
"twine==6.2.0",
|
|
79
77
|
]
|
|
80
78
|
test = [
|
|
81
|
-
"openpyxl
|
|
82
|
-
"pandas
|
|
83
|
-
"pydocstyle
|
|
84
|
-
"pytest
|
|
85
|
-
"pytest-cov
|
|
79
|
+
"openpyxl==3.1.5",
|
|
80
|
+
"pandas==3.0.3",
|
|
81
|
+
"pydocstyle==6.3.0",
|
|
82
|
+
"pytest==9.1.1",
|
|
83
|
+
"pytest-cov==7.1.0",
|
|
86
84
|
]
|
|
87
85
|
dev = [
|
|
88
|
-
"ipykernel
|
|
89
|
-
"ipython
|
|
90
|
-
"jupyterlab
|
|
91
|
-
"myst-parser
|
|
92
|
-
"notebook
|
|
93
|
-
"numpy
|
|
94
|
-
"openpyxl
|
|
95
|
-
"pandas
|
|
96
|
-
"pydoclint
|
|
97
|
-
"pydocstyle
|
|
98
|
-
"pyinstaller
|
|
99
|
-
"pytest
|
|
100
|
-
"pytest-cov
|
|
101
|
-
"ruff
|
|
102
|
-
"Sphinx
|
|
103
|
-
"sphinx_rtd_theme
|
|
104
|
-
"viztracer
|
|
86
|
+
"ipykernel==7.3.0",
|
|
87
|
+
"ipython==9.15.0",
|
|
88
|
+
"jupyterlab==4.6.1",
|
|
89
|
+
"myst-parser==5.1.0",
|
|
90
|
+
"notebook==7.6.0",
|
|
91
|
+
"numpy==2.5.1",
|
|
92
|
+
"openpyxl==3.1.5",
|
|
93
|
+
"pandas==3.0.3",
|
|
94
|
+
"pydoclint==0.9.1",
|
|
95
|
+
"pydocstyle==6.3.0",
|
|
96
|
+
"pyinstaller==6.21.0",
|
|
97
|
+
"pytest==9.1.1",
|
|
98
|
+
"pytest-cov==7.1.0",
|
|
99
|
+
"ruff==0.15.21",
|
|
100
|
+
"Sphinx==9.1.0",
|
|
101
|
+
"sphinx_rtd_theme==3.1.0",
|
|
102
|
+
"viztracer==1.1.1",
|
|
105
103
|
]
|
|
106
104
|
|
|
107
105
|
[tool.setuptools]
|
|
@@ -18,10 +18,8 @@ class ActionStateApplication:
|
|
|
18
18
|
active_flow_states,
|
|
19
19
|
engine_state: str = "idle",
|
|
20
20
|
live_runs: dict[str, object] | None = None,
|
|
21
|
-
has_logs: bool,
|
|
22
21
|
has_automated_flows: bool,
|
|
23
22
|
workspace_available: bool = True,
|
|
24
|
-
selected_run_group_present: bool = False,
|
|
25
23
|
local_request_pending: bool = False,
|
|
26
24
|
overlay: PendingWorkspaceActionOverlay | None = None,
|
|
27
25
|
) -> OperatorActionContext:
|
|
@@ -32,7 +30,6 @@ class ActionStateApplication:
|
|
|
32
30
|
runtime_session=runtime_session,
|
|
33
31
|
flow_groups_by_name=flow_groups_by_name,
|
|
34
32
|
active_flow_states=active_flow_states,
|
|
35
|
-
has_logs=has_logs,
|
|
36
33
|
live_runs=live_runs,
|
|
37
34
|
)
|
|
38
35
|
return OperatorActionContext(
|
|
@@ -41,7 +38,6 @@ class ActionStateApplication:
|
|
|
41
38
|
has_automated_flows=has_automated_flows,
|
|
42
39
|
engine_state=engine_state,
|
|
43
40
|
workspace_available=workspace_available,
|
|
44
|
-
selected_run_group_present=selected_run_group_present,
|
|
45
41
|
local_request_pending=local_request_pending,
|
|
46
42
|
overlay=PendingWorkspaceActionOverlay() if overlay is None else overlay,
|
|
47
43
|
)
|
|
@@ -24,6 +24,9 @@ from data_engine.platform.workspace_models import WorkspacePaths, authored_works
|
|
|
24
24
|
from data_engine.services import DaemonService, DaemonStateService, SharedStateService
|
|
25
25
|
|
|
26
26
|
|
|
27
|
+
_FLOW_RESET_TIMEOUT_SECONDS = 120.0
|
|
28
|
+
|
|
29
|
+
|
|
27
30
|
@dataclass(frozen=True)
|
|
28
31
|
class DaemonCommandResult:
|
|
29
32
|
"""Normalized outcome of one daemon command request."""
|
|
@@ -278,6 +281,16 @@ class RuntimeApplication:
|
|
|
278
281
|
"""Request one manual flow stop through the daemon."""
|
|
279
282
|
return self._request(paths, {"command": "stop_flow", "name": name}, timeout=timeout)
|
|
280
283
|
|
|
284
|
+
def reset_flow(
|
|
285
|
+
self,
|
|
286
|
+
paths: WorkspacePaths,
|
|
287
|
+
*,
|
|
288
|
+
name: str,
|
|
289
|
+
timeout: float = _FLOW_RESET_TIMEOUT_SECONDS,
|
|
290
|
+
) -> DaemonCommandResult:
|
|
291
|
+
"""Reset one flow through the daemon that owns shared snapshot publication."""
|
|
292
|
+
return self._request(paths, {"command": "reset_flow", "name": name}, timeout=timeout)
|
|
293
|
+
|
|
281
294
|
def daemon_status(self, paths: WorkspacePaths, *, timeout: float = 0.0) -> DaemonCommandResult:
|
|
282
295
|
"""Request raw daemon status for host/CLI inspection."""
|
|
283
296
|
return self._request(paths, {"command": "daemon_status"}, timeout=timeout)
|
|
@@ -94,10 +94,10 @@ class Flow(_CoreFlow):
|
|
|
94
94
|
|
|
95
95
|
Parameters
|
|
96
96
|
----------
|
|
97
|
-
authoring_services : AuthoringServices | None
|
|
98
|
-
Optional service bundle used by tests or embedded hosts.
|
|
99
97
|
inputs : dict[str, object] | None
|
|
100
98
|
Submitted manual-run input values for flows that declare them.
|
|
99
|
+
authoring_services : AuthoringServices | None
|
|
100
|
+
Optional service bundle used by tests or embedded hosts.
|
|
101
101
|
runtime_execution_service : RuntimeExecutionService | None
|
|
102
102
|
Optional runtime execution service override.
|
|
103
103
|
|
|
@@ -47,7 +47,7 @@ class Flow:
|
|
|
47
47
|
Attributes
|
|
48
48
|
----------
|
|
49
49
|
group : str
|
|
50
|
-
Display group used by the GUI
|
|
50
|
+
Display group used by the GUI and runtime summaries.
|
|
51
51
|
name : str | None
|
|
52
52
|
Stable flow identifier. When omitted in a flow module, the module loader
|
|
53
53
|
can derive it from the module name.
|