snowflake-data-validation 1.25.0__tar.gz → 1.26.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/PKG-INFO +22 -36
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/README.md +21 -35
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/pyproject.toml +0 -4
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/__init__.py +0 -19
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +25 -176
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +5 -126
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +164 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +2 -216
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +4 -42
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +14 -114
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +381 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +22 -16
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +4 -4
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +3 -3
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +66 -12
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +14 -115
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +26 -84
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +23 -134
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +64 -23
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/__init__.py +15 -1
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/model/__init__.py +15 -1
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +157 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +42 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +15 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +1 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +170 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +88 -18
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +34 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +9 -4
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +4 -2
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +98 -35
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +35 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +4 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +1 -1
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +56 -1
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +56 -64
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +3 -2
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +16 -39
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +9 -1
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +27 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +2 -2
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +15 -3
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +9 -1
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +28 -31
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +8 -1
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +15 -15
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +10 -4
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +85 -11
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +9 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/context.py +10 -20
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +38 -31
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/utils/interval_common.py +387 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +22 -3
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +49 -45
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +67 -83
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +4 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +46 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +58 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +40 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +36 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +52 -0
- snowflake_data_validation-1.26.0/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +79 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/conftest.py +15 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Redshift/query/test_query_generator_redshift.py +108 -3
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Teradata/test_query_generator_teradata.py +50 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +27 -17
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/oracle/test_oracle_query_generator.py +126 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/oracle/test_oracle_type_mappings.py +10 -8
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +3 -1
- snowflake_data_validation-1.26.0/tests/unit/sqlserver/test_connector_factory_sql_server.py +181 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_cell_validation_query_generation.py +102 -3
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_comparison_codec.py +32 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_comparison_orchestrator.py +10 -30
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_data_validator.py +4 -4
- snowflake_data_validation-1.26.0/tests/unit/test_float_tme_canonical.py +104 -0
- snowflake_data_validation-1.26.0/tests/unit/test_interval_common.py +132 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_iso_dv_common.py +12 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_metrics_templates_casts.py +90 -0
- snowflake_data_validation-1.26.0/tests/unit/test_numeric_scale_resolution.py +111 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_query_generator_numeric_scale.py +48 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_source_validation_executor.py +0 -6
- snowflake_data_validation-1.26.0/tests/unit/test_sync_validation_executor.py +175 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_telemetry.py +1 -0
- snowflake_data_validation-1.26.0/tests/unit/test_validation_templates_dto.py +155 -0
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/__main__.py +0 -38
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_cli.py +0 -378
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/common_cli/cli_partitioning.py +0 -208
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/common_cli/cli_sync_validation.py +0 -54
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -360
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -593
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/main_cli.py +0 -113
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/orchestration/console_progress_reporter.py +0 -53
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/postgresql/postgresql_cli.py +0 -733
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -60
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/redshift/redshift_cli.py +0 -733
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/snowflake/snowflake_cli.py +0 -690
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_cli.py +0 -811
- snowflake_data_validation-1.25.0/src/snowflake/snowflake_data_validation/teradata/teradata_cli.py +0 -889
- snowflake_data_validation-1.25.0/tests/unit/Redshift/cli/test_redshift_cli_general.py +0 -45
- snowflake_data_validation-1.25.0/tests/unit/Redshift/cli/test_redshift_cli_generate_validation_scripts.py +0 -191
- snowflake_data_validation-1.25.0/tests/unit/Redshift/cli/test_redshift_cli_get_configuration_files.py +0 -139
- snowflake_data_validation-1.25.0/tests/unit/Redshift/cli/test_redshift_cli_run_async_validation.py +0 -193
- snowflake_data_validation-1.25.0/tests/unit/Redshift/cli/test_redshift_cli_run_validation.py +0 -177
- snowflake_data_validation-1.25.0/tests/unit/Redshift/cli/test_redshift_cli_run_validation_ipc.py +0 -646
- snowflake_data_validation-1.25.0/tests/unit/Teradata/test_teradata_cli.py +0 -434
- snowflake_data_validation-1.25.0/tests/unit/test_console_progress_reporter.py +0 -123
- snowflake_data_validation-1.25.0/tests/unit/test_snowflake_cli.py +0 -435
- snowflake_data_validation-1.25.0/tests/unit/test_sqlserver_cli.py +0 -669
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/.gitignore +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/LICENSE +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/docs/README.md +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/constants.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/integration/test_async_generation_integration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/integration/test_async_validation_integration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/integration/test_source_validation_integration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/integration/test_sync_validation_integration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/bigquery/test_query_generator_bigquery.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/sqlserver/test_sqlserver_row_queries.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_accepted_transformation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_batched_metrics_queries.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_cell_data_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_charset_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_column_grouping.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_configuration_loader.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_configuration_model.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_connector_snowflake.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_custom_templates_models.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_escape_odbc_value.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_float_canonical_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_get_configuration_file.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_helper_dataframe.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_index_key_format.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_internal_helpers.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_metrics_reshape.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_platform_bridge.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_postgresql_normalization_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_query_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_query_metrics_level_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_query_to_dataframe.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_query_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_result_set_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_result_set_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_result_set_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_result_set_to_dataframe.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_result_set_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_row_data_validator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_sql_catalog_template_guard.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_sql_literal_jinja_filter.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_table_configuration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_table_context.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_table_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_table_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_target_platform_factory.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_teradata_iso_normalization.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_timestamp_golden_vectors.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_validation_configuration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_validation_report_status.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/test_view_configuration.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.25.0 → snowflake_data_validation-1.26.0}/tests/unit/utils/test_constants.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-data-validation
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.26.0
|
|
4
4
|
Summary: Snowflake Data Validation
|
|
5
5
|
Project-URL: Bug Tracker, https://github.com/snowflake-eng/migrations-data-validation/issues
|
|
6
6
|
Project-URL: Source code, https://github.com/snowflake-eng/migrations-data-validation/
|
|
@@ -89,9 +89,9 @@ Description-Content-Type: text/markdown
|
|
|
89
89
|
[](https://www.snowflake.com/en/legal/technical-services-and-education/conversion-software-terms/)
|
|
90
90
|
[](https://www.python.org/downloads/)
|
|
91
91
|
|
|
92
|
-
**Snowflake Data Validation** is a
|
|
92
|
+
**Snowflake Data Validation** is a Python library for validating data migrations and ensuring data quality between source and target databases, with support for SQL Server, Redshift, Teradata, and Oracle as source systems.
|
|
93
93
|
|
|
94
|
-
> 📖 **For detailed usage instructions
|
|
94
|
+
> 📖 **For detailed usage instructions and configuration examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).**
|
|
95
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
@@ -99,7 +99,6 @@ Description-Content-Type: text/markdown
|
|
|
99
99
|
|
|
100
100
|
- **Multi-level validation**: Schema validation, statistical metrics, and row-level data integrity checks.
|
|
101
101
|
- **Multiple source platforms**: SQL Server, Redshift, Teradata, Oracle.
|
|
102
|
-
- **User-friendly CLI**: Comprehensive commands for automation and orchestration.
|
|
103
102
|
- **Parallel processing**: Multi-threaded table validation for faster execution.
|
|
104
103
|
- **Offline validation**: Extract source data as Parquet files for validation without source access.
|
|
105
104
|
- **Flexible configuration**: YAML-based workflows with per-table customization.
|
|
@@ -139,27 +138,6 @@ pip install "snowflake-data-validation[all]"
|
|
|
139
138
|
|
|
140
139
|
---
|
|
141
140
|
|
|
142
|
-
## 🔄 Execution Modes
|
|
143
|
-
|
|
144
|
-
| Mode | Command | Description |
|
|
145
|
-
|------|---------|-------------|
|
|
146
|
-
| **Sync Validation** | `run-validation` | Real-time comparison between source and target databases |
|
|
147
|
-
| **Source Extraction** | `source-validate` | Extract source data to Parquet files for offline validation |
|
|
148
|
-
| **Async Validation** | `run-async-validation` | Validate using pre-extracted Parquet files |
|
|
149
|
-
| **Script Generation** | `generate-validation-scripts` | Generate SQL scripts for manual execution |
|
|
150
|
-
|
|
151
|
-
**Supported Dialects**: `sqlserver`, `snowflake`, `redshift`, `teradata`, `oracle`
|
|
152
|
-
|
|
153
|
-
**CLI entry point**: from the repo (or an install), run the package module — for example:
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
python -m snowflake.snowflake_data_validation redshift run-validation -dvf path/to/config.yaml
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
Do not use `python -m snowflake.snowflake_data_validation.main_cli` for subcommands; that path exits after logging without dispatching to `redshift` / `sqlserver` / etc.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
141
|
## 🔍 Validation Levels
|
|
164
142
|
|
|
165
143
|
Validation runs **L1 schema**, **L2 metrics**, and optionally **L3 row** (and cell / hybrid modes where configured). Each level emits per-column (or per-criterion) rows with a `STATUS` of `SUCCESS` or `FAILURE`; the run is considered passing at that level only when **no failure rows** are present.
|
|
@@ -199,24 +177,32 @@ Performs row-by-row comparison:
|
|
|
199
177
|
|
|
200
178
|
---
|
|
201
179
|
|
|
202
|
-
##
|
|
203
|
-
|
|
204
|
-
```bash
|
|
205
|
-
snowflake-data-validation <source_dialect> <command> [options]
|
|
206
|
-
# Short alias: sdv <source_dialect> <command> [options]
|
|
207
|
-
```
|
|
180
|
+
## 📚 Documentation
|
|
208
181
|
|
|
209
|
-
|
|
182
|
+
For configuration options and examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
|
|
210
183
|
|
|
211
184
|
---
|
|
212
185
|
|
|
213
|
-
##
|
|
186
|
+
## Changelog
|
|
214
187
|
|
|
215
|
-
|
|
188
|
+
### v1.26.0
|
|
216
189
|
|
|
217
|
-
|
|
190
|
+
**New features**
|
|
218
191
|
|
|
219
|
-
|
|
192
|
+
- Added charset-aware normalization to query generators.
|
|
193
|
+
- Added Teradata non-Latin column UTF-8 hex hashing for server-side row validation.
|
|
194
|
+
- Added key inference for Azure Synapse, BigQuery, and SQLite.
|
|
195
|
+
- Added support for the `INTERVAL` data type.
|
|
196
|
+
|
|
197
|
+
**Improvements**
|
|
198
|
+
|
|
199
|
+
- Improved support for data validation of the `INTERVAL` data type.
|
|
200
|
+
|
|
201
|
+
### v1.25.1
|
|
202
|
+
|
|
203
|
+
**Improvements**
|
|
204
|
+
|
|
205
|
+
- Removed the deprecated `sdv` CLI layer; Cloud Data Validation via the Data Exchange Agent is now the only supported execution path.
|
|
220
206
|
|
|
221
207
|
### v1.25.0
|
|
222
208
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
[](https://www.snowflake.com/en/legal/technical-services-and-education/conversion-software-terms/)
|
|
4
4
|
[](https://www.python.org/downloads/)
|
|
5
5
|
|
|
6
|
-
**Snowflake Data Validation** is a
|
|
6
|
+
**Snowflake Data Validation** is a Python library for validating data migrations and ensuring data quality between source and target databases, with support for SQL Server, Redshift, Teradata, and Oracle as source systems.
|
|
7
7
|
|
|
8
|
-
> 📖 **For detailed usage instructions
|
|
8
|
+
> 📖 **For detailed usage instructions and configuration examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).**
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
|
|
14
14
|
- **Multi-level validation**: Schema validation, statistical metrics, and row-level data integrity checks.
|
|
15
15
|
- **Multiple source platforms**: SQL Server, Redshift, Teradata, Oracle.
|
|
16
|
-
- **User-friendly CLI**: Comprehensive commands for automation and orchestration.
|
|
17
16
|
- **Parallel processing**: Multi-threaded table validation for faster execution.
|
|
18
17
|
- **Offline validation**: Extract source data as Parquet files for validation without source access.
|
|
19
18
|
- **Flexible configuration**: YAML-based workflows with per-table customization.
|
|
@@ -53,27 +52,6 @@ pip install "snowflake-data-validation[all]"
|
|
|
53
52
|
|
|
54
53
|
---
|
|
55
54
|
|
|
56
|
-
## 🔄 Execution Modes
|
|
57
|
-
|
|
58
|
-
| Mode | Command | Description |
|
|
59
|
-
|------|---------|-------------|
|
|
60
|
-
| **Sync Validation** | `run-validation` | Real-time comparison between source and target databases |
|
|
61
|
-
| **Source Extraction** | `source-validate` | Extract source data to Parquet files for offline validation |
|
|
62
|
-
| **Async Validation** | `run-async-validation` | Validate using pre-extracted Parquet files |
|
|
63
|
-
| **Script Generation** | `generate-validation-scripts` | Generate SQL scripts for manual execution |
|
|
64
|
-
|
|
65
|
-
**Supported Dialects**: `sqlserver`, `snowflake`, `redshift`, `teradata`, `oracle`
|
|
66
|
-
|
|
67
|
-
**CLI entry point**: from the repo (or an install), run the package module — for example:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
python -m snowflake.snowflake_data_validation redshift run-validation -dvf path/to/config.yaml
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Do not use `python -m snowflake.snowflake_data_validation.main_cli` for subcommands; that path exits after logging without dispatching to `redshift` / `sqlserver` / etc.
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
55
|
## 🔍 Validation Levels
|
|
78
56
|
|
|
79
57
|
Validation runs **L1 schema**, **L2 metrics**, and optionally **L3 row** (and cell / hybrid modes where configured). Each level emits per-column (or per-criterion) rows with a `STATUS` of `SUCCESS` or `FAILURE`; the run is considered passing at that level only when **no failure rows** are present.
|
|
@@ -113,24 +91,32 @@ Performs row-by-row comparison:
|
|
|
113
91
|
|
|
114
92
|
---
|
|
115
93
|
|
|
116
|
-
##
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
snowflake-data-validation <source_dialect> <command> [options]
|
|
120
|
-
# Short alias: sdv <source_dialect> <command> [options]
|
|
121
|
-
```
|
|
94
|
+
## 📚 Documentation
|
|
122
95
|
|
|
123
|
-
|
|
96
|
+
For configuration options and examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
|
|
124
97
|
|
|
125
98
|
---
|
|
126
99
|
|
|
127
|
-
##
|
|
100
|
+
## Changelog
|
|
128
101
|
|
|
129
|
-
|
|
102
|
+
### v1.26.0
|
|
130
103
|
|
|
131
|
-
|
|
104
|
+
**New features**
|
|
132
105
|
|
|
133
|
-
|
|
106
|
+
- Added charset-aware normalization to query generators.
|
|
107
|
+
- Added Teradata non-Latin column UTF-8 hex hashing for server-side row validation.
|
|
108
|
+
- Added key inference for Azure Synapse, BigQuery, and SQLite.
|
|
109
|
+
- Added support for the `INTERVAL` data type.
|
|
110
|
+
|
|
111
|
+
**Improvements**
|
|
112
|
+
|
|
113
|
+
- Improved support for data validation of the `INTERVAL` data type.
|
|
114
|
+
|
|
115
|
+
### v1.25.1
|
|
116
|
+
|
|
117
|
+
**Improvements**
|
|
118
|
+
|
|
119
|
+
- Removed the deprecated `sdv` CLI layer; Cloud Data Validation via the Data Exchange Agent is now the only supported execution path.
|
|
134
120
|
|
|
135
121
|
### v1.25.0
|
|
136
122
|
|
|
@@ -60,10 +60,6 @@ name = "snowflake-data-validation"
|
|
|
60
60
|
readme = "README.md"
|
|
61
61
|
requires-python = '>=3.10'
|
|
62
62
|
|
|
63
|
-
[project.scripts]
|
|
64
|
-
sdv = "snowflake.snowflake_data_validation.main_cli:data_validation_app"
|
|
65
|
-
snowflake-data-validation = "snowflake.snowflake_data_validation.main_cli:data_validation_app"
|
|
66
|
-
|
|
67
63
|
[project.optional-dependencies]
|
|
68
64
|
all = ["snowflake-data-validation[development,sqlserver,teradata,redshift,postgresql,azure-synapse,sqlite]"]
|
|
69
65
|
development = [
|
|
@@ -25,7 +25,6 @@ Features
|
|
|
25
25
|
--------
|
|
26
26
|
- Multi-level data validation (Level 1: table metadata, Level 2: column metadata)
|
|
27
27
|
- Support for multiple source systems (SQL Server, Snowflake)
|
|
28
|
-
- CLI interface for validation operations
|
|
29
28
|
- Configurable validation processes
|
|
30
29
|
- Progress reporting and detailed validation reports
|
|
31
30
|
|
|
@@ -38,12 +37,6 @@ public
|
|
|
38
37
|
Library API module providing decoupled validation steps (query generation,
|
|
39
38
|
execution, validation) that can be called independently
|
|
40
39
|
|
|
41
|
-
CLI Interface
|
|
42
|
-
Command-line interface available via `main_cli` module for:
|
|
43
|
-
- Setting up database connections
|
|
44
|
-
- Running validation operations
|
|
45
|
-
- Managing configuration files
|
|
46
|
-
|
|
47
40
|
Supported Dialects
|
|
48
41
|
------------------
|
|
49
42
|
- Snowflake to Snowflake validation
|
|
@@ -68,18 +61,6 @@ Programmatic API (Decoupled Steps):
|
|
|
68
61
|
>>> result = public.execute_query(table_context, connector, schema_query)
|
|
69
62
|
>>> validation_result = public.validate_schema(source_df, target_df)
|
|
70
63
|
|
|
71
|
-
Command Line Interface:
|
|
72
|
-
|
|
73
|
-
.. code-block:: bash
|
|
74
|
-
|
|
75
|
-
# Set up SQL Server connection
|
|
76
|
-
python -m snowflake.snowflake_data_validation sqlserver source-connection \
|
|
77
|
-
--host localhost --port 1433 --username user --password pass --database mydb
|
|
78
|
-
|
|
79
|
-
# Run validation
|
|
80
|
-
python -m snowflake.snowflake_data_validation sqlserver run-validation \
|
|
81
|
-
--data-validation-config-file config.json
|
|
82
|
-
|
|
83
64
|
For more detailed examples and usage, please refer to the documentation.
|
|
84
65
|
"""
|
|
85
66
|
|
|
@@ -13,10 +13,6 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
-
import logging
|
|
17
|
-
|
|
18
|
-
from collections.abc import Callable
|
|
19
|
-
|
|
20
16
|
from snowflake.snowflake_data_validation.configuration.model.table_configuration import (
|
|
21
17
|
TableConfiguration,
|
|
22
18
|
)
|
|
@@ -26,9 +22,6 @@ from snowflake.snowflake_data_validation.configuration.model.validation_configur
|
|
|
26
22
|
from snowflake.snowflake_data_validation.executer import (
|
|
27
23
|
ExecutorFactory,
|
|
28
24
|
)
|
|
29
|
-
from snowflake.snowflake_data_validation.orchestration.console_progress_reporter import (
|
|
30
|
-
ConsoleProgressReporter,
|
|
31
|
-
)
|
|
32
25
|
from snowflake.snowflake_data_validation.orchestration.parallel_execution_engine import (
|
|
33
26
|
ParallelExecutionEngine,
|
|
34
27
|
)
|
|
@@ -38,6 +31,9 @@ from snowflake.snowflake_data_validation.orchestration.table_metadata_processor
|
|
|
38
31
|
from snowflake.snowflake_data_validation.orchestration.validation_progress_reporter import (
|
|
39
32
|
ValidationProgressReporter,
|
|
40
33
|
)
|
|
34
|
+
from snowflake.snowflake_data_validation.public.model import (
|
|
35
|
+
ValidationProgressCallback,
|
|
36
|
+
)
|
|
41
37
|
from snowflake.snowflake_data_validation.utils.arguments_manager_base import (
|
|
42
38
|
ValidationEnvironmentObject,
|
|
43
39
|
)
|
|
@@ -49,7 +45,6 @@ from snowflake.snowflake_data_validation.utils.constants import (
|
|
|
49
45
|
ExecutionMode,
|
|
50
46
|
)
|
|
51
47
|
from snowflake.snowflake_data_validation.utils.context import Context
|
|
52
|
-
from snowflake.snowflake_data_validation.utils.logging_utils import log
|
|
53
48
|
from snowflake.snowflake_data_validation.utils.telemetry import (
|
|
54
49
|
report_telemetry,
|
|
55
50
|
)
|
|
@@ -58,21 +53,15 @@ from snowflake.snowflake_data_validation.validation.validation_database_manager
|
|
|
58
53
|
)
|
|
59
54
|
|
|
60
55
|
|
|
61
|
-
LOGGER = logging.getLogger(__name__)
|
|
62
|
-
|
|
63
|
-
|
|
64
56
|
class ComparisonOrchestrator:
|
|
65
57
|
"""Orchestrator for validation operations that creates appropriate components based on command type."""
|
|
66
58
|
|
|
67
|
-
@log
|
|
68
59
|
def __init__(
|
|
69
60
|
self,
|
|
70
61
|
connection_pool_manager: ConnectionPoolManager,
|
|
71
62
|
context: Context,
|
|
72
63
|
max_threads: int,
|
|
73
|
-
progress_callback:
|
|
74
|
-
Callable[[str, list[str], Context | None], None] | None
|
|
75
|
-
) = None,
|
|
64
|
+
progress_callback: ValidationProgressCallback | None = None,
|
|
76
65
|
):
|
|
77
66
|
"""Initialize the orchestrator.
|
|
78
67
|
|
|
@@ -86,73 +75,41 @@ class ComparisonOrchestrator:
|
|
|
86
75
|
Signature: (table_name: str, columns: list[str], context: Context | None) -> None
|
|
87
76
|
|
|
88
77
|
"""
|
|
89
|
-
LOGGER.debug("Initializing ComparisonOrchestrator")
|
|
90
|
-
|
|
91
78
|
self.connection_pool_manager = connection_pool_manager
|
|
92
79
|
self.context = context
|
|
93
80
|
self.executor_factory = ExecutorFactory()
|
|
94
81
|
self.max_threads = max_threads
|
|
95
82
|
|
|
96
|
-
# Initialize orchestration modules
|
|
97
83
|
self.metadata_processor = TableMetadataProcessor()
|
|
98
84
|
self.execution_engine = ParallelExecutionEngine(max_threads=self.max_threads)
|
|
99
85
|
self.progress_reporter = ValidationProgressReporter(
|
|
100
86
|
progress_callback=progress_callback,
|
|
101
87
|
)
|
|
102
88
|
self.db_manager = ValidationDatabaseManager()
|
|
103
|
-
self.console_progress_reporter = ConsoleProgressReporter(
|
|
104
|
-
output_handler=self.context.output_handler
|
|
105
|
-
)
|
|
106
|
-
|
|
107
|
-
LOGGER.debug(
|
|
108
|
-
"ComparisonOrchestrator initialized with max_threads=%d", self.max_threads
|
|
109
|
-
)
|
|
110
89
|
|
|
111
90
|
@classmethod
|
|
112
|
-
@log(log_args=False)
|
|
113
91
|
def from_validation_environment(
|
|
114
92
|
cls,
|
|
115
93
|
validation_env: ValidationEnvironmentObject,
|
|
116
|
-
progress_callback:
|
|
117
|
-
Callable[[str, list[str], Context | None], None] | None
|
|
118
|
-
) = None,
|
|
94
|
+
progress_callback: ValidationProgressCallback | None = None,
|
|
119
95
|
) -> "ComparisonOrchestrator":
|
|
120
96
|
"""Create a ComparisonOrchestrator from a ValidationEnvironmentObject.
|
|
121
97
|
|
|
122
98
|
Args:
|
|
123
99
|
validation_env: ValidationEnvironmentObject instance containing all required components
|
|
124
|
-
progress_callback: Optional callback for progress reporting.
|
|
125
|
-
provided, it replaces the default stdout/pipe-based progress
|
|
126
|
-
reporting in ValidationProgressReporter.
|
|
127
|
-
Signature: (table_name: str, columns: list[str], context: Context | None) -> None
|
|
100
|
+
progress_callback: Optional callback for progress reporting.
|
|
128
101
|
|
|
129
102
|
Returns:
|
|
130
103
|
ComparisonOrchestrator: Configured orchestrator ready to run validation
|
|
131
104
|
|
|
132
105
|
"""
|
|
133
|
-
LOGGER.debug("Creating ComparisonOrchestrator from validation environment")
|
|
134
|
-
|
|
135
|
-
config = validation_env.context.configuration
|
|
136
|
-
num_tables: int = len(config.tables)
|
|
137
|
-
max_threads_config: str | int = config.max_threads
|
|
138
|
-
|
|
139
106
|
# Hardcoded optimal pool size for now, can be adjusted later on based on changes in SnowConvert AI
|
|
140
107
|
optimal_max_threads: int = TEMPORARY_DEFAULT_OPTIMAL_LIMIT
|
|
141
108
|
# CpuOptimizer.get_optimal_thread_count(num_tables=num_tables, max_threads=max_threads_config)
|
|
142
109
|
optimal_pool_size: int = TEMPORARY_DEFAULT_OPTIMAL_LIMIT
|
|
143
110
|
# optimal_max_threads
|
|
144
111
|
|
|
145
|
-
|
|
146
|
-
"Using CPUOptimizer: num_tables=%d, config_max_threads=%s, optimal_max_threads=%d, optimal_pool_size=%d",
|
|
147
|
-
num_tables,
|
|
148
|
-
max_threads_config,
|
|
149
|
-
optimal_max_threads,
|
|
150
|
-
optimal_pool_size,
|
|
151
|
-
)
|
|
152
|
-
|
|
153
|
-
connection_pool_manager: ConnectionPoolManager = (
|
|
154
|
-
validation_env.create_connection_pool_manager(pool_size=optimal_pool_size)
|
|
155
|
-
)
|
|
112
|
+
connection_pool_manager: ConnectionPoolManager = validation_env.create_connection_pool_manager(pool_size=optimal_pool_size)
|
|
156
113
|
|
|
157
114
|
return cls(
|
|
158
115
|
connection_pool_manager=connection_pool_manager,
|
|
@@ -161,160 +118,54 @@ class ComparisonOrchestrator:
|
|
|
161
118
|
progress_callback=progress_callback,
|
|
162
119
|
)
|
|
163
120
|
|
|
164
|
-
@log
|
|
165
121
|
@report_telemetry()
|
|
166
122
|
def run_sync_comparison(self) -> None:
|
|
167
|
-
"""Run the complete synchronous validation comparison process using parallel execution.
|
|
168
|
-
|
|
169
|
-
Uses the sync validation executor with metadata extractors for real-time validation.
|
|
170
|
-
Each table is processed in a separate thread.
|
|
171
|
-
"""
|
|
172
|
-
LOGGER.info("Starting synchronous validation comparison")
|
|
173
|
-
|
|
123
|
+
"""Run the complete synchronous validation comparison process using parallel execution."""
|
|
174
124
|
with self.db_manager:
|
|
175
125
|
self._execute_parallel_validation(ExecutionMode.SYNC_VALIDATION)
|
|
176
|
-
self.progress_reporter.flush_validation_reports(
|
|
177
|
-
|
|
178
|
-
)
|
|
179
|
-
self.progress_reporter.
|
|
180
|
-
|
|
181
|
-
try:
|
|
182
|
-
self.progress_reporter.generate_execution_summary_report(
|
|
183
|
-
context=self.context, db_manager=self.db_manager
|
|
184
|
-
)
|
|
185
|
-
except Exception as e:
|
|
186
|
-
LOGGER.warning("Failed to generate execution summary report: %s", e)
|
|
187
|
-
|
|
188
|
-
try:
|
|
189
|
-
results_summary = self.db_manager.get_results_summary_report_dataframe()
|
|
190
|
-
|
|
191
|
-
self.console_progress_reporter.generate_console_output_report(
|
|
192
|
-
results_summary=results_summary
|
|
193
|
-
)
|
|
194
|
-
self.progress_reporter.generate_results_summary_report(
|
|
195
|
-
context=self.context, results_summary=results_summary
|
|
196
|
-
)
|
|
197
|
-
except Exception as e:
|
|
198
|
-
LOGGER.warning("Error during report generation: %s", e)
|
|
126
|
+
self.progress_reporter.flush_validation_reports(self.context, self.db_manager)
|
|
127
|
+
self.progress_reporter.generate_execution_summary_report(context=self.context, db_manager=self.db_manager)
|
|
128
|
+
results_summary = self.db_manager.get_results_summary_report_dataframe()
|
|
129
|
+
self.progress_reporter.generate_results_summary_report(context=self.context, results_summary=results_summary)
|
|
199
130
|
|
|
200
|
-
LOGGER.info("Synchronous validation comparison completed")
|
|
201
|
-
|
|
202
|
-
@log
|
|
203
131
|
@report_telemetry()
|
|
204
132
|
def run_async_generation(self) -> None:
|
|
205
|
-
"""Generate validation scripts for all tables in parallel.
|
|
206
|
-
|
|
207
|
-
Uses script printers to write SQL queries to files.
|
|
208
|
-
Each table is processed in a separate thread for maximum throughput.
|
|
209
|
-
"""
|
|
210
|
-
LOGGER.info("Starting async script generation")
|
|
211
|
-
|
|
133
|
+
"""Generate validation scripts for all tables in parallel."""
|
|
212
134
|
with self.db_manager:
|
|
213
|
-
self._execute_parallel_validation(
|
|
214
|
-
|
|
215
|
-
)
|
|
216
|
-
self.progress_reporter.flush_validation_reports(
|
|
217
|
-
self.context, self.db_manager
|
|
218
|
-
)
|
|
135
|
+
self._execute_parallel_validation(ExecutionMode.ASYNC_GENERATION, use_script_printer=True)
|
|
136
|
+
self.progress_reporter.flush_validation_reports(self.context, self.db_manager)
|
|
219
137
|
|
|
220
|
-
LOGGER.info("Async script generation completed")
|
|
221
|
-
|
|
222
|
-
@log
|
|
223
138
|
@report_telemetry()
|
|
224
139
|
def run_async_comparison(self) -> None:
|
|
225
|
-
"""Run the asynchronous validation comparison process using parallel execution.
|
|
226
|
-
|
|
227
|
-
Uses the async validation executor with metadata extractors for deferred validation.
|
|
228
|
-
Each table is processed in a separate thread for maximum throughput.
|
|
229
|
-
"""
|
|
230
|
-
LOGGER.info("Starting asynchronous validation comparison")
|
|
231
|
-
|
|
140
|
+
"""Run the asynchronous validation comparison process using parallel execution."""
|
|
232
141
|
with self.db_manager:
|
|
233
142
|
self._execute_parallel_validation(ExecutionMode.ASYNC_VALIDATION)
|
|
234
|
-
self.progress_reporter.flush_validation_reports(
|
|
235
|
-
|
|
236
|
-
)
|
|
237
|
-
self.progress_reporter.log_row_validation_summary(self.context)
|
|
238
|
-
|
|
239
|
-
try:
|
|
240
|
-
self.progress_reporter.generate_execution_summary_report(
|
|
241
|
-
self.context, self.db_manager
|
|
242
|
-
)
|
|
243
|
-
except Exception as e:
|
|
244
|
-
LOGGER.warning("Failed to generate execution summary report: %s", e)
|
|
245
|
-
|
|
246
|
-
LOGGER.info("Asynchronous validation comparison completed")
|
|
143
|
+
self.progress_reporter.flush_validation_reports(self.context, self.db_manager)
|
|
144
|
+
self.progress_reporter.generate_execution_summary_report(self.context, self.db_manager)
|
|
247
145
|
|
|
248
|
-
@log
|
|
249
146
|
@report_telemetry()
|
|
250
147
|
def run_source_validation(self) -> None:
|
|
251
|
-
"""Execute validation queries on source only and save as Parquet files.
|
|
252
|
-
|
|
253
|
-
Extracts schema and metrics data from source tables without performing
|
|
254
|
-
any validation or comparison. Results are saved as Parquet files for
|
|
255
|
-
later validation without needing source database access.
|
|
256
|
-
"""
|
|
257
|
-
LOGGER.info("Starting source validation (data extraction)")
|
|
148
|
+
"""Execute validation queries on source only and save as Parquet files."""
|
|
258
149
|
self._execute_parallel_validation(ExecutionMode.SOURCE_VALIDATION)
|
|
259
|
-
LOGGER.info("Source validation completed - data saved as Parquet files")
|
|
260
150
|
|
|
261
|
-
@log(log_args=False)
|
|
262
151
|
def _get_validation_configuration(
|
|
263
152
|
self,
|
|
264
153
|
table: TableConfiguration,
|
|
265
154
|
default_configuration: ValidationConfiguration | None,
|
|
266
155
|
) -> ValidationConfiguration:
|
|
267
|
-
"""Get the validation configuration for a table.
|
|
268
|
-
|
|
269
|
-
Args:
|
|
270
|
-
table: Table configuration object
|
|
271
|
-
default_configuration: Default validation configuration
|
|
272
|
-
|
|
273
|
-
Returns:
|
|
274
|
-
ValidationConfiguration: The configuration to use for this table
|
|
275
|
-
|
|
276
|
-
"""
|
|
156
|
+
"""Get the validation configuration for a table."""
|
|
277
157
|
if table.validation_configuration:
|
|
278
|
-
LOGGER.debug(
|
|
279
|
-
"Using table-specific validation configuration for %s",
|
|
280
|
-
table.fully_qualified_name,
|
|
281
|
-
)
|
|
282
158
|
return table.validation_configuration
|
|
283
159
|
elif default_configuration:
|
|
284
|
-
LOGGER.debug(
|
|
285
|
-
"Using default validation configuration for %s",
|
|
286
|
-
table.fully_qualified_name,
|
|
287
|
-
)
|
|
288
160
|
return default_configuration
|
|
289
161
|
else:
|
|
290
|
-
LOGGER.debug(
|
|
291
|
-
"Using empty validation configuration for %s",
|
|
292
|
-
table.fully_qualified_name,
|
|
293
|
-
)
|
|
294
162
|
return ValidationConfiguration()
|
|
295
163
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
self, execution_mode: ExecutionMode, use_script_printer: bool = False
|
|
299
|
-
) -> None:
|
|
300
|
-
"""Execute validation using parallel threads with connection pool.
|
|
301
|
-
|
|
302
|
-
Args:
|
|
303
|
-
execution_mode: The execution mode to use
|
|
304
|
-
use_script_printer: Whether to use script printers instead of metadata extractors
|
|
305
|
-
|
|
306
|
-
"""
|
|
164
|
+
def _execute_parallel_validation(self, execution_mode: ExecutionMode, use_script_printer: bool = False) -> None:
|
|
165
|
+
"""Execute validation using parallel threads with connection pool."""
|
|
307
166
|
self.connection_pool_manager.initialize_pool()
|
|
308
167
|
|
|
309
|
-
|
|
310
|
-
"Executing parallel validation with execution_mode=%s, use_script_printer=%s",
|
|
311
|
-
execution_mode,
|
|
312
|
-
use_script_printer,
|
|
313
|
-
)
|
|
314
|
-
|
|
315
|
-
tables_to_validate = (
|
|
316
|
-
self.context.configuration.tables + self.context.configuration.views
|
|
317
|
-
)
|
|
168
|
+
tables_to_validate = self.context.configuration.tables + self.context.configuration.views
|
|
318
169
|
|
|
319
170
|
self.execution_engine.execute_parallel_validation(
|
|
320
171
|
tables=tables_to_validate,
|
|
@@ -329,9 +180,7 @@ class ComparisonOrchestrator:
|
|
|
329
180
|
column_selection_list=columns,
|
|
330
181
|
context=self.context,
|
|
331
182
|
),
|
|
332
|
-
validation_config_callback=lambda table, default_config: (
|
|
333
|
-
|
|
334
|
-
table=table, default_configuration=default_config
|
|
335
|
-
)
|
|
183
|
+
validation_config_callback=lambda table, default_config: self._get_validation_configuration(
|
|
184
|
+
table=table, default_configuration=default_config
|
|
336
185
|
),
|
|
337
186
|
)
|