databricks-labs-lakebridge 0.10.4__tar.gz → 0.10.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.
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/PKG-INFO +2 -2
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/__about__.py +1 -1
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/cli.py +47 -27
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/config.py +1 -1
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/contexts/application.py +4 -4
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/dashboard.py +2 -1
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/installation.py +11 -11
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/install.py +51 -131
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/execute.py +7 -2
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/lsp/lsp_engine.py +3 -3
- databricks_labs_lakebridge-0.10.6/databricks/labs/lakebridge/transpiler/repository.py +123 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/pyproject.toml +6 -3
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/.gitignore +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/LICENSE +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/NOTICE +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/README.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/assessments/configure_assessment.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/assessments/pipeline.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/assessments/profiler_config.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/base_install.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/connections/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/connections/credential_manager.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/connections/database_manager.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/connections/env_getter.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/contexts/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/coverage/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/coverage/commons.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/coverage/lakebridge_snow_transpilation_coverage.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/coverage/local_report.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/coverage/sqlglot_snow_transpilation_coverage.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/coverage/sqlglot_tsql_transpilation_coverage.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/configurator.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/job.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/recon.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/table.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/deployment/upgrade_common.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/discovery/table.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/discovery/table_definition.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/discovery/tsql_table_definition.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/errors/exceptions.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/db_sql.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/execution_time.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/file_utils.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/metastore.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/recon_config_utils.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/string_utils.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/telemetry_utils.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/helpers/validation.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/intermediate/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/intermediate/dag.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/intermediate/engine_adapter.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/intermediate/root_tables.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/jvmproxy.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/lineage.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/compare.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/data_source.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/databricks.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/jdbc_reader.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/oracle.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/secrets.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/snowflake.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/source_adapter.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/connectors/tsql.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/constants.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/exception.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/execute.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/aggregate_query.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/base.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/count_query.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/expression_generator.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/hash_query.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/sampling_query.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/query_builder/threshold_query.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/recon_capture.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/recon_config.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/recon_output_config.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/runner.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/sampler.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/reconcile/schema_compare.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/config/credentials.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/00_0_aggregate_recon_header.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/01_0_recon_id.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/01_1_executed_by.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/01_2_started_at.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/02_0_source_type.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/02_1_source_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/02_2_target_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/04_0_aggregate_summary_table.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/05_0_aggregate_recon_drilldown_header.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/06_0_recon_id.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/06_1_category.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/06_2_aggregate_type.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/07_0_target_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/07_1_source_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/08_0_aggregate_details_table.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/09_0_aggregate_missing_mismatch_header.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/10_0_aggr_mismatched_records.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/11_0_aggr_missing_in_databricks.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/11_1_aggr_missing_in_source.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/aggregate_reconciliation_metrics/dashboard.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/00_0_recon_main.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/01_0_recon_id.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/01_1_report_type.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/01_2_executed_by.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/02_0_source_type.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/02_1_source_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/02_2_target_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/03_0_started_at.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/05_0_summary_table.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/06_0_schema_comparison_header.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/07_0_schema_details_table.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/08_0_drill_down_header.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/09_0_recon_id.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/09_1_category.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/10_0_target_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/10_1_source_table.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/11_0_recon_details_pivot.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/12_0_daily_data_validation_issue_header.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/13_0_success_fail_.filter.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/14_0_failed_recon_ids.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/15_0_total_failed_runs.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/15_1_failed_targets.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/15_2_successful_targets.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/16_0_missing_mismatch_header.md +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/17_0_mismatched_records.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/17_1_threshold_mismatches.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/18_0_missing_in_databricks.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/18_1_missing_in_source.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/dashboards/reconciliation_metrics/dashboard.yml +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/installation/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/installation/aggregate_details.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/installation/aggregate_metrics.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/installation/aggregate_rules.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/installation/details.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/installation/main.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/resources/reconcile/queries/installation/metrics.sql +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/lsp/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/dialect_utils.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/generator/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/generator/databricks.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/lca_utils.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/local_expression.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/parsers/__init__.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/parsers/oracle.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/parsers/presto.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/parsers/snowflake.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/sqlglot/sqlglot_engine.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/transpile_engine.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/transpiler/transpile_status.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/uninstall.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/upgrades/v0.4.0_add_main_table_operation_name_column.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/databricks/labs/lakebridge/upgrades/v0.6.0_alter_metrics_datatype.py +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/components/Button.tsx +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/components/ReconcileTabs.tsx +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/css/custom.css +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/css/table.css +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/pages/index.tsx +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/theme/DocSidebarItems/index.tsx +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/theme/Footer/index.tsx +0 -0
- {databricks_labs_lakebridge-0.10.4 → databricks_labs_lakebridge-0.10.6}/docs/lakebridge/src/theme/Layout/index.tsx +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: databricks-labs-lakebridge
|
3
|
-
Version: 0.10.
|
3
|
+
Version: 0.10.6
|
4
4
|
Summary: Fast and predictable migrations to Databricks Lakehouse Platform. This tool is designed to help you migrate your data and workloads to the Databricks Lakehouse Platform in a fast, predictable, and reliable way. It provides a set of tools and utilities to help you reconcile your data and workloads, assess your current state, and plan your migration.
|
5
5
|
Project-URL: Documentation, https://databrickslabs.github.io/lakebridge
|
6
6
|
Project-URL: Issues, https://github.com/databrickslabs/lakebridge/issues
|
@@ -26,7 +26,7 @@ Classifier: Topic :: Utilities
|
|
26
26
|
Requires-Python: >=3.10
|
27
27
|
Requires-Dist: cryptography<45.1.0,>=44.0.2
|
28
28
|
Requires-Dist: databricks-bb-analyzer~=0.1.9
|
29
|
-
Requires-Dist: databricks-labs-blueprint[yaml]<0.12.0,>=0.11.
|
29
|
+
Requires-Dist: databricks-labs-blueprint[yaml]<0.12.0,>=0.11.3
|
30
30
|
Requires-Dist: databricks-labs-lsql==0.16.0
|
31
31
|
Requires-Dist: databricks-sdk~=0.51.0
|
32
32
|
Requires-Dist: duckdb~=1.2.2
|
@@ -1,2 +1,2 @@
|
|
1
1
|
# DO NOT MODIFY THIS FILE
|
2
|
-
__version__ = "0.10.
|
2
|
+
__version__ = "0.10.6"
|
@@ -33,14 +33,12 @@ from databricks.labs.lakebridge.contexts.application import ApplicationContext
|
|
33
33
|
from databricks.labs.lakebridge.helpers.recon_config_utils import ReconConfigPrompts
|
34
34
|
from databricks.labs.lakebridge.helpers.telemetry_utils import make_alphanum_or_semver
|
35
35
|
from databricks.labs.lakebridge.install import WorkspaceInstaller
|
36
|
-
from databricks.labs.lakebridge.install import TranspilerInstaller
|
37
36
|
from databricks.labs.lakebridge.reconcile.runner import ReconcileRunner
|
38
37
|
from databricks.labs.lakebridge.lineage import lineage_generator
|
39
38
|
from databricks.labs.lakebridge.reconcile.recon_config import RECONCILE_OPERATION_NAME, AGG_RECONCILE_OPERATION_NAME
|
40
39
|
from databricks.labs.lakebridge.transpiler.execute import transpile as do_transpile
|
41
|
-
|
42
|
-
|
43
40
|
from databricks.labs.lakebridge.transpiler.lsp.lsp_engine import LSPEngine
|
41
|
+
from databricks.labs.lakebridge.transpiler.repository import TranspilerRepository
|
44
42
|
from databricks.labs.lakebridge.transpiler.sqlglot.sqlglot_engine import SqlglotEngine
|
45
43
|
from databricks.labs.lakebridge.transpiler.transpile_engine import TranspileEngine
|
46
44
|
|
@@ -54,7 +52,7 @@ def raise_validation_exception(msg: str) -> NoReturn:
|
|
54
52
|
raise ValueError(msg)
|
55
53
|
|
56
54
|
|
57
|
-
def _installer(ws: WorkspaceClient) -> WorkspaceInstaller:
|
55
|
+
def _installer(ws: WorkspaceClient, transpiler_repository: TranspilerRepository) -> WorkspaceInstaller:
|
58
56
|
app_context = ApplicationContext(_verify_workspace_client(ws))
|
59
57
|
return WorkspaceInstaller(
|
60
58
|
app_context.workspace_client,
|
@@ -64,6 +62,7 @@ def _installer(ws: WorkspaceClient) -> WorkspaceInstaller:
|
|
64
62
|
app_context.product_info,
|
65
63
|
app_context.resource_configurator,
|
66
64
|
app_context.workspace_installation,
|
65
|
+
transpiler_repository=transpiler_repository,
|
67
66
|
)
|
68
67
|
|
69
68
|
|
@@ -114,12 +113,13 @@ def transpile(
|
|
114
113
|
skip_validation: str | None = None,
|
115
114
|
catalog_name: str | None = None,
|
116
115
|
schema_name: str | None = None,
|
116
|
+
transpiler_repository: TranspilerRepository = TranspilerRepository.user_home(),
|
117
117
|
):
|
118
118
|
"""Transpiles source dialect to databricks dialect"""
|
119
119
|
ctx = ApplicationContext(w)
|
120
120
|
logger.debug(f"Preconfigured transpiler config: {ctx.transpile_config!r}")
|
121
121
|
with_user_agent_extra("cmd", "execute-transpile")
|
122
|
-
checker = _TranspileConfigChecker(ctx.transpile_config, ctx.prompts)
|
122
|
+
checker = _TranspileConfigChecker(ctx.transpile_config, ctx.prompts, transpiler_repository)
|
123
123
|
checker.use_transpiler_config_path(transpiler_config_path)
|
124
124
|
checker.use_source_dialect(source_dialect)
|
125
125
|
checker.use_input_source(input_source)
|
@@ -188,14 +188,19 @@ class _TranspileConfigChecker:
|
|
188
188
|
|
189
189
|
_config: TranspileConfig
|
190
190
|
"""The workspace configuration for transpiling, updated from command-line arguments."""
|
191
|
-
# _engine: TranspileEngine | None
|
192
|
-
# """The transpiler engine to use for transpiling, lazily loaded based on the configuration."""
|
193
191
|
_prompts: Prompts
|
194
192
|
"""Prompting system, for requesting configuration that hasn't been provided."""
|
195
193
|
_source_dialect_override: str | None = None
|
196
194
|
"""The source dialect provided on the command-line, if any."""
|
197
|
-
|
198
|
-
|
195
|
+
_transpiler_repository: TranspilerRepository
|
196
|
+
"""The repository where available transpilers are installed."""
|
197
|
+
|
198
|
+
def __init__(
|
199
|
+
self,
|
200
|
+
config: TranspileConfig | None,
|
201
|
+
prompts: Prompts,
|
202
|
+
transpiler_repository: TranspilerRepository,
|
203
|
+
) -> None:
|
199
204
|
if config is None:
|
200
205
|
logger.warning(
|
201
206
|
"No workspace transpile configuration, use 'install-transpile' to (re)install and configure; using defaults for now."
|
@@ -203,6 +208,7 @@ class _TranspileConfigChecker:
|
|
203
208
|
config = TranspileConfig()
|
204
209
|
self._config = config
|
205
210
|
self._prompts = prompts
|
211
|
+
self._transpiler_repository = transpiler_repository
|
206
212
|
self._source_dialect_override = None
|
207
213
|
|
208
214
|
@staticmethod
|
@@ -334,7 +340,7 @@ class _TranspileConfigChecker:
|
|
334
340
|
def _configure_transpiler_config_path(self, source_dialect: str) -> TranspileEngine | None:
|
335
341
|
"""Configure the transpiler config path based on the requested source dialect."""
|
336
342
|
# Names of compatible transpiler engines for the given dialect.
|
337
|
-
compatible_transpilers =
|
343
|
+
compatible_transpilers = self._transpiler_repository.transpilers_with_dialect(source_dialect)
|
338
344
|
match len(compatible_transpilers):
|
339
345
|
case 0:
|
340
346
|
# Nothing found for the specified dialect, fail.
|
@@ -349,7 +355,7 @@ class _TranspileConfigChecker:
|
|
349
355
|
f"Multiple transpilers available for dialect {source_dialect!r}: {compatible_transpilers!r}"
|
350
356
|
)
|
351
357
|
transpiler_name = self._prompts.choice("Select the transpiler:", list(compatible_transpilers))
|
352
|
-
transpiler_config_path =
|
358
|
+
transpiler_config_path = self._transpiler_repository.transpiler_config_path(transpiler_name)
|
353
359
|
logger.info(f"Lakebridge will use the {transpiler_name} transpiler.")
|
354
360
|
self._config = dataclasses.replace(self._config, transpiler_config_path=str(transpiler_config_path))
|
355
361
|
return TranspileEngine.load_engine(transpiler_config_path)
|
@@ -361,7 +367,7 @@ class _TranspileConfigChecker:
|
|
361
367
|
if engine is None:
|
362
368
|
engine = self._configure_transpiler_config_path(source_dialect)
|
363
369
|
if engine is None:
|
364
|
-
supported_dialects = ", ".join(
|
370
|
+
supported_dialects = ", ".join(self._transpiler_repository.all_dialects())
|
365
371
|
msg = f"{msg_prefix}: {source_dialect!r} (supported dialects: {supported_dialects})"
|
366
372
|
raise_validation_exception(msg)
|
367
373
|
else:
|
@@ -375,7 +381,7 @@ class _TranspileConfigChecker:
|
|
375
381
|
|
376
382
|
def _prompt_source_dialect(self) -> TranspileEngine:
|
377
383
|
# This is similar to the post-install prompting for the source dialect.
|
378
|
-
supported_dialects =
|
384
|
+
supported_dialects = self._transpiler_repository.all_dialects()
|
379
385
|
match len(supported_dialects):
|
380
386
|
case 0:
|
381
387
|
msg = "No transpilers are available, install using 'install-transpile' or use --transpiler-conf-path'."
|
@@ -522,7 +528,7 @@ async def _transpile(ctx: ApplicationContext, config: TranspileConfig, engine: T
|
|
522
528
|
return [status]
|
523
529
|
|
524
530
|
|
525
|
-
def _override_workspace_client_config(ctx: ApplicationContext, overrides: dict[str, str] | None):
|
531
|
+
def _override_workspace_client_config(ctx: ApplicationContext, overrides: dict[str, str] | None) -> None:
|
526
532
|
"""
|
527
533
|
Override the Workspace client's SDK config with the user provided SDK config.
|
528
534
|
Users can provide the cluster_id and warehouse_id during the installation.
|
@@ -541,7 +547,7 @@ def _override_workspace_client_config(ctx: ApplicationContext, overrides: dict[s
|
|
541
547
|
|
542
548
|
|
543
549
|
@lakebridge.command
|
544
|
-
def reconcile(w: WorkspaceClient):
|
550
|
+
def reconcile(w: WorkspaceClient) -> None:
|
545
551
|
"""[EXPERIMENTAL] Reconciles source to Databricks datasets"""
|
546
552
|
with_user_agent_extra("cmd", "execute-reconcile")
|
547
553
|
ctx = ApplicationContext(w)
|
@@ -557,7 +563,7 @@ def reconcile(w: WorkspaceClient):
|
|
557
563
|
|
558
564
|
|
559
565
|
@lakebridge.command
|
560
|
-
def aggregates_reconcile(w: WorkspaceClient):
|
566
|
+
def aggregates_reconcile(w: WorkspaceClient) -> None:
|
561
567
|
"""[EXPERIMENTAL] Reconciles Aggregated source to Databricks datasets"""
|
562
568
|
with_user_agent_extra("cmd", "execute-aggregates-reconcile")
|
563
569
|
ctx = ApplicationContext(w)
|
@@ -574,7 +580,13 @@ def aggregates_reconcile(w: WorkspaceClient):
|
|
574
580
|
|
575
581
|
|
576
582
|
@lakebridge.command
|
577
|
-
def generate_lineage(
|
583
|
+
def generate_lineage(
|
584
|
+
w: WorkspaceClient,
|
585
|
+
*,
|
586
|
+
source_dialect: str | None = None,
|
587
|
+
input_source: str,
|
588
|
+
output_folder: str,
|
589
|
+
) -> None:
|
578
590
|
"""[Experimental] Generates a lineage of source SQL files or folder"""
|
579
591
|
ctx = ApplicationContext(w)
|
580
592
|
logger.debug(f"User: {ctx.current_user}")
|
@@ -595,7 +607,7 @@ def generate_lineage(w: WorkspaceClient, *, source_dialect: str | None = None, i
|
|
595
607
|
|
596
608
|
|
597
609
|
@lakebridge.command
|
598
|
-
def configure_secrets(w: WorkspaceClient):
|
610
|
+
def configure_secrets(w: WorkspaceClient) -> None:
|
599
611
|
"""Setup reconciliation connection profile details as Secrets on Databricks Workspace"""
|
600
612
|
recon_conf = ReconConfigPrompts(w)
|
601
613
|
|
@@ -607,7 +619,7 @@ def configure_secrets(w: WorkspaceClient):
|
|
607
619
|
|
608
620
|
|
609
621
|
@lakebridge.command(is_unauthenticated=True)
|
610
|
-
def configure_database_profiler():
|
622
|
+
def configure_database_profiler() -> None:
|
611
623
|
"""[Experimental] Install the lakebridge Assessment package"""
|
612
624
|
prompts = Prompts()
|
613
625
|
|
@@ -622,32 +634,40 @@ def configure_database_profiler():
|
|
622
634
|
|
623
635
|
|
624
636
|
@lakebridge.command()
|
625
|
-
def install_transpile(
|
637
|
+
def install_transpile(
|
638
|
+
w: WorkspaceClient,
|
639
|
+
artifact: str | None = None,
|
640
|
+
transpiler_repository: TranspilerRepository = TranspilerRepository.user_home(),
|
641
|
+
) -> None:
|
626
642
|
"""Install the Lakebridge transpilers"""
|
627
643
|
with_user_agent_extra("cmd", "install-transpile")
|
628
644
|
if artifact:
|
629
645
|
with_user_agent_extra("artifact-overload", Path(artifact).name)
|
630
646
|
user = w.current_user
|
631
647
|
logger.debug(f"User: {user}")
|
632
|
-
installer = _installer(w)
|
648
|
+
installer = _installer(w, transpiler_repository)
|
633
649
|
installer.run(module="transpile", artifact=artifact)
|
634
650
|
|
635
651
|
|
636
652
|
@lakebridge.command(is_unauthenticated=False)
|
637
|
-
def configure_reconcile(
|
653
|
+
def configure_reconcile(
|
654
|
+
w: WorkspaceClient,
|
655
|
+
transpiler_repository: TranspilerRepository = TranspilerRepository.user_home(),
|
656
|
+
) -> None:
|
638
657
|
"""Configure the Lakebridge reconciliation module"""
|
639
658
|
with_user_agent_extra("cmd", "configure-reconcile")
|
640
659
|
user = w.current_user
|
641
660
|
logger.debug(f"User: {user}")
|
642
|
-
|
643
|
-
|
644
|
-
|
661
|
+
if not w.config.warehouse_id:
|
662
|
+
dbsql_id = _create_warehouse(w)
|
663
|
+
w.config.warehouse_id = dbsql_id
|
664
|
+
logger.debug(f"Warehouse ID used for configuring reconcile: {w.config.warehouse_id}.")
|
665
|
+
installer = _installer(w, transpiler_repository)
|
645
666
|
installer.run(module="reconcile")
|
646
|
-
_remove_warehouse(w, dbsql_id)
|
647
667
|
|
648
668
|
|
649
669
|
@lakebridge.command()
|
650
|
-
def analyze(w: WorkspaceClient, source_directory: str, report_file: str, source_tech: str | None = None):
|
670
|
+
def analyze(w: WorkspaceClient, source_directory: str, report_file: str, source_tech: str | None = None) -> None:
|
651
671
|
"""Run the Analyzer"""
|
652
672
|
with_user_agent_extra("cmd", "analyze")
|
653
673
|
ctx = ApplicationContext(w)
|
@@ -12,7 +12,7 @@ from databricks.sdk.config import Config
|
|
12
12
|
from databricks.sdk.errors import NotFound
|
13
13
|
from databricks.sdk.service.iam import User
|
14
14
|
|
15
|
-
from databricks.labs.lakebridge.config import TranspileConfig, ReconcileConfig,
|
15
|
+
from databricks.labs.lakebridge.config import TranspileConfig, ReconcileConfig, LakebridgeConfiguration
|
16
16
|
from databricks.labs.lakebridge.deployment.configurator import ResourceConfigurator
|
17
17
|
from databricks.labs.lakebridge.deployment.dashboard import DashboardDeployment
|
18
18
|
from databricks.labs.lakebridge.deployment.installation import WorkspaceInstallation
|
@@ -42,7 +42,7 @@ class ApplicationContext:
|
|
42
42
|
|
43
43
|
@cached_property
|
44
44
|
def product_info(self) -> ProductInfo:
|
45
|
-
return ProductInfo.from_class(
|
45
|
+
return ProductInfo.from_class(LakebridgeConfiguration)
|
46
46
|
|
47
47
|
@cached_property
|
48
48
|
def installation(self) -> Installation:
|
@@ -65,8 +65,8 @@ class ApplicationContext:
|
|
65
65
|
return None
|
66
66
|
|
67
67
|
@cached_property
|
68
|
-
def remorph_config(self) ->
|
69
|
-
return
|
68
|
+
def remorph_config(self) -> LakebridgeConfiguration:
|
69
|
+
return LakebridgeConfiguration(transpile=self.transpile_config, reconcile=self.recon_config)
|
70
70
|
|
71
71
|
@cached_property
|
72
72
|
def connect_config(self) -> Config:
|
@@ -54,7 +54,8 @@ class DashboardDeployment:
|
|
54
54
|
|
55
55
|
valid_dashboard_refs = set()
|
56
56
|
for dashboard_folder in folder.iterdir():
|
57
|
-
|
57
|
+
# Make sure the directory contains a dashboard
|
58
|
+
if not (dashboard_folder.is_dir() and dashboard_folder.joinpath("dashboard.yml").exists()):
|
58
59
|
continue
|
59
60
|
valid_dashboard_refs.add(self._dashboard_reference(dashboard_folder))
|
60
61
|
dashboard = self._update_or_create_dashboard(dashboard_folder, parent_path, config.metadata_config)
|
@@ -11,7 +11,7 @@ from databricks.sdk.errors import NotFound
|
|
11
11
|
from databricks.sdk.mixins.compute import SemVer
|
12
12
|
from databricks.sdk.errors.platform import InvalidParameterValue, ResourceDoesNotExist
|
13
13
|
|
14
|
-
from databricks.labs.lakebridge.config import
|
14
|
+
from databricks.labs.lakebridge.config import LakebridgeConfiguration
|
15
15
|
from databricks.labs.lakebridge.deployment.recon import ReconDeployment
|
16
16
|
|
17
17
|
logger = logging.getLogger("databricks.labs.lakebridge.install")
|
@@ -54,14 +54,14 @@ class WorkspaceInstallation:
|
|
54
54
|
return Version(
|
55
55
|
version=local_installed_version,
|
56
56
|
date=local_installed_date,
|
57
|
-
wheel=f"
|
57
|
+
wheel=f"databricks_labs_lakebridge-{local_installed_version}-py3-none-any.whl",
|
58
58
|
)
|
59
59
|
|
60
60
|
def _get_ws_version(self):
|
61
61
|
try:
|
62
62
|
return self._installation.load(Version)
|
63
|
-
except ResourceDoesNotExist
|
64
|
-
logger.
|
63
|
+
except ResourceDoesNotExist:
|
64
|
+
logger.debug("No existing version found in workspace; assuming fresh installation.")
|
65
65
|
return None
|
66
66
|
|
67
67
|
def _apply_upgrades(self):
|
@@ -91,21 +91,21 @@ class WorkspaceInstallation:
|
|
91
91
|
wheel_paths = [f"/Workspace{wheel}" for wheel in wheel_paths]
|
92
92
|
return wheel_paths
|
93
93
|
|
94
|
-
def install(self, config:
|
94
|
+
def install(self, config: LakebridgeConfiguration):
|
95
95
|
self._apply_upgrades()
|
96
96
|
wheel_paths: list[str] = self._upload_wheel()
|
97
97
|
if config.reconcile:
|
98
|
-
logger.info("Installing
|
98
|
+
logger.info("Installing Lakebridge reconcile Metadata components.")
|
99
99
|
self._recon_deployment.install(config.reconcile, wheel_paths)
|
100
100
|
|
101
|
-
def uninstall(self, config:
|
102
|
-
# This will remove all the
|
101
|
+
def uninstall(self, config: LakebridgeConfiguration):
|
102
|
+
# This will remove all the Lakebridge modules
|
103
103
|
if not self._prompts.confirm(
|
104
|
-
"Do you want to uninstall
|
105
|
-
"remove
|
104
|
+
"Do you want to uninstall Lakebridge from the workspace too, this would "
|
105
|
+
"remove Lakebridge project folder, jobs, metadata and dashboards"
|
106
106
|
):
|
107
107
|
return
|
108
|
-
logger.info(f"Uninstalling
|
108
|
+
logger.info(f"Uninstalling Lakebridge from {self._ws.config.host}.")
|
109
109
|
try:
|
110
110
|
self._installation.files()
|
111
111
|
except NotFound:
|