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