snowflake-data-validation 1.3.2__tar.gz → 1.3.40__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.3.2 → snowflake_data_validation-1.3.40}/.gitignore +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/PKG-INFO +6 -4
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/README.md +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/pyproject.toml +4 -2
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/__init__.py +14 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/__version__.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +10 -5
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +255 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +84 -137
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +12 -6
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +23 -11
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +327 -180
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -98
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +7 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +326 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +137 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +162 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/__init__.py +218 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/_internal.py +228 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +32 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +105 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/context/__init__.py +28 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/data_validation_api.py +1468 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/enums/__init__.py +34 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/generators/__init__.py +28 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +32 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/model/__init__.py +40 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +60 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/model/generated_query.py +32 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +39 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +47 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/public/model/validation_result.py +37 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +15 -18
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +1 -19
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/redshift_cte_generator.py +3 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/redshift_cli.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +2 -2
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +1 -20
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/snowflake_cte_generator.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +11 -3
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +163 -56
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +1 -19
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/sqlserver_cte_generator.py +3 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +10 -10
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +34 -17
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_cli.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +1 -19
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/teradata_cte_generator.py +3 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/teradata_cli.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/constants.py +21 -0
- snowflake_data_validation-1.3.40/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +93 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +51 -99
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +3 -14
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +6 -15
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +2 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/integration/test_async_generation_integration.py +1 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -1
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Teradata/test_query_generator_teradata.py +1 -4
- snowflake_data_validation-1.3.40/tests/unit/test_cell_data_validator.py +121 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_configuration_loader.py +4 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_configuration_model.py +6 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_data_validator.py +30 -54
- snowflake_data_validation-1.3.40/tests/unit/test_escape_odbc_value.py +94 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_source_validation_executor.py +41 -36
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_sqlserver_multi_version_support.py +335 -40
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_table_configuration.py +3 -0
- snowflake_data_validation-1.3.40/tests/unit/test_table_metadata_processor.py +722 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_validation_configuration.py +5 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_view_configuration.py +3 -0
- snowflake_data_validation-1.3.2/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -166
- snowflake_data_validation-1.3.2/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -514
- snowflake_data_validation-1.3.2/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -59
- snowflake_data_validation-1.3.2/tests/unit/test_table_metadata_processor.py +0 -506
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/LICENSE +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/__main__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/common_cli/cli_partitioning.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/common_cli/cli_sync_validation.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/main_cli.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/orchestration/console_progress_reporter.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_columns_cte_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_insert_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_columns_cte_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_insert_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/snowflake/snowflake_cli.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_columns_cte_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_columns_cte_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_chunks_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/integration/test_async_validation_integration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/integration/test_source_validation_integration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/integration/test_sync_validation_integration.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/cli/test_redshift_cli_general.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/cli/test_redshift_cli_generate_validation_scripts.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/cli/test_redshift_cli_get_configuration_files.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/cli/test_redshift_cli_run_async_validation.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/cli/test_redshift_cli_run_validation.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/cli/test_redshift_cli_run_validation_ipc.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/test_redshift_cte_generator.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Redshift/test_redshift_metrics_templates.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Teradata/test_teradata_cli.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/Teradata/test_teradata_metrics_validation.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_connector_snowflake.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_console_progress_reporter.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_helper_dataframe.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_metrics_templates.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_row_data_validator.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_snowflake_cli.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_sqlserver_cli.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_table_context.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_telemetry.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.3.2 → snowflake_data_validation-1.3.40}/tests/unit/utils/test_constants.py +0 -0
|
@@ -104,7 +104,7 @@ ipython_config.py
|
|
|
104
104
|
# pyenv
|
|
105
105
|
# For a library or package, you might want to ignore these files since the code is
|
|
106
106
|
# intended to run in multiple environments; otherwise, check them in:
|
|
107
|
-
|
|
107
|
+
.python-version
|
|
108
108
|
|
|
109
109
|
# pipenv
|
|
110
110
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-data-validation
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.40
|
|
4
4
|
Summary: Snowflake Data Validation
|
|
5
|
-
Project-URL: Bug Tracker, https://github.com/
|
|
6
|
-
Project-URL: Source code, https://github.com/
|
|
5
|
+
Project-URL: Bug Tracker, https://github.com/snowflake-eng/migrations-data-validation/issues
|
|
6
|
+
Project-URL: Source code, https://github.com/snowflake-eng/migrations-data-validation/
|
|
7
7
|
Author-email: "Snowflake, Inc." <snowflake-python-libraries-dl@snowflake.com>
|
|
8
8
|
License: Snowflake Conversion Software Terms
|
|
9
9
|
License-File: LICENSE
|
|
@@ -30,9 +30,11 @@ Requires-Dist: cryptography>=3.4.0
|
|
|
30
30
|
Requires-Dist: deepdiff>=8.0.0
|
|
31
31
|
Requires-Dist: jinja2>=3.1.6
|
|
32
32
|
Requires-Dist: pandas>=2.2.3
|
|
33
|
+
Requires-Dist: polars>=1.0.0
|
|
33
34
|
Requires-Dist: pyarrow>=14.0.0
|
|
34
35
|
Requires-Dist: pydantic-yaml>=1.4.0
|
|
35
36
|
Requires-Dist: pydantic>=2.0
|
|
37
|
+
Requires-Dist: pyyaml>=6.0
|
|
36
38
|
Requires-Dist: ruamel-yaml>=0.18.0
|
|
37
39
|
Requires-Dist: snowflake-connector-python>=4.0.0
|
|
38
40
|
Requires-Dist: toml>=0.10.2
|
|
@@ -184,7 +186,7 @@ This project is licensed under the Snowflake Conversion Software Terms. See the
|
|
|
184
186
|
## 🆘 Support
|
|
185
187
|
|
|
186
188
|
- **Documentation**: [Full documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE)
|
|
187
|
-
- **Issues**: [GitHub Issues](https://github.com/
|
|
189
|
+
- **Issues**: [GitHub Issues](https://github.com/snowflake-eng/migrations-data-validation/issues)
|
|
188
190
|
|
|
189
191
|
---
|
|
190
192
|
|
|
@@ -110,7 +110,7 @@ This project is licensed under the Snowflake Conversion Software Terms. See the
|
|
|
110
110
|
## 🆘 Support
|
|
111
111
|
|
|
112
112
|
- **Documentation**: [Full documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE)
|
|
113
|
-
- **Issues**: [GitHub Issues](https://github.com/
|
|
113
|
+
- **Issues**: [GitHub Issues](https://github.com/snowflake-eng/migrations-data-validation/issues)
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
@@ -30,7 +30,9 @@ dependencies = [
|
|
|
30
30
|
"deepdiff>=8.0.0",
|
|
31
31
|
"snowflake-connector-python>=4.0.0",
|
|
32
32
|
"pandas>=2.2.3",
|
|
33
|
+
"polars>=1.0.0",
|
|
33
34
|
"pyarrow>=14.0.0",
|
|
35
|
+
"PyYAML>=6.0",
|
|
34
36
|
"ruamel.yaml>=0.18.0",
|
|
35
37
|
"toml>=0.10.2",
|
|
36
38
|
"jinja2>=3.1.6",
|
|
@@ -85,8 +87,8 @@ redshift = [
|
|
|
85
87
|
]
|
|
86
88
|
|
|
87
89
|
[project.urls]
|
|
88
|
-
"Bug Tracker" = "https://github.com/
|
|
89
|
-
"Source code" = "https://github.com/
|
|
90
|
+
"Bug Tracker" = "https://github.com/snowflake-eng/migrations-data-validation/issues"
|
|
91
|
+
"Source code" = "https://github.com/snowflake-eng/migrations-data-validation/"
|
|
90
92
|
|
|
91
93
|
[tool.hatch.version]
|
|
92
94
|
path = "src/snowflake/snowflake_data_validation/__version__.py"
|
|
@@ -34,6 +34,10 @@ Main Components
|
|
|
34
34
|
ComparisonOrchestrator
|
|
35
35
|
Main class for orchestrating data comparisons between source and target systems
|
|
36
36
|
|
|
37
|
+
public
|
|
38
|
+
Library API module providing decoupled validation steps (query generation,
|
|
39
|
+
execution, validation) that can be called independently
|
|
40
|
+
|
|
37
41
|
CLI Interface
|
|
38
42
|
Command-line interface available via `main_cli` module for:
|
|
39
43
|
- Setting up database connections
|
|
@@ -47,7 +51,7 @@ Supported Dialects
|
|
|
47
51
|
|
|
48
52
|
Example Usage
|
|
49
53
|
-------------
|
|
50
|
-
Programmatic API:
|
|
54
|
+
Programmatic API (Orchestrator):
|
|
51
55
|
>>> from snowflake.snowflake_data_validation import ComparisonOrchestrator
|
|
52
56
|
>>> # Set up extractors, context, and configuration
|
|
53
57
|
>>> orchestrator = ComparisonOrchestrator(
|
|
@@ -57,6 +61,13 @@ Programmatic API:
|
|
|
57
61
|
... )
|
|
58
62
|
>>> orchestrator.run_sync_comparison()
|
|
59
63
|
|
|
64
|
+
Programmatic API (Decoupled Steps):
|
|
65
|
+
>>> from snowflake.snowflake_data_validation import public
|
|
66
|
+
>>> # Generate and execute queries independently
|
|
67
|
+
>>> schema_query = public.generate_schema_query(table_context)
|
|
68
|
+
>>> result = public.execute_query(table_context, connector, schema_query)
|
|
69
|
+
>>> validation_result = public.validate_schema(source_df, target_df)
|
|
70
|
+
|
|
60
71
|
Command Line Interface:
|
|
61
72
|
|
|
62
73
|
.. code-block:: bash
|
|
@@ -86,6 +97,7 @@ import snowflake.snowflake_data_validation.utils as utils
|
|
|
86
97
|
import snowflake.snowflake_data_validation.snowflake as snowflake
|
|
87
98
|
import snowflake.snowflake_data_validation.sqlserver as sqlserver
|
|
88
99
|
import snowflake.snowflake_data_validation.redshift as redshift
|
|
100
|
+
import snowflake.snowflake_data_validation.public as public
|
|
89
101
|
import logging
|
|
90
102
|
|
|
91
103
|
|
|
@@ -105,6 +117,7 @@ __all__ = [
|
|
|
105
117
|
"snowflake",
|
|
106
118
|
"sqlserver",
|
|
107
119
|
"redshift",
|
|
120
|
+
"public",
|
|
108
121
|
]
|
|
109
122
|
|
|
110
123
|
|
|
@@ -19,16 +19,21 @@ from pydantic import BaseModel, model_validator
|
|
|
19
19
|
|
|
20
20
|
from snowflake.snowflake_data_validation.utils.constants import (
|
|
21
21
|
MAX_FAILED_ROWS_NUMBER_DEFAULT_VALUE,
|
|
22
|
+
RowValidationMode,
|
|
22
23
|
)
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class ValidationConfiguration(BaseModel):
|
|
26
|
-
"""Class representing the validation levels to be applied to a table.
|
|
27
|
+
"""Class representing the validation levels to be applied to a table.
|
|
28
|
+
|
|
29
|
+
`row_validation` enables/disables row-level validation.
|
|
30
|
+
`row_validation_mode` selects the mode: 'default', 'cell', or other supported modes.
|
|
31
|
+
"""
|
|
27
32
|
|
|
28
33
|
schema_validation: bool | None = False
|
|
29
34
|
metrics_validation: bool | None = False
|
|
30
|
-
row_validation: bool
|
|
31
|
-
|
|
35
|
+
row_validation: bool = False
|
|
36
|
+
row_validation_mode: RowValidationMode = RowValidationMode.ROW
|
|
32
37
|
custom_templates_path: Path | None = None
|
|
33
38
|
max_failed_rows_number: int = MAX_FAILED_ROWS_NUMBER_DEFAULT_VALUE
|
|
34
39
|
exclude_metrics: bool = False
|
|
@@ -38,10 +43,10 @@ class ValidationConfiguration(BaseModel):
|
|
|
38
43
|
def validate_configuration(self) -> "ValidationConfiguration":
|
|
39
44
|
"""Validate the configuration after initialization.
|
|
40
45
|
|
|
41
|
-
This method checks if at least one validation type is enabled.
|
|
46
|
+
This method checks if at least one validation type is enabled and validates row_validation_mode.
|
|
42
47
|
|
|
43
48
|
Raises:
|
|
44
|
-
ValueError: If no validation type is enabled.
|
|
49
|
+
ValueError: If no validation type is enabled or invalid mode is set.
|
|
45
50
|
|
|
46
51
|
"""
|
|
47
52
|
if not self.model_dump(exclude_none=True):
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Copyright 2026 Snowflake Inc.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
"""Asynchronous Query Generation Executor with decoupled workflow steps.
|
|
17
|
+
|
|
18
|
+
This module provides the AsyncGenerationExecutor class that generates async
|
|
19
|
+
comparison queries and writes them to files instead of executing actual validation.
|
|
20
|
+
|
|
21
|
+
The generation workflow follows the decoupled pattern using the public workflow API:
|
|
22
|
+
1. Query Generation - Uses data_validation_api.generate_schema_query / generate_metrics_query
|
|
23
|
+
2. Query Output - Write generated queries to files via public API functions
|
|
24
|
+
|
|
25
|
+
Note: This executor only performs query generation (Step 1) and writes the queries
|
|
26
|
+
to files. The execution and validation steps happen separately in async validation mode.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
import logging
|
|
30
|
+
|
|
31
|
+
from snowflake.snowflake_data_validation.executer.base_validation_executor import (
|
|
32
|
+
BaseValidationExecutor,
|
|
33
|
+
validation_handler,
|
|
34
|
+
)
|
|
35
|
+
from snowflake.snowflake_data_validation.public import (
|
|
36
|
+
data_validation_api,
|
|
37
|
+
)
|
|
38
|
+
from snowflake.snowflake_data_validation.utils.base_output_handler import (
|
|
39
|
+
OutputMessageLevel,
|
|
40
|
+
)
|
|
41
|
+
from snowflake.snowflake_data_validation.utils.logging_utils import log
|
|
42
|
+
from snowflake.snowflake_data_validation.utils.model.table_context import TableContext
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
LOGGER = logging.getLogger(__name__)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class AsyncGenerationExecutor(BaseValidationExecutor):
|
|
49
|
+
"""Executor for asynchronous query generation operations.
|
|
50
|
+
|
|
51
|
+
This executor generates async comparison queries and writes them to files
|
|
52
|
+
instead of executing actual validation. Uses script writers to delegate
|
|
53
|
+
the actual file generation and writing operations.
|
|
54
|
+
|
|
55
|
+
The workflow is decoupled to clearly separate query generation from
|
|
56
|
+
the file writing operation:
|
|
57
|
+
1. Generate queries for source and target platforms
|
|
58
|
+
2. Write queries to files using script writers
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
@validation_handler(
|
|
62
|
+
"Schema validation async generation failed.",
|
|
63
|
+
"Error generating schema validation queries: {error}",
|
|
64
|
+
)
|
|
65
|
+
@log
|
|
66
|
+
def execute_schema_validation(
|
|
67
|
+
self,
|
|
68
|
+
source_table_context: TableContext,
|
|
69
|
+
target_table_context: TableContext,
|
|
70
|
+
column_mappings: dict[str, str],
|
|
71
|
+
) -> bool:
|
|
72
|
+
"""Generate schema validation queries and write to files.
|
|
73
|
+
|
|
74
|
+
This method uses the decoupled workflow with public API:
|
|
75
|
+
1. Generate schema query for source using data_validation_api
|
|
76
|
+
2. Generate schema query for target using data_validation_api
|
|
77
|
+
3. Write both queries to files via public API functions
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
source_table_context: Source table context.
|
|
81
|
+
target_table_context: Target table context.
|
|
82
|
+
column_mappings: Mapping of source to target columns.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
bool: True if queries are successfully generated and written.
|
|
86
|
+
|
|
87
|
+
"""
|
|
88
|
+
LOGGER.info(
|
|
89
|
+
"Generating schema validation queries for table: %s",
|
|
90
|
+
source_table_context.fully_qualified_name,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
# Step 1: Generate queries using public API
|
|
95
|
+
source_query = data_validation_api.generate_schema_query(
|
|
96
|
+
source_table_context
|
|
97
|
+
)
|
|
98
|
+
target_query = data_validation_api.generate_schema_query(
|
|
99
|
+
target_table_context
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
LOGGER.debug(
|
|
103
|
+
"Generated schema queries for source: %s and target: %s",
|
|
104
|
+
source_table_context.fully_qualified_name,
|
|
105
|
+
target_table_context.fully_qualified_name,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
# Step 2: Write queries to files via public API
|
|
109
|
+
# Use report_path from extractors (ScriptWriterBase instances)
|
|
110
|
+
data_validation_api.write_schema_query_to_script(
|
|
111
|
+
table_context=source_table_context,
|
|
112
|
+
generated_query=source_query,
|
|
113
|
+
output_directory=self.source_extractor.report_path,
|
|
114
|
+
timestamp=self.context.run_start_time,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
data_validation_api.write_schema_query_to_script(
|
|
118
|
+
table_context=target_table_context,
|
|
119
|
+
generated_query=target_query,
|
|
120
|
+
output_directory=self.source_extractor.report_path,
|
|
121
|
+
timestamp=self.context.run_start_time,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
self.context.output_handler.handle_message(
|
|
125
|
+
header="Schema validation queries generated.",
|
|
126
|
+
message=f"Queries generated for table: {source_table_context.fully_qualified_name}",
|
|
127
|
+
level=OutputMessageLevel.SUCCESS,
|
|
128
|
+
)
|
|
129
|
+
return True
|
|
130
|
+
except Exception:
|
|
131
|
+
return False
|
|
132
|
+
|
|
133
|
+
@validation_handler(
|
|
134
|
+
"Metrics validation async generation failed.",
|
|
135
|
+
"Error generating metrics validation queries: {error}",
|
|
136
|
+
)
|
|
137
|
+
@log
|
|
138
|
+
def execute_metrics_validation(
|
|
139
|
+
self,
|
|
140
|
+
source_table_context: TableContext,
|
|
141
|
+
target_table_context: TableContext,
|
|
142
|
+
column_mappings: dict[str, str],
|
|
143
|
+
) -> bool:
|
|
144
|
+
"""Generate metrics validation queries and write to files.
|
|
145
|
+
|
|
146
|
+
This method uses the decoupled workflow with public API:
|
|
147
|
+
1. Generate metrics query for source using data_validation_api
|
|
148
|
+
2. Generate metrics query for target using data_validation_api
|
|
149
|
+
3. Write both queries to files via public API functions
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
source_table_context: Source table context.
|
|
153
|
+
target_table_context: Target table context.
|
|
154
|
+
column_mappings: Mapping of source to target columns.
|
|
155
|
+
|
|
156
|
+
Returns:
|
|
157
|
+
bool: True if queries are successfully generated and written.
|
|
158
|
+
|
|
159
|
+
"""
|
|
160
|
+
LOGGER.info(
|
|
161
|
+
"Generating metrics validation queries for table: %s",
|
|
162
|
+
source_table_context.fully_qualified_name,
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
try:
|
|
166
|
+
source_query = data_validation_api.generate_metrics_query(
|
|
167
|
+
source_table_context
|
|
168
|
+
)
|
|
169
|
+
target_query = data_validation_api.generate_metrics_query(
|
|
170
|
+
target_table_context
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
LOGGER.debug(
|
|
174
|
+
"Generated metrics queries for source: %s and target: %s",
|
|
175
|
+
source_table_context.fully_qualified_name,
|
|
176
|
+
target_table_context.fully_qualified_name,
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
data_validation_api.write_metrics_query_to_script(
|
|
180
|
+
table_context=source_table_context,
|
|
181
|
+
generated_query=source_query,
|
|
182
|
+
output_directory=self.source_extractor.report_path,
|
|
183
|
+
timestamp=self.context.run_start_time,
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
data_validation_api.write_metrics_query_to_script(
|
|
187
|
+
table_context=target_table_context,
|
|
188
|
+
generated_query=target_query,
|
|
189
|
+
output_directory=self.target_extractor.report_path,
|
|
190
|
+
timestamp=self.context.run_start_time,
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
self.context.output_handler.handle_message(
|
|
194
|
+
header="Metrics validation queries generated.",
|
|
195
|
+
message=f"Queries generated for table: {target_table_context.fully_qualified_name}",
|
|
196
|
+
level=OutputMessageLevel.SUCCESS,
|
|
197
|
+
)
|
|
198
|
+
return True
|
|
199
|
+
except Exception:
|
|
200
|
+
return False
|
|
201
|
+
|
|
202
|
+
@validation_handler(
|
|
203
|
+
"Row validation async generation failed.",
|
|
204
|
+
"Error in row validation async generation: {error}",
|
|
205
|
+
)
|
|
206
|
+
@log
|
|
207
|
+
def execute_row_validation(
|
|
208
|
+
self,
|
|
209
|
+
source_table_context: TableContext,
|
|
210
|
+
target_table_context: TableContext,
|
|
211
|
+
) -> bool:
|
|
212
|
+
"""Generate row validation queries (placeholder implementation).
|
|
213
|
+
|
|
214
|
+
Note: Row validation async generation is not yet implemented.
|
|
215
|
+
|
|
216
|
+
Args:
|
|
217
|
+
source_table_context: Source table context for validation.
|
|
218
|
+
target_table_context: Target table context for validation.
|
|
219
|
+
|
|
220
|
+
Returns:
|
|
221
|
+
bool: True (placeholder - always succeeds).
|
|
222
|
+
|
|
223
|
+
"""
|
|
224
|
+
LOGGER.info(
|
|
225
|
+
"Row validation async generation skipped for table: %s",
|
|
226
|
+
source_table_context.fully_qualified_name,
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
self.context.output_handler.handle_message(
|
|
230
|
+
header="Row validation async generation skipped.",
|
|
231
|
+
message="Row validation async generation is not yet implemented.",
|
|
232
|
+
level=OutputMessageLevel.INFO,
|
|
233
|
+
)
|
|
234
|
+
return True
|
|
235
|
+
|
|
236
|
+
def _get_schema_validation_message(self, table_configuration: TableContext) -> str:
|
|
237
|
+
"""Get async generation message for schema validation."""
|
|
238
|
+
return (
|
|
239
|
+
f"Generating async schema validation queries for {table_configuration.fully_qualified_name} "
|
|
240
|
+
f"with columns {table_configuration.column_selection_list}."
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
def _get_metrics_validation_message(self, table_configuration: TableContext) -> str:
|
|
244
|
+
"""Get async generation message for metrics validation."""
|
|
245
|
+
return (
|
|
246
|
+
f"Generating async metrics validation queries for {table_configuration.fully_qualified_name} "
|
|
247
|
+
f"with columns {table_configuration.column_selection_list}."
|
|
248
|
+
)
|
|
249
|
+
|
|
250
|
+
def _get_row_validation_message(self, table_configuration: TableContext) -> str:
|
|
251
|
+
"""Get async generation message for row validation."""
|
|
252
|
+
return (
|
|
253
|
+
f"Generating async row validation queries for {table_configuration.fully_qualified_name} "
|
|
254
|
+
f"with columns {table_configuration.column_selection_list}."
|
|
255
|
+
)
|