py-data-engine 0.3.4__tar.gz → 0.3.6__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.3.4/src/py_data_engine.egg-info → py_data_engine-0.3.6}/PKG-INFO +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/core/primitives.py +2 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/authoring/flow.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/core/flow.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/core/model.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/core/primitives.html +3 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_dimensions.html +1 -1
- py_data_engine-0.3.6/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_maintenance.html +412 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_read.html +14 -4
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_replace.html +53 -60
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/helpers/polars.html +521 -17
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/helpers/schema.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/hosts/scheduler.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/runtime/engine.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/grouped.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/runtime/execution/single.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/runtime/file_watch.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/runtime/result_cleanup.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/runtime/stop.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/daemon.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/daemon_state.html +3 -5
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/flow_catalog.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/flow_execution.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/ledger.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/logs.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/runtime_binding.html +4 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/runtime_execution.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/runtime_history.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/settings.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/shared_state.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/theme.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/workspace_provisioning.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/data_engine/services/workspaces.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_modules/index.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/duckdb-helpers.md.txt +52 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/project-inventory.md.txt +642 -52
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/project-map.md.txt +17 -17
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/recipes.md.txt +45 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/documentation_options.js +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/api.html +344 -42
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/genindex.html +28 -3
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/app-runtime-and-workspaces.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/authoring-flow-modules.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/configuring-flows.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/core-concepts.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/database-methods.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/duckdb-helpers.html +49 -2
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/flow-context.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/flow-methods.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/getting-started.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/project-inventory.html +1300 -218
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/project-map.html +52 -52
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/guides/recipes.html +46 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/index.html +4 -1
- py_data_engine-0.3.6/src/data_engine/docs/html/objects.inv +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/py-modindex.html +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/search.html +1 -1
- py_data_engine-0.3.6/src/data_engine/docs/html/searchindex.js +1 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/duckdb-helpers.md +52 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/project-inventory.md +642 -52
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/project-map.md +17 -17
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/recipes.md +45 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/details.py +7 -2
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/logs.py +2 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/__init__.py +6 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/duckdb/__init__.py +2 -0
- py_data_engine-0.3.6/src/data_engine/helpers/duckdb/_maintenance.py +292 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/duckdb/_read.py +13 -3
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/duckdb/_replace.py +52 -59
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/polars.py +502 -16
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/client.py +8 -3
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/runtime_commands.py +10 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/identity.py +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/daemon_state.py +2 -4
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/runtime_binding.py +3 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/runtime_io.py +29 -2
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/runtime_state.py +117 -64
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/egui/_data_engine_egui.pyd +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/app.py +3 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/app_binding.py +0 -4
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/controllers/flows.py +24 -18
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/controllers/runtime.py +52 -33
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/dialogs/previews.py +23 -15
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/helpers/theming.py +1 -1
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/dataframe.svg +7 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/down-chevron-dark.svg +4 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/down-chevron-light.svg +4 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/select-all-all.svg +12 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/select-all-none.svg +12 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/select-all-partial.svg +12 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/sort-ascending.svg +4 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/sort-descending.svg +4 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/up-chevron-dark.svg +4 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/icons/up-chevron-light.svg +4 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons.py +6 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/__init__.py +12 -0
- py_data_engine-0.3.6/src/data_engine/ui/gui/presenters/dataframes.py +159 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/debug.py +14 -9
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/logs.py +5 -22
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/steps.py +37 -34
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/workspace_binding.py +1 -4
- py_data_engine-0.3.6/src/data_engine/ui/gui/rendering/artifacts.py +2509 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/rendering/icons.py +11 -5
- py_data_engine-0.3.6/src/data_engine/ui/gui/rendering/preview_filters.py +658 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/support.py +26 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/theme.py +336 -16
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/widgets/__init__.py +2 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/widgets/log_list.py +19 -52
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/widgets/panels.py +133 -34
- {py_data_engine-0.3.4 → py_data_engine-0.3.6/src/py_data_engine.egg-info}/PKG-INFO +1 -1
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/py_data_engine.egg-info/SOURCES.txt +12 -0
- py_data_engine-0.3.4/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_maintenance.html +0 -228
- py_data_engine-0.3.4/src/data_engine/docs/html/objects.inv +0 -0
- py_data_engine-0.3.4/src/data_engine/docs/html/searchindex.js +0 -1
- py_data_engine-0.3.4/src/data_engine/helpers/duckdb/_maintenance.py +0 -111
- py_data_engine-0.3.4/src/data_engine/ui/gui/rendering/artifacts.py +0 -1171
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/LICENSE +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/MANIFEST.in +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/README.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/pyproject.toml +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/setup.cfg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/setup.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/application/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/application/actions.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/application/catalog.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/application/control.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/application/details.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/application/runtime.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/application/workspace.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/authoring/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/authoring/flow.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/authoring/services.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/core/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/core/flow.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/core/helpers.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/core/model.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/devtools/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/devtools/project_ast_map.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/devtools/smoke_data.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/api.rst.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/app-runtime-and-workspaces.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/authoring-flow-modules.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/configuring-flows.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/core-concepts.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/database-methods.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/flow-context.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/flow-methods.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/guides/getting-started.md.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_sources/index.rst.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/base-stemmer.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/basic.css +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/badge_only.css +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/css/theme.css +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/custom.css +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/doctools.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/english-stemmer.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/file.png +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/jquery.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/js/badge_only.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/js/theme.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/js/versions.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/language_data.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/minus.png +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/plus.png +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/pygments.css +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/searchtools.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/html/_static/sphinx_highlight.js +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/_static/custom.css +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/api.rst +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/conf.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/app-runtime-and-workspaces.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/authoring-flow-modules.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/configuring-flows.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/core-concepts.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/database-methods.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/flow-context.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/flow-methods.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/guides/getting-started.md +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/docs/sphinx_source/index.rst +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/actions.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/catalog.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/debug_artifacts.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/diagnostics.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/errors.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/inspection.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/operations.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/operator.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/runs.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/runtime.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/source_state.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/support.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/time.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/domain/workspace.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/flow_modules/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/flow_modules/flow_module_compiler.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/flow_modules/flow_module_loader.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/duckdb/_common.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/duckdb/_dimensions.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/helpers/schema.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/app.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/bootstrap.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/commands.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/composition.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/constants.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/entrypoints.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/lifecycle.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/manager.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/ownership.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/runtime_control.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/runtime_events.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/runtime_ledger.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/server.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/shared_state.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/daemon/state_sync.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/hosts/scheduler.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/instrumentation.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/interpreters.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/local_settings.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/paths.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/processes.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/theme.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/workspace_models.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/platform/workspace_policy.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/engine.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/app.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/context.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/continuous.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/grouped.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/logging.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/polling.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/runner.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/execution/single.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/file_watch.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/ledger_models.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/result_cleanup.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/runtime_cache_store.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/runtime_control_store.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/runtime_db.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/shared_state.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/sqlite_store.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/runtime/stop.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/daemon.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/debug_artifacts.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/flow_catalog.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/flow_execution.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/ledger.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/logs.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/operator_commands.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/operator_queries.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/reset.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/runtime_execution.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/runtime_history.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/runtime_ports.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/settings.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/shared_state.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/theme.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/workspace_io.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/workspace_provisioning.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/services/workspaces.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/app.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/commands_doctor.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/commands_run.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/commands_start.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/commands_workspace.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/dependencies.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/cli/parser.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/egui/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/egui/app.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/egui/bootstrap.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/egui/home_state.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/egui/launcher.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/egui/native.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/bootstrap.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/cache_models.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/control_support.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/controllers/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/dialogs/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/dialogs/messages.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/helpers/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/helpers/inspection.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/helpers/lifecycle.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/helpers/scroll.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/check-mark-dark.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/check-mark-light.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/dark_light.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/debug.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/documentation.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/failed.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/group.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/home.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/manual.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/poll.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/schedule.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/settings.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/started.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/success.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/icons/view-log.svg +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/launcher.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/docs.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/runtime_projection.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/sidebar.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/workspace.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/presenters/workspace_settings.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/preview_models.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/render_support.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/rendering/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/runtime.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/state_support.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/surface.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/widgets/config.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/widgets/logs.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/widgets/sidebar.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/gui/widgets/steps.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/app.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/app_binding.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/bootstrap.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/controllers/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/controllers/flows.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/controllers/runtime.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/runtime.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/state_support.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/support.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/theme.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/ui/tui/widgets.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/__init__.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/actions.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/artifacts.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/flow_display.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/logs.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/models.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/presentation.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/runs.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/selection.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/state.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/status.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/data_engine/views/text.py +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/py_data_engine.egg-info/dependency_links.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/py_data_engine.egg-info/entry_points.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/py_data_engine.egg-info/requires.txt +0 -0
- {py_data_engine-0.3.4 → py_data_engine-0.3.6}/src/py_data_engine.egg-info/top_level.txt +0 -0
|
@@ -341,6 +341,8 @@ class FlowContext:
|
|
|
341
341
|
Runtime metadata attached to the execution.
|
|
342
342
|
config : WorkspaceConfigContext
|
|
343
343
|
Lazy workspace config reader.
|
|
344
|
+
debug : FlowDebugContext | None
|
|
345
|
+
Optional debug artifact writer for the active execution.
|
|
344
346
|
|
|
345
347
|
Examples
|
|
346
348
|
--------
|
|
@@ -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=8da8c241"></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=8da8c241"></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=8da8c241"></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=8da8c241"></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>
|
|
@@ -490,6 +490,8 @@
|
|
|
490
490
|
<span class="sd"> Runtime metadata attached to the execution.</span>
|
|
491
491
|
<span class="sd"> config : WorkspaceConfigContext</span>
|
|
492
492
|
<span class="sd"> Lazy workspace config reader.</span>
|
|
493
|
+
<span class="sd"> debug : FlowDebugContext | None</span>
|
|
494
|
+
<span class="sd"> Optional debug artifact writer for the active execution.</span>
|
|
493
495
|
|
|
494
496
|
<span class="sd"> Examples</span>
|
|
495
497
|
<span class="sd"> --------</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=8da8c241"></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>
|
py_data_engine-0.3.6/src/data_engine/docs/html/_modules/data_engine/helpers/duckdb/_maintenance.html
ADDED
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
<!DOCTYPE html>
|
|
4
|
+
<html class="writer-html5" lang="en" data-content_root="../../../../">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<title>data_engine.helpers.duckdb._maintenance — Data Engine documentation</title>
|
|
9
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=b86133f3" />
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=9edc463e" />
|
|
11
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/custom.css?v=043dcf3d" />
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
<script src="../../../../_static/jquery.js?v=5d32c60e"></script>
|
|
15
|
+
<script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
16
|
+
<script src="../../../../_static/documentation_options.js?v=8da8c241"></script>
|
|
17
|
+
<script src="../../../../_static/doctools.js?v=fd6eb6e6"></script>
|
|
18
|
+
<script src="../../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
|
19
|
+
<script src="../../../../_static/js/theme.js"></script>
|
|
20
|
+
<link rel="index" title="Index" href="../../../../genindex.html" />
|
|
21
|
+
<link rel="search" title="Search" href="../../../../search.html" />
|
|
22
|
+
</head>
|
|
23
|
+
|
|
24
|
+
<body class="wy-body-for-nav">
|
|
25
|
+
<div class="wy-grid-for-nav">
|
|
26
|
+
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
27
|
+
<div class="wy-side-scroll">
|
|
28
|
+
<div class="wy-side-nav-search" >
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<a href="../../../../index.html" class="icon icon-home">
|
|
33
|
+
Data Engine
|
|
34
|
+
</a>
|
|
35
|
+
<div role="search">
|
|
36
|
+
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
|
|
37
|
+
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
|
38
|
+
<input type="hidden" name="check_keywords" value="yes" />
|
|
39
|
+
<input type="hidden" name="area" value="default" />
|
|
40
|
+
</form>
|
|
41
|
+
</div>
|
|
42
|
+
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
|
43
|
+
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
|
44
|
+
<ul>
|
|
45
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/getting-started.html">Getting Started</a></li>
|
|
46
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/core-concepts.html">Core Concepts</a></li>
|
|
47
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/configuring-flows.html">Configuring Flows</a></li>
|
|
48
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/authoring-flow-modules.html">Authoring Flow Modules</a></li>
|
|
49
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/flow-methods.html">Flow Methods</a></li>
|
|
50
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/database-methods.html">Database Methods</a></li>
|
|
51
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/duckdb-helpers.html">DuckDB Helpers</a></li>
|
|
52
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/recipes.html">Recipes</a></li>
|
|
53
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/app-runtime-and-workspaces.html">App Runtime and Workspaces</a></li>
|
|
54
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/flow-context.html">FlowContext</a></li>
|
|
55
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../api.html">API Reference</a></li>
|
|
56
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/project-map.html">Project Map</a></li>
|
|
57
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../guides/project-inventory.html">Project Inventory</a></li>
|
|
58
|
+
</ul>
|
|
59
|
+
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</nav>
|
|
63
|
+
|
|
64
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
|
65
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
66
|
+
<a href="../../../../index.html">Data Engine</a>
|
|
67
|
+
</nav>
|
|
68
|
+
|
|
69
|
+
<div class="wy-nav-content">
|
|
70
|
+
<div class="rst-content">
|
|
71
|
+
<div role="navigation" aria-label="Page navigation">
|
|
72
|
+
<ul class="wy-breadcrumbs">
|
|
73
|
+
<li><a href="../../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
74
|
+
<li class="breadcrumb-item"><a href="../../../index.html">Module code</a></li>
|
|
75
|
+
<li class="breadcrumb-item active">data_engine.helpers.duckdb._maintenance</li>
|
|
76
|
+
<li class="wy-breadcrumbs-aside">
|
|
77
|
+
</li>
|
|
78
|
+
</ul>
|
|
79
|
+
<hr/>
|
|
80
|
+
</div>
|
|
81
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
82
|
+
<div itemprop="articleBody">
|
|
83
|
+
|
|
84
|
+
<h1>Source code for data_engine.helpers.duckdb._maintenance</h1><div class="highlight"><pre>
|
|
85
|
+
<span></span><span class="sd">"""DuckDB helper functions for explicit database maintenance."""</span>
|
|
86
|
+
|
|
87
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">__future__</span><span class="w"> </span><span class="kn">import</span> <span class="n">annotations</span>
|
|
88
|
+
|
|
89
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">hashlib</span>
|
|
90
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
|
91
|
+
|
|
92
|
+
<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>
|
|
93
|
+
|
|
94
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb</span><span class="w"> </span><span class="kn">import</span> <span class="n">duckdb</span>
|
|
95
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb._common</span><span class="w"> </span><span class="kn">import</span> <span class="n">_list_base_tables</span>
|
|
96
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb._common</span><span class="w"> </span><span class="kn">import</span> <span class="n">_normalize_key_columns</span>
|
|
97
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb._common</span><span class="w"> </span><span class="kn">import</span> <span class="n">_normalize_table_names</span>
|
|
98
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb._common</span><span class="w"> </span><span class="kn">import</span> <span class="n">_quote_identifier</span>
|
|
99
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb._common</span><span class="w"> </span><span class="kn">import</span> <span class="n">_quote_table_ref</span>
|
|
100
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb._common</span><span class="w"> </span><span class="kn">import</span> <span class="n">_resolved_db_path</span>
|
|
101
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">data_engine.helpers.duckdb._common</span><span class="w"> </span><span class="kn">import</span> <span class="n">_table_column_names</span>
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">_default_index_name</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">table</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">columns</span><span class="p">:</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">str</span><span class="p">:</span>
|
|
105
|
+
<span class="n">digest</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha1</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">|</span><span class="si">{</span><span class="s1">'|'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">))</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()[:</span><span class="mi">12</span><span class="p">]</span>
|
|
106
|
+
<span class="k">return</span> <span class="sa">f</span><span class="s2">"idx_de_</span><span class="si">{</span><span class="n">digest</span><span class="si">}</span><span class="s2">"</span>
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">_index_ref</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
110
|
+
<span class="k">if</span> <span class="n">schema</span> <span class="o">==</span> <span class="s2">"main"</span><span class="p">:</span>
|
|
111
|
+
<span class="k">return</span> <span class="n">_quote_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
112
|
+
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">_quote_identifier</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">_quote_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">_table_index_rows</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">table</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]:</span>
|
|
116
|
+
<span class="n">parts</span> <span class="o">=</span> <span class="p">[</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="nb">str</span><span class="p">(</span><span class="n">table</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)]</span>
|
|
117
|
+
<span class="n">table_name</span> <span class="o">=</span> <span class="n">parts</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
|
118
|
+
<span class="n">schema_name</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">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">"main"</span>
|
|
119
|
+
<span class="n">rows</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span>
|
|
120
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
121
|
+
<span class="sd"> SELECT schema_name, index_name, sql</span>
|
|
122
|
+
<span class="sd"> FROM duckdb_indexes()</span>
|
|
123
|
+
<span class="sd"> WHERE table_name = ?</span>
|
|
124
|
+
<span class="sd"> AND schema_name = ?</span>
|
|
125
|
+
<span class="sd"> ORDER BY index_name</span>
|
|
126
|
+
<span class="sd"> """</span><span class="p">,</span>
|
|
127
|
+
<span class="p">[</span><span class="n">table_name</span><span class="p">,</span> <span class="n">schema_name</span><span class="p">],</span>
|
|
128
|
+
<span class="p">)</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
129
|
+
<span class="k">return</span> <span class="p">[</span>
|
|
130
|
+
<span class="p">{</span>
|
|
131
|
+
<span class="s2">"schema_name"</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">schema_name</span><span class="p">),</span>
|
|
132
|
+
<span class="s2">"index_name"</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">index_name</span><span class="p">),</span>
|
|
133
|
+
<span class="s2">"sql"</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span>
|
|
134
|
+
<span class="p">}</span>
|
|
135
|
+
<span class="k">for</span> <span class="n">schema_name</span><span class="p">,</span> <span class="n">index_name</span><span class="p">,</span> <span class="n">sql</span> <span class="ow">in</span> <span class="n">rows</span>
|
|
136
|
+
<span class="p">]</span>
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">_drop_indexes</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">index_rows</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</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>
|
|
140
|
+
<span class="n">dropped</span><span class="p">:</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="p">[]</span>
|
|
141
|
+
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">index_rows</span><span class="p">:</span>
|
|
142
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span>
|
|
143
|
+
<span class="sa">f</span><span class="s2">"""</span>
|
|
144
|
+
<span class="s2"> DROP INDEX IF EXISTS </span><span class="si">{</span><span class="n">_index_ref</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s2">"schema_name"</span><span class="p">],</span><span class="w"> </span><span class="n">name</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s2">"index_name"</span><span class="p">])</span><span class="si">}</span>
|
|
145
|
+
<span class="s2"> """</span>
|
|
146
|
+
<span class="p">)</span>
|
|
147
|
+
<span class="n">dropped</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s2">"index_name"</span><span class="p">])</span>
|
|
148
|
+
<span class="k">return</span> <span class="n">dropped</span>
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">_restore_indexes</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">index_rows</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</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="p">:</span>
|
|
152
|
+
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">index_rows</span><span class="p">:</span>
|
|
153
|
+
<span class="k">try</span><span class="p">:</span>
|
|
154
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s2">"sql"</span><span class="p">])</span>
|
|
155
|
+
<span class="k">except</span> <span class="n">duckdb</span><span class="o">.</span><span class="n">Error</span><span class="p">:</span>
|
|
156
|
+
<span class="k">pass</span>
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
<div class="viewcode-block" id="ensure_index">
|
|
160
|
+
<a class="viewcode-back" href="../../../../api.html#data_engine.helpers.duckdb.ensure_index">[docs]</a>
|
|
161
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">ensure_index</span><span class="p">(</span>
|
|
162
|
+
<span class="n">db_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
|
|
163
|
+
<span class="n">table</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
164
|
+
<span class="o">*</span><span class="p">,</span>
|
|
165
|
+
<span class="n">columns</span><span class="p">:</span> <span class="nb">str</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">tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span>
|
|
166
|
+
<span class="n">name</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>
|
|
167
|
+
<span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
168
|
+
<span class="w"> </span><span class="sd">"""Create one DuckDB index if it does not already exist.</span>
|
|
169
|
+
|
|
170
|
+
<span class="sd"> Parameters</span>
|
|
171
|
+
<span class="sd"> ----------</span>
|
|
172
|
+
<span class="sd"> db_path : str | Path</span>
|
|
173
|
+
<span class="sd"> DuckDB database file path.</span>
|
|
174
|
+
<span class="sd"> table : str</span>
|
|
175
|
+
<span class="sd"> Target table name, optionally schema-qualified.</span>
|
|
176
|
+
<span class="sd"> columns : str | list[str] | tuple[str, ...]</span>
|
|
177
|
+
<span class="sd"> Column or columns to index.</span>
|
|
178
|
+
<span class="sd"> name : str | None</span>
|
|
179
|
+
<span class="sd"> Optional index name. When omitted, Data Engine generates a stable name</span>
|
|
180
|
+
<span class="sd"> from the table and columns.</span>
|
|
181
|
+
|
|
182
|
+
<span class="sd"> Returns</span>
|
|
183
|
+
<span class="sd"> -------</span>
|
|
184
|
+
<span class="sd"> str</span>
|
|
185
|
+
<span class="sd"> Index name that exists after the call.</span>
|
|
186
|
+
|
|
187
|
+
<span class="sd"> Raises</span>
|
|
188
|
+
<span class="sd"> ------</span>
|
|
189
|
+
<span class="sd"> ValueError</span>
|
|
190
|
+
<span class="sd"> If the table does not exist, selected columns do not exist, or the</span>
|
|
191
|
+
<span class="sd"> provided index name is empty.</span>
|
|
192
|
+
|
|
193
|
+
<span class="sd"> Examples</span>
|
|
194
|
+
<span class="sd"> --------</span>
|
|
195
|
+
<span class="sd"> Index a file-slice column before repeated ``replace_rows_by_file`` calls:</span>
|
|
196
|
+
|
|
197
|
+
<span class="sd"> .. code-block:: python</span>
|
|
198
|
+
|
|
199
|
+
<span class="sd"> data_engine.helpers.duckdb.ensure_index(</span>
|
|
200
|
+
<span class="sd"> context.database("warehouse.duckdb"),</span>
|
|
201
|
+
<span class="sd"> "fact_claim",</span>
|
|
202
|
+
<span class="sd"> columns="file_key",</span>
|
|
203
|
+
<span class="sd"> )</span>
|
|
204
|
+
|
|
205
|
+
<span class="sd"> Index a lookup column before repeated ``read_rows_by_values`` calls:</span>
|
|
206
|
+
|
|
207
|
+
<span class="sd"> .. code-block:: python</span>
|
|
208
|
+
|
|
209
|
+
<span class="sd"> data_engine.helpers.duckdb.ensure_index(</span>
|
|
210
|
+
<span class="sd"> context.database("warehouse.duckdb"),</span>
|
|
211
|
+
<span class="sd"> "fact_claim",</span>
|
|
212
|
+
<span class="sd"> columns="claim_id",</span>
|
|
213
|
+
<span class="sd"> name="idx_fact_claim_claim_id",</span>
|
|
214
|
+
<span class="sd"> )</span>
|
|
215
|
+
<span class="sd"> """</span>
|
|
216
|
+
<span class="n">normalized_columns</span> <span class="o">=</span> <span class="n">_normalize_key_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span>
|
|
217
|
+
<span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
218
|
+
<span class="n">index_name</span> <span class="o">=</span> <span class="n">_default_index_name</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">normalized_columns</span><span class="p">)</span>
|
|
219
|
+
<span class="k">else</span><span class="p">:</span>
|
|
220
|
+
<span class="n">index_name</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>
|
|
221
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">index_name</span><span class="p">:</span>
|
|
222
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"name must be non-empty."</span><span class="p">)</span>
|
|
223
|
+
|
|
224
|
+
<span class="n">resolved_db_path</span> <span class="o">=</span> <span class="n">_resolved_db_path</span><span class="p">(</span><span class="n">db_path</span><span class="p">)</span>
|
|
225
|
+
<span class="n">connection</span> <span class="o">=</span> <span class="n">duckdb</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">resolved_db_path</span><span class="p">)</span>
|
|
226
|
+
<span class="k">try</span><span class="p">:</span>
|
|
227
|
+
<span class="k">try</span><span class="p">:</span>
|
|
228
|
+
<span class="n">table_columns</span> <span class="o">=</span> <span class="n">_table_column_names</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span>
|
|
229
|
+
<span class="k">except</span> <span class="n">duckdb</span><span class="o">.</span><span class="n">CatalogException</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
|
230
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Table </span><span class="si">{</span><span class="n">table</span><span class="si">!r}</span><span class="s2"> does not exist or has no columns."</span><span class="p">)</span> <span class="kn">from</span><span class="w"> </span><span class="nn">exc</span>
|
|
231
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">table_columns</span><span class="p">:</span>
|
|
232
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Table </span><span class="si">{</span><span class="n">table</span><span class="si">!r}</span><span class="s2"> does not exist or has no columns."</span><span class="p">)</span>
|
|
233
|
+
<span class="n">missing_columns</span> <span class="o">=</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="n">normalized_columns</span> <span class="k">if</span> <span class="n">column</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">table_columns</span><span class="p">]</span>
|
|
234
|
+
<span class="k">if</span> <span class="n">missing_columns</span><span class="p">:</span>
|
|
235
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"columns must exist in table </span><span class="si">{</span><span class="n">table</span><span class="si">!r}</span><span class="s2">: </span><span class="si">{</span><span class="n">missing_columns</span><span class="si">!r}</span><span class="s2">"</span><span class="p">)</span>
|
|
236
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span>
|
|
237
|
+
<span class="sa">f</span><span class="s2">"""</span>
|
|
238
|
+
<span class="s2"> CREATE INDEX IF NOT EXISTS </span><span class="si">{</span><span class="n">_quote_identifier</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span><span class="si">}</span>
|
|
239
|
+
<span class="s2"> ON </span><span class="si">{</span><span class="n">_quote_table_ref</span><span class="p">(</span><span class="n">table</span><span class="p">)</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_quote_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">column</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">normalized_columns</span><span class="p">)</span><span class="si">}</span><span class="s2">)</span>
|
|
240
|
+
<span class="s2"> """</span>
|
|
241
|
+
<span class="p">)</span>
|
|
242
|
+
<span class="k">finally</span><span class="p">:</span>
|
|
243
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
244
|
+
<span class="k">return</span> <span class="n">index_name</span></div>
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
<div class="viewcode-block" id="compact_database">
|
|
249
|
+
<a class="viewcode-back" href="../../../../api.html#data_engine.helpers.duckdb.compact_database">[docs]</a>
|
|
250
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">compact_database</span><span class="p">(</span>
|
|
251
|
+
<span class="n">db_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
|
|
252
|
+
<span class="o">*</span><span class="p">,</span>
|
|
253
|
+
<span class="n">tables</span><span class="p">:</span> <span class="nb">str</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">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="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
254
|
+
<span class="n">drop_all_null_columns</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
|
255
|
+
<span class="n">vacuum</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
|
256
|
+
<span class="p">)</span> <span class="o">-></span> <span class="n">pl</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
|
|
257
|
+
<span class="w"> </span><span class="sd">"""Compact one DuckDB database by dropping all-null columns and optionally vacuuming.</span>
|
|
258
|
+
|
|
259
|
+
<span class="sd"> Existing indexes on compacted tables are dropped before column removal and</span>
|
|
260
|
+
<span class="sd"> recreated afterward when their original ``CREATE INDEX`` statement still</span>
|
|
261
|
+
<span class="sd"> applies to the compacted table. Indexes that reference dropped columns are</span>
|
|
262
|
+
<span class="sd"> reported as skipped.</span>
|
|
263
|
+
<span class="sd"> """</span>
|
|
264
|
+
|
|
265
|
+
<span class="n">normalized_tables</span> <span class="o">=</span> <span class="n">_normalize_table_names</span><span class="p">(</span><span class="n">tables</span><span class="p">)</span>
|
|
266
|
+
<span class="n">resolved_db_path</span> <span class="o">=</span> <span class="n">_resolved_db_path</span><span class="p">(</span><span class="n">db_path</span><span class="p">)</span>
|
|
267
|
+
<span class="n">size_before_bytes</span> <span class="o">=</span> <span class="n">resolved_db_path</span><span class="o">.</span><span class="n">stat</span><span class="p">()</span><span class="o">.</span><span class="n">st_size</span> <span class="k">if</span> <span class="n">resolved_db_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="k">else</span> <span class="mi">0</span>
|
|
268
|
+
|
|
269
|
+
<span class="n">connection</span> <span class="o">=</span> <span class="n">duckdb</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">resolved_db_path</span><span class="p">)</span>
|
|
270
|
+
<span class="k">try</span><span class="p">:</span>
|
|
271
|
+
<span class="n">available_tables</span> <span class="o">=</span> <span class="n">_list_base_tables</span><span class="p">(</span><span class="n">connection</span><span class="p">)</span>
|
|
272
|
+
<span class="k">if</span> <span class="n">normalized_tables</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
273
|
+
<span class="n">target_tables</span> <span class="o">=</span> <span class="n">available_tables</span>
|
|
274
|
+
<span class="k">else</span><span class="p">:</span>
|
|
275
|
+
<span class="n">missing_tables</span> <span class="o">=</span> <span class="p">[</span><span class="n">table</span> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="n">normalized_tables</span> <span class="k">if</span> <span class="n">table</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">available_tables</span><span class="p">]</span>
|
|
276
|
+
<span class="k">if</span> <span class="n">missing_tables</span><span class="p">:</span>
|
|
277
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"tables must exist in database: </span><span class="si">{</span><span class="n">missing_tables</span><span class="si">!r}</span><span class="s2">"</span><span class="p">)</span>
|
|
278
|
+
<span class="n">target_tables</span> <span class="o">=</span> <span class="n">normalized_tables</span>
|
|
279
|
+
|
|
280
|
+
<span class="n">summary_rows</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span>
|
|
281
|
+
<span class="k">for</span> <span class="n">table_name</span> <span class="ow">in</span> <span class="n">target_tables</span><span class="p">:</span>
|
|
282
|
+
<span class="n">table_columns</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_table_column_names</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">table_name</span><span class="p">))</span>
|
|
283
|
+
<span class="n">dropped_columns</span><span class="p">:</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="p">[]</span>
|
|
284
|
+
<span class="n">indexes_dropped</span><span class="p">:</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="p">[]</span>
|
|
285
|
+
<span class="n">indexes_recreated</span><span class="p">:</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="p">[]</span>
|
|
286
|
+
<span class="n">indexes_skipped</span><span class="p">:</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="p">[]</span>
|
|
287
|
+
|
|
288
|
+
<span class="k">if</span> <span class="n">drop_all_null_columns</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_columns</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
|
289
|
+
<span class="n">nullable_candidates</span><span class="p">:</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="p">[]</span>
|
|
290
|
+
<span class="n">quoted_table</span> <span class="o">=</span> <span class="n">_quote_table_ref</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span>
|
|
291
|
+
<span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">table_columns</span><span class="p">:</span>
|
|
292
|
+
<span class="n">quoted_column</span> <span class="o">=</span> <span class="n">_quote_identifier</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span>
|
|
293
|
+
<span class="n">has_non_null</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span>
|
|
294
|
+
<span class="sa">f</span><span class="s2">"""</span>
|
|
295
|
+
<span class="s2"> SELECT 1</span>
|
|
296
|
+
<span class="s2"> FROM </span><span class="si">{</span><span class="n">quoted_table</span><span class="si">}</span>
|
|
297
|
+
<span class="s2"> WHERE </span><span class="si">{</span><span class="n">quoted_column</span><span class="si">}</span><span class="s2"> IS NOT NULL</span>
|
|
298
|
+
<span class="s2"> LIMIT 1</span>
|
|
299
|
+
<span class="s2"> """</span>
|
|
300
|
+
<span class="p">)</span><span class="o">.</span><span class="n">fetchone</span><span class="p">()</span>
|
|
301
|
+
<span class="k">if</span> <span class="n">has_non_null</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
302
|
+
<span class="n">nullable_candidates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span>
|
|
303
|
+
|
|
304
|
+
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">nullable_candidates</span><span class="p">)</span> <span class="o">>=</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_columns</span><span class="p">):</span>
|
|
305
|
+
<span class="n">nullable_candidates</span> <span class="o">=</span> <span class="n">nullable_candidates</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
|
|
306
|
+
|
|
307
|
+
<span class="k">if</span> <span class="n">nullable_candidates</span><span class="p">:</span>
|
|
308
|
+
<span class="n">index_rows</span> <span class="o">=</span> <span class="n">_table_index_rows</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">table_name</span><span class="p">)</span>
|
|
309
|
+
<span class="k">if</span> <span class="n">index_rows</span><span class="p">:</span>
|
|
310
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"BEGIN TRANSACTION"</span><span class="p">)</span>
|
|
311
|
+
<span class="k">try</span><span class="p">:</span>
|
|
312
|
+
<span class="n">indexes_dropped</span> <span class="o">=</span> <span class="n">_drop_indexes</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">index_rows</span><span class="p">)</span>
|
|
313
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">)</span>
|
|
314
|
+
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
315
|
+
<span class="k">try</span><span class="p">:</span>
|
|
316
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"ROLLBACK"</span><span class="p">)</span>
|
|
317
|
+
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
318
|
+
<span class="k">pass</span>
|
|
319
|
+
<span class="k">raise</span>
|
|
320
|
+
|
|
321
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"BEGIN TRANSACTION"</span><span class="p">)</span>
|
|
322
|
+
<span class="k">try</span><span class="p">:</span>
|
|
323
|
+
<span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">nullable_candidates</span><span class="p">:</span>
|
|
324
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span>
|
|
325
|
+
<span class="sa">f</span><span class="s2">"ALTER TABLE </span><span class="si">{</span><span class="n">quoted_table</span><span class="si">}</span><span class="s2"> DROP COLUMN </span><span class="si">{</span><span class="n">_quote_identifier</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
|
326
|
+
<span class="p">)</span>
|
|
327
|
+
<span class="n">dropped_columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span>
|
|
328
|
+
|
|
329
|
+
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">index_rows</span><span class="p">:</span>
|
|
330
|
+
<span class="k">try</span><span class="p">:</span>
|
|
331
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s2">"sql"</span><span class="p">])</span>
|
|
332
|
+
<span class="k">except</span> <span class="n">duckdb</span><span class="o">.</span><span class="n">Error</span><span class="p">:</span>
|
|
333
|
+
<span class="n">indexes_skipped</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s2">"index_name"</span><span class="p">])</span>
|
|
334
|
+
<span class="k">else</span><span class="p">:</span>
|
|
335
|
+
<span class="n">indexes_recreated</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s2">"index_name"</span><span class="p">])</span>
|
|
336
|
+
|
|
337
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">)</span>
|
|
338
|
+
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
339
|
+
<span class="k">try</span><span class="p">:</span>
|
|
340
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"ROLLBACK"</span><span class="p">)</span>
|
|
341
|
+
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
342
|
+
<span class="k">pass</span>
|
|
343
|
+
<span class="n">_restore_indexes</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">index_rows</span><span class="p">)</span>
|
|
344
|
+
<span class="k">raise</span>
|
|
345
|
+
|
|
346
|
+
<span class="n">summary_rows</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
347
|
+
<span class="p">{</span>
|
|
348
|
+
<span class="s2">"db_path"</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">resolved_db_path</span><span class="p">),</span>
|
|
349
|
+
<span class="s2">"table"</span><span class="p">:</span> <span class="n">table_name</span><span class="p">,</span>
|
|
350
|
+
<span class="s2">"dropped_column_count"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">dropped_columns</span><span class="p">),</span>
|
|
351
|
+
<span class="s2">"dropped_columns"</span><span class="p">:</span> <span class="n">dropped_columns</span><span class="p">,</span>
|
|
352
|
+
<span class="s2">"indexes_dropped"</span><span class="p">:</span> <span class="n">indexes_dropped</span><span class="p">,</span>
|
|
353
|
+
<span class="s2">"indexes_recreated"</span><span class="p">:</span> <span class="n">indexes_recreated</span><span class="p">,</span>
|
|
354
|
+
<span class="s2">"indexes_skipped"</span><span class="p">:</span> <span class="n">indexes_skipped</span><span class="p">,</span>
|
|
355
|
+
<span class="s2">"vacuum_requested"</span><span class="p">:</span> <span class="n">vacuum</span><span class="p">,</span>
|
|
356
|
+
<span class="p">}</span>
|
|
357
|
+
<span class="p">)</span>
|
|
358
|
+
|
|
359
|
+
<span class="n">vacuumed</span> <span class="o">=</span> <span class="kc">False</span>
|
|
360
|
+
<span class="k">if</span> <span class="n">vacuum</span><span class="p">:</span>
|
|
361
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"VACUUM"</span><span class="p">)</span>
|
|
362
|
+
<span class="n">vacuumed</span> <span class="o">=</span> <span class="kc">True</span>
|
|
363
|
+
<span class="k">finally</span><span class="p">:</span>
|
|
364
|
+
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
365
|
+
|
|
366
|
+
<span class="n">size_after_bytes</span> <span class="o">=</span> <span class="n">resolved_db_path</span><span class="o">.</span><span class="n">stat</span><span class="p">()</span><span class="o">.</span><span class="n">st_size</span> <span class="k">if</span> <span class="n">resolved_db_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="k">else</span> <span class="mi">0</span>
|
|
367
|
+
<span class="k">return</span> <span class="n">pl</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
|
|
368
|
+
<span class="p">{</span>
|
|
369
|
+
<span class="s2">"db_path"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"db_path"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
370
|
+
<span class="s2">"table"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"table"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
371
|
+
<span class="s2">"dropped_column_count"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"dropped_column_count"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
372
|
+
<span class="s2">"dropped_columns"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"dropped_columns"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
373
|
+
<span class="s2">"indexes_dropped"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"indexes_dropped"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
374
|
+
<span class="s2">"indexes_recreated"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"indexes_recreated"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
375
|
+
<span class="s2">"indexes_skipped"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"indexes_skipped"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
376
|
+
<span class="s2">"vacuum_requested"</span><span class="p">:</span> <span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s2">"vacuum_requested"</span><span class="p">]</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
377
|
+
<span class="s2">"vacuumed"</span><span class="p">:</span> <span class="p">[</span><span class="n">vacuumed</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
378
|
+
<span class="s2">"size_before_bytes"</span><span class="p">:</span> <span class="p">[</span><span class="n">size_before_bytes</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
379
|
+
<span class="s2">"size_after_bytes"</span><span class="p">:</span> <span class="p">[</span><span class="n">size_after_bytes</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">summary_rows</span><span class="p">],</span>
|
|
380
|
+
<span class="p">}</span>
|
|
381
|
+
<span class="p">)</span></div>
|
|
382
|
+
|
|
383
|
+
</pre></div>
|
|
384
|
+
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
387
|
+
<footer>
|
|
388
|
+
|
|
389
|
+
<hr/>
|
|
390
|
+
|
|
391
|
+
<div role="contentinfo">
|
|
392
|
+
<p>© Copyright .</p>
|
|
393
|
+
</div>
|
|
394
|
+
|
|
395
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
396
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
397
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
</footer>
|
|
401
|
+
</div>
|
|
402
|
+
</div>
|
|
403
|
+
</section>
|
|
404
|
+
</div>
|
|
405
|
+
<script>
|
|
406
|
+
jQuery(function () {
|
|
407
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
408
|
+
});
|
|
409
|
+
</script>
|
|
410
|
+
|
|
411
|
+
</body>
|
|
412
|
+
</html>
|