snowflake-data-validation 1.45.3__tar.gz → 1.46.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.45.3 → snowflake_data_validation-1.46.0}/PKG-INFO +29 -3
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/README.md +26 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/pyproject.toml +3 -3
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +4 -4
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +1 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +5 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +38 -9
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +6 -4
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +3 -20
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/normalization_render_context.py +15 -3
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +14 -16
- snowflake_data_validation-1.46.0/src/snowflake/snowflake_data_validation/query/tsql_float_bits.py +66 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +30 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +26 -28
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +1 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +10 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +38 -4
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +1 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +9 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +16 -8
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +3 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +4 -4
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +6 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +2 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/constants.py +28 -2
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +13 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +102 -19
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +17 -4
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +0 -3
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +8 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +54 -13
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +59 -4
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_table_metadata_float_precision.py +2 -2
- snowflake_data_validation-1.46.0/tests/unit/Teradata/test_teradata_table_metadata_object_type.py +93 -0
- snowflake_data_validation-1.46.0/tests/unit/Teradata/test_teradata_unicode_character_length.py +98 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +3 -3
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/query/test_normalization_render_context.py +12 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_physical_target.py +0 -2
- snowflake_data_validation-1.46.0/tests/unit/sqlserver/test_sqlserver_l1_character_maximum_length.py +87 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_row_queries.py +47 -2
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +1 -1
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cell_validation_query_generation.py +8 -8
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_data_validator.py +12 -6
- snowflake_data_validation-1.46.0/tests/unit/test_decfloat_l2_min_max.py +240 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_float_bit_canonical.py +38 -17
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_polars_cast.py +47 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_iceberg_dv_l3_normalization.py +92 -22
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_iso_dv_common.py +44 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_reshape.py +20 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_tolerance.py +33 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_pushdown_diff_sql.py +15 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_cell_level_validation.py +18 -0
- snowflake_data_validation-1.46.0/tests/unit/test_redshift_iceberg_timestamp_metrics.py +175 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_cell_level_validation.py +74 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_validator.py +42 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_templates_loader_manager.py +63 -1
- snowflake_data_validation-1.45.3/tests/unit/test_redshift_iceberg_timestamp_metrics.py +0 -94
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/.gitignore +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/LICENSE +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/docs/README.md +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_show_columns_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_iceberg_format_version.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_uniqueidentifier_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/interval_common.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/column_pairing.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/lossy_number_mapping.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/conftest.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_async_generation_integration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_async_validation_integration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_source_validation_integration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_sync_validation_integration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_collation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_enum_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_collation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_columns_metadata_template.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_spatial_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_split_schema_query.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_super_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_query_generator_teradata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_collation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_columns_metadata_precision_scale.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_spatial_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_bigquery_spatial_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_query_generator_bigquery.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/conftest.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_query_generator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_registration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_xml_long_metrics.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_query_generator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_query_modifiers.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/query/test_time_fraction_rendering.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/snowflake/test_snowflake_get_case_sensitive_columns.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/snowflake/test_snowflake_get_iceberg_format_version.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_json.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_l1_character_length.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_uniqueidentifier_l3_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_accepted_transformation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_batched_metrics_queries.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_case_sensitive_column_pairing.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_catalog_column_size.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cell_data_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cell_data_validator_threading.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_grouping.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_normalization_override.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_selection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_selection_actual_names.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_comparison_codec.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_loader.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_model.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_connector_snowflake.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_custom_templates_models.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_decimal_text_canonical.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_dv_tracing.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_error_classifier.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_escape_odbc_value.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_extraction_keeps_catalog_column_spelling.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_fetch_schema_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_float_aggregate_reduction.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_float_canonical_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_get_configuration_file.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_get_target_cols.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_dataframe.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_io.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_polars_cast_threading.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_iceberg_v2_metrics_exclusion.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_index_key_format.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_internal_helpers.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_interval_common.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_l2_collation_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_l2_count_distinct_opt_in_config.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_lossy_number_mapping.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metric_identifier_rendering.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_templates_casts.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_normalize_shape_aware.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_object_type_criterion.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_period_common.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_platform_bridge.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_postgresql_normalization_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_generator_numeric_scale.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_metrics_level_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_to_dataframe.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_qvci_fallback_triggers.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_redshift_native_timestamptz_ltz.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_to_dataframe.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_count_bigint_overflow.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_data_validator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_data_validator_empty_chunk.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_hash_column_delimiter.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_schema_accepted_native_datatypes.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_schema_column_selection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_schema_query_capability.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_signature_external_table.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_signature_row_md5_query.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_source_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_spatial_wkt_canonicalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sql_catalog_template_guard.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sql_literal_jinja_filter.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sync_executor_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sync_schema_validation_real_callbacks.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sync_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_configuration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_context.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_target_platform_factory.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_telemetry.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_iso_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_string_rtrim_policy.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_type_code_mapping.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_timestamp_golden_vectors.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_trace_bridge.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_tsql_float_l2_aggregates.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_configuration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_report_status.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_templates_dto.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_vector_bit_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_vector_common.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_vector_normalization.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_view_configuration.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_warm_start.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/utils/test_constants.py +0 -0
- {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/utils/test_semi_structured_json_canonicalization.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: snowflake-data-validation
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.46.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/
|
|
@@ -38,7 +38,7 @@ Requires-Dist: pydantic-yaml>=1.4.0
|
|
|
38
38
|
Requires-Dist: pydantic>=2.0
|
|
39
39
|
Requires-Dist: pyyaml>=6.0
|
|
40
40
|
Requires-Dist: ruamel-yaml>=0.18.0
|
|
41
|
-
Requires-Dist: snowflake-connector-python<5,>=4.7.
|
|
41
|
+
Requires-Dist: snowflake-connector-python<5,>=4.7.3
|
|
42
42
|
Requires-Dist: toml>=0.10.2
|
|
43
43
|
Requires-Dist: typer>=0.15.3
|
|
44
44
|
Requires-Dist: typing-extensions>=4.13.2
|
|
@@ -79,7 +79,7 @@ Requires-Dist: psycopg[binary]>=3.2.0; extra == 'postgresql'
|
|
|
79
79
|
Provides-Extra: redshift
|
|
80
80
|
Requires-Dist: redshift-connector>=2.1.14; extra == 'redshift'
|
|
81
81
|
Provides-Extra: scai
|
|
82
|
-
Requires-Dist: snowflake-code-unit-registry>=0.9.
|
|
82
|
+
Requires-Dist: snowflake-code-unit-registry>=0.9.7; extra == 'scai'
|
|
83
83
|
Provides-Extra: sqlite
|
|
84
84
|
Requires-Dist: sqlean-py>=3.45.0; extra == 'sqlite'
|
|
85
85
|
Provides-Extra: sqlserver
|
|
@@ -230,6 +230,32 @@ For configuration options and examples, see the [official documentation](https:/
|
|
|
230
230
|
|
|
231
231
|
## Changelog
|
|
232
232
|
|
|
233
|
+
### v1.46.0
|
|
234
|
+
|
|
235
|
+
**Bug fixes**
|
|
236
|
+
|
|
237
|
+
- Fixed L2 `DECFLOAT` `MIN` and `MAX` being compared as `FLOAT`, which let differences past about 16 significant digits pass.
|
|
238
|
+
- Fixed high-precision decimals being rounded twice when cast to `Float64`, so identical values failed by one unit in the last place.
|
|
239
|
+
- Fixed SQL Server `FLOAT` and `REAL` row validation using `TRIM()`, which SQL Server 2016 does not support.
|
|
240
|
+
- Fixed result-set comparison failing for column names that contain a double quote.
|
|
241
|
+
- Fixed SQL Server row validation of wide tables failing with "expression services limit has been reached".
|
|
242
|
+
- Fixed L2 validation of an empty source and empty target table not being reported as valid.
|
|
243
|
+
- Fixed direct row validation failing tables whose rows are full duplicates when the row drill-down finds no differences.
|
|
244
|
+
- Fixed SQL Server Iceberg L3 validation reporting mismatches between 9-digit source and 6-digit target fractional seconds.
|
|
245
|
+
- Fixed Teradata object-type mapping: tables with no primary index are now validated as tables, and triggers are no longer mapped as tables.
|
|
246
|
+
- Fixed schema validation failing for SQL Server `image` columns.
|
|
247
|
+
|
|
248
|
+
### v1.45.4
|
|
249
|
+
|
|
250
|
+
**Improvements**
|
|
251
|
+
|
|
252
|
+
- Improved Iceberg validation to read the table format version from the Snowflake catalog once before validation starts, so every validation level uses the actual format version.
|
|
253
|
+
|
|
254
|
+
**Bug fixes**
|
|
255
|
+
|
|
256
|
+
- Fixed Redshift Iceberg metrics validation comparing signed-year `DATE` and `TIMESTAMPTZ` values.
|
|
257
|
+
- Fixed Teradata `UNICODE` `CHAR`, `VARCHAR`, and `CLOB` column lengths being reported in bytes, which raised false truncation warnings.
|
|
258
|
+
|
|
233
259
|
### v1.45.3
|
|
234
260
|
|
|
235
261
|
**Bug fixes**
|
|
@@ -139,6 +139,32 @@ For configuration options and examples, see the [official documentation](https:/
|
|
|
139
139
|
|
|
140
140
|
## Changelog
|
|
141
141
|
|
|
142
|
+
### v1.46.0
|
|
143
|
+
|
|
144
|
+
**Bug fixes**
|
|
145
|
+
|
|
146
|
+
- Fixed L2 `DECFLOAT` `MIN` and `MAX` being compared as `FLOAT`, which let differences past about 16 significant digits pass.
|
|
147
|
+
- Fixed high-precision decimals being rounded twice when cast to `Float64`, so identical values failed by one unit in the last place.
|
|
148
|
+
- Fixed SQL Server `FLOAT` and `REAL` row validation using `TRIM()`, which SQL Server 2016 does not support.
|
|
149
|
+
- Fixed result-set comparison failing for column names that contain a double quote.
|
|
150
|
+
- Fixed SQL Server row validation of wide tables failing with "expression services limit has been reached".
|
|
151
|
+
- Fixed L2 validation of an empty source and empty target table not being reported as valid.
|
|
152
|
+
- Fixed direct row validation failing tables whose rows are full duplicates when the row drill-down finds no differences.
|
|
153
|
+
- Fixed SQL Server Iceberg L3 validation reporting mismatches between 9-digit source and 6-digit target fractional seconds.
|
|
154
|
+
- Fixed Teradata object-type mapping: tables with no primary index are now validated as tables, and triggers are no longer mapped as tables.
|
|
155
|
+
- Fixed schema validation failing for SQL Server `image` columns.
|
|
156
|
+
|
|
157
|
+
### v1.45.4
|
|
158
|
+
|
|
159
|
+
**Improvements**
|
|
160
|
+
|
|
161
|
+
- Improved Iceberg validation to read the table format version from the Snowflake catalog once before validation starts, so every validation level uses the actual format version.
|
|
162
|
+
|
|
163
|
+
**Bug fixes**
|
|
164
|
+
|
|
165
|
+
- Fixed Redshift Iceberg metrics validation comparing signed-year `DATE` and `TIMESTAMPTZ` values.
|
|
166
|
+
- Fixed Teradata `UNICODE` `CHAR`, `VARCHAR`, and `CLOB` column lengths being reported in bytes, which raised false truncation warnings.
|
|
167
|
+
|
|
142
168
|
### v1.45.3
|
|
143
169
|
|
|
144
170
|
**Bug fixes**
|
|
@@ -5,7 +5,7 @@ requires = ["hatchling"]
|
|
|
5
5
|
[tool.uv]
|
|
6
6
|
constraint-dependencies = [
|
|
7
7
|
"certifi>=2026.10.23,<2026.11",
|
|
8
|
-
"virtualenv>=21.
|
|
8
|
+
"virtualenv>=21.14.9,<21.15",
|
|
9
9
|
]
|
|
10
10
|
|
|
11
11
|
[project]
|
|
@@ -36,7 +36,7 @@ dependencies = [
|
|
|
36
36
|
"connectorx>=0.3.0",
|
|
37
37
|
"cryptography>=50.0.0",
|
|
38
38
|
"deepdiff>=8.0.0",
|
|
39
|
-
"snowflake-connector-python>=4.7.
|
|
39
|
+
"snowflake-connector-python>=4.7.3,<5",
|
|
40
40
|
"pandas>=2.2.3",
|
|
41
41
|
"polars>=1.0.0",
|
|
42
42
|
"pyarrow>=14.0.0",
|
|
@@ -106,7 +106,7 @@ db2 = [
|
|
|
106
106
|
# musllinux build, and SDV is published to public PyPI. Inside DMO/DEA the
|
|
107
107
|
# dependency is already declared, so SDV's logger tree is covered there.
|
|
108
108
|
scai = [
|
|
109
|
-
"snowflake-code-unit-registry>=0.9.
|
|
109
|
+
"snowflake-code-unit-registry>=0.9.7",
|
|
110
110
|
]
|
|
111
111
|
|
|
112
112
|
[project.urls]
|
|
@@ -34,9 +34,6 @@ from typing import TYPE_CHECKING
|
|
|
34
34
|
|
|
35
35
|
from shared.identifiers.managers import identifier_manager
|
|
36
36
|
from shared.identifiers.sql_identifier import SqlIdentifier
|
|
37
|
-
from snowflake.snowflake_data_validation.query.float_bit_normalization import (
|
|
38
|
-
build_binary64_canonical_expr,
|
|
39
|
-
)
|
|
40
37
|
from snowflake.snowflake_data_validation.query.numeric_scale_resolution import (
|
|
41
38
|
float_bit_input_expr,
|
|
42
39
|
)
|
|
@@ -44,6 +41,9 @@ from snowflake.snowflake_data_validation.query.query_generator_base import (
|
|
|
44
41
|
QueryGeneratorBase,
|
|
45
42
|
resolve_table_context_modifiers,
|
|
46
43
|
)
|
|
44
|
+
from snowflake.snowflake_data_validation.query.tsql_float_bits import (
|
|
45
|
+
build_tsql_float_bit_canonical_expr,
|
|
46
|
+
)
|
|
47
47
|
from snowflake.snowflake_data_validation.query.tsql_float_remainder import (
|
|
48
48
|
TsqlFloatMetricModifierMixin,
|
|
49
49
|
)
|
|
@@ -77,7 +77,7 @@ LOGGER = logging.getLogger(__name__)
|
|
|
77
77
|
|
|
78
78
|
def build_azure_synapse_float_bit_canonical_expr(col_ref: str) -> str:
|
|
79
79
|
"""Return the exact binary64 tuple used for Azure Synapse float validation."""
|
|
80
|
-
return
|
|
80
|
+
return build_tsql_float_bit_canonical_expr(col_ref)
|
|
81
81
|
|
|
82
82
|
|
|
83
83
|
class QueryGeneratorAzureSynapse(TsqlFloatMetricModifierMixin, QueryGeneratorBase):
|
|
@@ -157,7 +157,7 @@ class QueryGeneratorBigQuery(QueryGeneratorBase):
|
|
|
157
157
|
normalized = normalized[:index]
|
|
158
158
|
return normalized.strip()
|
|
159
159
|
|
|
160
|
-
def _resolve_metrics_col_type(self, col, table_context: TableContext) -> str:
|
|
160
|
+
def _resolve_metrics_col_type(self, col: ColumnMetadata, table_context: TableContext) -> str:
|
|
161
161
|
"""Key the metrics YAML lookup off the parameterless base type."""
|
|
162
162
|
return self.normalize_bigquery_type(col.data_type)
|
|
163
163
|
|
|
@@ -338,13 +338,18 @@ DOUBLE PRECISION:
|
|
|
338
338
|
metric_return_datatype: FLOAT
|
|
339
339
|
metric_column_modifier: ' - 2097143 * (CAST("{{ col_name }}" AS DECIMAL(31,0)) / 2097143)'
|
|
340
340
|
|
|
341
|
+
# min/max are emitted as exact canonical decimal text (``{{ decfloat_shim }}``
|
|
342
|
+
# over the aggregate), matching Snowflake DECFLOAT's: binary64 keeps only ~16
|
|
343
|
+
# of DECFLOAT's 34 digits.
|
|
341
344
|
DECFLOAT:
|
|
342
345
|
min:
|
|
343
346
|
metric_query: MIN("{{ col_name }}")
|
|
344
347
|
metric_return_datatype: FLOAT
|
|
348
|
+
metric_normalization: "{{ decfloat_shim }}"
|
|
345
349
|
max:
|
|
346
350
|
metric_query: MAX("{{ col_name }}")
|
|
347
351
|
metric_return_datatype: FLOAT
|
|
352
|
+
metric_normalization: "{{ decfloat_shim }}"
|
|
348
353
|
count_distinct:
|
|
349
354
|
metric_query: COUNT(DISTINCT "{{ col_name }}")
|
|
350
355
|
metric_return_datatype: INTEGER
|
|
@@ -28,6 +28,7 @@ below give DB2 its own DB2-valid rendering that still matches Snowflake
|
|
|
28
28
|
from pathlib import Path
|
|
29
29
|
|
|
30
30
|
import jinja2
|
|
31
|
+
import pandas as pd
|
|
31
32
|
|
|
32
33
|
from shared.datatypes.common import CommonType
|
|
33
34
|
from shared.datatypes.db2 import Db2Type
|
|
@@ -49,6 +50,8 @@ from snowflake.snowflake_data_validation.query.query_generator_base import (
|
|
|
49
50
|
)
|
|
50
51
|
from snowflake.snowflake_data_validation.query.sql_type_families import SNOWFLAKE_FLOAT_TYPE_NAMES
|
|
51
52
|
from snowflake.snowflake_data_validation.utils.constants import (
|
|
53
|
+
DECFLOAT_SHIM_PLACEHOLDER,
|
|
54
|
+
METRIC_QUERY_PLACEHOLDER,
|
|
52
55
|
NULL_HASHING_SENTINEL,
|
|
53
56
|
NULL_HASHING_SENTINEL_KEY,
|
|
54
57
|
ROW_HASH_COLUMN_DELIMITER,
|
|
@@ -59,6 +62,7 @@ from snowflake.snowflake_data_validation.utils.iso_dv_common import (
|
|
|
59
62
|
get_paired_target_column_types,
|
|
60
63
|
normalize_snowflake_base_type,
|
|
61
64
|
)
|
|
65
|
+
from snowflake.snowflake_data_validation.utils.model.column_metadata import ColumnMetadata
|
|
62
66
|
from snowflake.snowflake_data_validation.utils.model.table_context import TableContext
|
|
63
67
|
|
|
64
68
|
|
|
@@ -66,6 +70,9 @@ from snowflake.snowflake_data_validation.utils.model.table_context import TableC
|
|
|
66
70
|
# leading zero for |v| < 1 (matching Snowflake TO_VARCHAR).
|
|
67
71
|
_DB2_INTEGER_NINES = 31
|
|
68
72
|
|
|
73
|
+
# MIN/MAX of a DECFLOAT mirrored as a Snowflake FLOAT, in place of its exact text.
|
|
74
|
+
DB2_DECFLOAT_AS_FLOAT_METRIC_NORMALIZATION = f"CAST({METRIC_QUERY_PLACEHOLDER} AS DOUBLE)"
|
|
75
|
+
|
|
69
76
|
|
|
70
77
|
def build_db2_float_bit_canonical_expr(col_ref: str) -> str:
|
|
71
78
|
"""Return the exact binary64 tuple used for DB2 float validation.
|
|
@@ -153,21 +160,43 @@ class QueryGeneratorDb2(QueryGeneratorOracle):
|
|
|
153
160
|
datatypes_normalization_templates: dict[str, str],
|
|
154
161
|
table_context: TableContext,
|
|
155
162
|
) -> str:
|
|
156
|
-
"""Hash a DECFLOAT mirrored as a Snowflake FLOAT as binary64, as that target does.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
holds ~16 digits, so the exact decimal text could never match it.
|
|
160
|
-
"""
|
|
161
|
-
if self._parse_type_precision_scale(column.data_type or "")[0] == Db2Type.DECFLOAT:
|
|
162
|
-
target_type = get_paired_target_column_types(table_context).get(column.name)
|
|
163
|
-
if isinstance(target_type, str) and normalize_snowflake_base_type(target_type) in SNOWFLAKE_FLOAT_TYPE_NAMES:
|
|
164
|
-
return datatypes_normalization_templates[CommonType.FLOAT]
|
|
163
|
+
"""Hash a DECFLOAT mirrored as a Snowflake FLOAT as binary64, as that target does."""
|
|
164
|
+
if self._decfloat_lands_in_float(column, table_context):
|
|
165
|
+
return datatypes_normalization_templates[CommonType.FLOAT]
|
|
165
166
|
return super()._resolve_datatype_normalization_template(
|
|
166
167
|
column,
|
|
167
168
|
datatypes_normalization_templates,
|
|
168
169
|
table_context,
|
|
169
170
|
)
|
|
170
171
|
|
|
172
|
+
def _resolve_metric_normalization(
|
|
173
|
+
self,
|
|
174
|
+
col: ColumnMetadata,
|
|
175
|
+
metric_name: str,
|
|
176
|
+
row: pd.Series,
|
|
177
|
+
table_context: TableContext,
|
|
178
|
+
) -> str | None:
|
|
179
|
+
"""Measure a DECFLOAT mirrored as a Snowflake FLOAT in binary64, as that target does.
|
|
180
|
+
|
|
181
|
+
Only the stock exact-text MIN/MAX is swapped, so the DECFLOAT row's custom
|
|
182
|
+
removals and queries still apply.
|
|
183
|
+
"""
|
|
184
|
+
normalization = super()._resolve_metric_normalization(col, metric_name, row, table_context)
|
|
185
|
+
if normalization and DECFLOAT_SHIM_PLACEHOLDER in normalization and self._decfloat_lands_in_float(col, table_context):
|
|
186
|
+
return DB2_DECFLOAT_AS_FLOAT_METRIC_NORMALIZATION
|
|
187
|
+
return normalization
|
|
188
|
+
|
|
189
|
+
def _decfloat_lands_in_float(self, column: ColumnMetadata, table_context: TableContext) -> bool:
|
|
190
|
+
"""Return True for a DECFLOAT column whose Snowflake mirror is FLOAT.
|
|
191
|
+
|
|
192
|
+
DMO creates DECFLOAT; only a user-mapped target lands on FLOAT, and it
|
|
193
|
+
holds ~16 digits, so the exact decimal text could never match it.
|
|
194
|
+
"""
|
|
195
|
+
if self._parse_type_precision_scale(column.data_type or "")[0] != Db2Type.DECFLOAT:
|
|
196
|
+
return False
|
|
197
|
+
target_type = get_paired_target_column_types(table_context).get(column.name)
|
|
198
|
+
return isinstance(target_type, str) and normalize_snowflake_base_type(target_type) in SNOWFLAKE_FLOAT_TYPE_NAMES
|
|
199
|
+
|
|
171
200
|
# ------------------------------------------------------------------
|
|
172
201
|
# text_comparison_mode: apply the per-column text codec (raw/logical)
|
|
173
202
|
#
|
|
@@ -45,8 +45,8 @@ def _to_str(value: object) -> object:
|
|
|
45
45
|
into a plain ``str``. This guarantees the long-format DataFrame
|
|
46
46
|
contains only strings and ``pd.NA`` — no mixed native types that
|
|
47
47
|
would break ``sort_values`` inside ``normalize_dataframe``.
|
|
48
|
-
``MetricsDataValidator``
|
|
49
|
-
|
|
48
|
+
``MetricsDataValidator`` parses numeric text for its tolerance checks,
|
|
49
|
+
exactly when both sides are exact, so string values work correctly.
|
|
50
50
|
"""
|
|
51
51
|
if value is None:
|
|
52
52
|
return None
|
|
@@ -114,8 +114,10 @@ def reshape_wide_metrics_result(
|
|
|
114
114
|
|
|
115
115
|
# Single row is guaranteed by the wide-SELECT contract. If a driver
|
|
116
116
|
# ever returns more rows (e.g. GROUP BY accident) we use the first.
|
|
117
|
-
#
|
|
118
|
-
|
|
117
|
+
# Each cell is read as its own column's value: a row of only numeric
|
|
118
|
+
# dtypes would otherwise be upcast to float64 as a whole, rounding an
|
|
119
|
+
# integer MIN/MAX past 2**53 that the comparator measures exactly.
|
|
120
|
+
row_values = wide_df.iloc[:1].astype(object).iloc[0].tolist()
|
|
119
121
|
|
|
120
122
|
rows_by_col: dict[str, dict[str, object]] = {
|
|
121
123
|
col_name: {m: pd.NA for m in metric_columns} for col_name in ordered_col_names
|
|
@@ -80,23 +80,9 @@ SNOWFLAKE_BINARY64_SQL = Binary64SqlDialect(
|
|
|
80
80
|
neg_inf_literals=("-inf", "-infinity"),
|
|
81
81
|
)
|
|
82
82
|
|
|
83
|
-
# SQL Server
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
# LOG(0) raises divide-by-zero even inside CASE; NULLIF the abs input.
|
|
87
|
-
# CAST(... AS VARCHAR) is VARCHAR(30), which is enough for these integers.
|
|
88
|
-
SQLSERVER_BINARY64_SQL = Binary64SqlDialect(
|
|
89
|
-
log2="LOG(NULLIF({abs}, 0)) / LOG(CONVERT(FLOAT, 2))",
|
|
90
|
-
power2="POWER(CONVERT(FLOAT, 2), {exp})",
|
|
91
|
-
integer_type="BIGINT",
|
|
92
|
-
string_type="VARCHAR(50)",
|
|
93
|
-
concat="concat",
|
|
94
|
-
use_least_greatest=False,
|
|
95
|
-
text_value="LOWER(LTRIM(RTRIM(CONVERT(VARCHAR(50), {value}, 2))))",
|
|
96
|
-
nan_literals=("nan",),
|
|
97
|
-
pos_inf_literals=("inf", "infinity"),
|
|
98
|
-
neg_inf_literals=("-inf", "-infinity"),
|
|
99
|
-
)
|
|
83
|
+
# SQL Server and Azure Synapse read the tuple from the stored bits instead
|
|
84
|
+
# (``tsql_float_bits``): the LOG/POWER search below repeats the column about a
|
|
85
|
+
# hundred times, and T-SQL row hashes compile into one size-limited expression.
|
|
100
86
|
|
|
101
87
|
# Redshift and PostgreSQL can share Snowflake's spelling
|
|
102
88
|
# (LN / POWER / BIGINT / ||).
|
|
@@ -196,9 +182,6 @@ BINARY64_SQL_BY_DIALECT: dict[str, Binary64SqlDialect] = {
|
|
|
196
182
|
"snowflake": SNOWFLAKE_BINARY64_SQL,
|
|
197
183
|
"redshift": SNOWFLAKE_BINARY64_SQL,
|
|
198
184
|
"postgresql": SNOWFLAKE_BINARY64_SQL,
|
|
199
|
-
"sqlserver": SQLSERVER_BINARY64_SQL,
|
|
200
|
-
# Dedicated SQL pool is T-SQL: same LOG/POWER(FLOAT) spelling as SQL Server.
|
|
201
|
-
"azure_synapse": SQLSERVER_BINARY64_SQL,
|
|
202
185
|
"oracle": ORACLE_BINARY64_SQL,
|
|
203
186
|
"sqlite": SQLITE_BINARY64_SQL,
|
|
204
187
|
"db2": DB2_BINARY64_SQL,
|
|
@@ -26,11 +26,23 @@ class NormalizationRenderContext:
|
|
|
26
26
|
has_custom_normalization: bool = False
|
|
27
27
|
|
|
28
28
|
@classmethod
|
|
29
|
-
def from_table_context(
|
|
30
|
-
|
|
29
|
+
def from_table_context(
|
|
30
|
+
cls,
|
|
31
|
+
table_context: TableContext,
|
|
32
|
+
*,
|
|
33
|
+
source_timestamp_fraction_digits: int | None = None,
|
|
34
|
+
) -> NormalizationRenderContext:
|
|
35
|
+
"""Resolve the per-table inputs; ``for_column`` adds the per-column paired type.
|
|
36
|
+
|
|
37
|
+
``source_timestamp_fraction_digits`` is the paired source's fixed timestamp
|
|
38
|
+
text width; it replaces the Iceberg spec's digits when given.
|
|
39
|
+
"""
|
|
40
|
+
fraction_digits = source_timestamp_fraction_digits
|
|
41
|
+
if fraction_digits is None:
|
|
42
|
+
fraction_digits = IcebergProfile.from_table_context(table_context).fraction_digits
|
|
31
43
|
return cls(
|
|
32
44
|
paired_source_platform=table_context.paired_source_platform,
|
|
33
|
-
iceberg_fraction_digits=
|
|
45
|
+
iceberg_fraction_digits=fraction_digits,
|
|
34
46
|
)
|
|
35
47
|
|
|
36
48
|
def for_column(
|
|
@@ -182,12 +182,15 @@ class QueryGeneratorBase(ABC):
|
|
|
182
182
|
f"DECFLOAT normalization is not supported for platform {self.platform.value!r}",
|
|
183
183
|
)
|
|
184
184
|
|
|
185
|
-
def _expand_decfloat_placeholder(self, template: str, column) -> str:
|
|
186
|
-
"""Replace ``{{ decfloat_shim }}`` when present."""
|
|
185
|
+
def _expand_decfloat_placeholder(self, template: str, column, col_ref: str | None = None) -> str:
|
|
186
|
+
"""Replace ``{{ decfloat_shim }}`` when present, over *col_ref* (default: the column itself)."""
|
|
187
187
|
if DECFLOAT_SHIM_PLACEHOLDER not in template:
|
|
188
188
|
return template
|
|
189
189
|
try:
|
|
190
|
-
shim = self.build_decfloat_shim(
|
|
190
|
+
shim = self.build_decfloat_shim(
|
|
191
|
+
column,
|
|
192
|
+
col_ref if col_ref is not None else self._float_column_reference(column),
|
|
193
|
+
)
|
|
191
194
|
except NotImplementedError as exc:
|
|
192
195
|
raise ValueError(
|
|
193
196
|
f"{{ decfloat_shim }} is not supported for platform {self.platform.value!r}",
|
|
@@ -225,7 +228,7 @@ class QueryGeneratorBase(ABC):
|
|
|
225
228
|
|
|
226
229
|
The shipped templates spell the column ``"{{ col_name }}"``; custom ones may
|
|
227
230
|
use a bare ``{{ col_name }}``. Dialects whose writer delimits the name itself
|
|
228
|
-
(Snowflake, SQL Server, Synapse) render either as one complete identifier.
|
|
231
|
+
(Snowflake, SQL Server, Synapse, result set) render either as one complete identifier.
|
|
229
232
|
"""
|
|
230
233
|
written = self._write_sql_identifier(identifier)
|
|
231
234
|
rendered = template.replace(self._quoted_metric_identifier_placeholder(), written)
|
|
@@ -394,8 +397,7 @@ class QueryGeneratorBase(ABC):
|
|
|
394
397
|
override this. Combined generators leave the base raise in place.
|
|
395
398
|
"""
|
|
396
399
|
raise NotImplementedError(
|
|
397
|
-
f"{self.platform.value} uses a combined schema query; "
|
|
398
|
-
"call generate_schema_query instead of generate_schema_row_count_query"
|
|
400
|
+
f"{self.platform.value} uses a combined schema query; call generate_schema_query instead of generate_schema_row_count_query"
|
|
399
401
|
)
|
|
400
402
|
|
|
401
403
|
def generate_schema_details_query(self, table_context: TableContext) -> str:
|
|
@@ -405,8 +407,7 @@ class QueryGeneratorBase(ABC):
|
|
|
405
407
|
override this. Combined generators leave the base raise in place.
|
|
406
408
|
"""
|
|
407
409
|
raise NotImplementedError(
|
|
408
|
-
f"{self.platform.value} uses a combined schema query; "
|
|
409
|
-
"call generate_schema_query instead of generate_schema_details_query"
|
|
410
|
+
f"{self.platform.value} uses a combined schema query; call generate_schema_query instead of generate_schema_details_query"
|
|
410
411
|
)
|
|
411
412
|
|
|
412
413
|
def normalize_schema_details_result(
|
|
@@ -420,10 +421,7 @@ class QueryGeneratorBase(ABC):
|
|
|
420
421
|
as a combined schema query (without ``ROW_COUNT``; the fetch helper
|
|
421
422
|
attaches that). Combined generators leave the base raise in place.
|
|
422
423
|
"""
|
|
423
|
-
raise NotImplementedError(
|
|
424
|
-
f"{self.platform.value} uses a combined schema query; "
|
|
425
|
-
"normalize_schema_details_result is not used"
|
|
426
|
-
)
|
|
424
|
+
raise NotImplementedError(f"{self.platform.value} uses a combined schema query; normalize_schema_details_result is not used")
|
|
427
425
|
|
|
428
426
|
def generate_metrics_query(self, table_context: TableContext) -> GeneratedMetricsQuery:
|
|
429
427
|
"""Generate a single wide metrics SELECT for a table.
|
|
@@ -645,7 +643,7 @@ class QueryGeneratorBase(ABC):
|
|
|
645
643
|
return numeric_norm
|
|
646
644
|
return None
|
|
647
645
|
|
|
648
|
-
def _resolve_metrics_col_type(self, col, table_context: TableContext) -> str:
|
|
646
|
+
def _resolve_metrics_col_type(self, col: ColumnMetadata, table_context: TableContext) -> str:
|
|
649
647
|
"""Return the metrics YAML type key for a column (platforms may override)."""
|
|
650
648
|
from snowflake.snowflake_data_validation.utils.vector_common import is_vector_base_type
|
|
651
649
|
|
|
@@ -952,13 +950,13 @@ class QueryGeneratorBase(ABC):
|
|
|
952
950
|
if normalization is None and row.get(EXPLICIT_METRIC_NORMALIZATION_COLUMN_KEY):
|
|
953
951
|
normalization = row[NORMALIZATION_COLUMN_KEY]
|
|
954
952
|
if pd.notna(normalization) and normalization:
|
|
953
|
+
# A DECFLOAT aggregate keeps every digit as canonical text over the aggregate.
|
|
954
|
+
normalization = self._expand_decfloat_placeholder(normalization, col, METRIC_QUERY_PLACEHOLDER)
|
|
955
955
|
if NUMERIC_FORMAT_MASK_PLACEHOLDER in normalization:
|
|
956
956
|
mask = self._build_numeric_format_mask(self._resolve_numeric_scale(col))
|
|
957
957
|
normalization = normalization.replace(NUMERIC_FORMAT_MASK_PLACEHOLDER, mask)
|
|
958
958
|
if ICEBERG_FRACTION_DIGITS_PLACEHOLDER in normalization:
|
|
959
|
-
normalization = normalization.replace(
|
|
960
|
-
ICEBERG_FRACTION_DIGITS_PLACEHOLDER, str(iceberg_fraction_digits)
|
|
961
|
-
)
|
|
959
|
+
normalization = normalization.replace(ICEBERG_FRACTION_DIGITS_PLACEHOLDER, str(iceberg_fraction_digits))
|
|
962
960
|
metric_expr = self._wrap_metric_with_normalization(normalization, metric_expr)
|
|
963
961
|
alias = f"c{measured_idx}_m{metric_idx}"
|
|
964
962
|
select_exprs.append(f"{metric_expr} AS {alias}")
|
snowflake_data_validation-1.46.0/src/snowflake/snowflake_data_validation/query/tsql_float_bits.py
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Copyright 2026 Snowflake Inc.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
"""Read a T-SQL FLOAT's IEEE-754 fields from its stored bits.
|
|
5
|
+
|
|
6
|
+
SQL Server and the Azure Synapse dedicated SQL pool share this spelling of the
|
|
7
|
+
``sign|exponent|significand`` tuple that Snowflake FLOAT emits.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from snowflake.snowflake_data_validation.query.float_bit_normalization import (
|
|
13
|
+
IEEE754_BINARY64_FRACTION_BITS,
|
|
14
|
+
IEEE754_BINARY64_MIN_EXPONENT,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
_BINARY64_EXPONENT_BIAS = 1023
|
|
19
|
+
_BINARY64_MAX_BIASED_EXPONENT = 2047
|
|
20
|
+
# Mask for the 11 exponent bits in the first two big-endian bytes (0x7FF0).
|
|
21
|
+
_BINARY64_EXPONENT_MASK_IN_HIGH_WORD = 0x7FF0
|
|
22
|
+
_BINARY64_EXPONENT_SHIFT_IN_HIGH_WORD = 16
|
|
23
|
+
_BINARY64_FRACTION_MASK = (1 << IEEE754_BINARY64_FRACTION_BITS) - 1
|
|
24
|
+
_BINARY64_IMPLICIT_BIT = 1 << IEEE754_BINARY64_FRACTION_BITS
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def build_tsql_float_bit_canonical_expr(col_ref: str) -> str:
|
|
28
|
+
"""Return the exact binary64 tuple for a SQL Server or Azure Synapse float.
|
|
29
|
+
|
|
30
|
+
Emits the same ``sign|exponent|significand`` strings as
|
|
31
|
+
``build_binary64_canonical_expr``, but reads the fields from the stored
|
|
32
|
+
bits: ``CAST(float AS BINARY(8))`` is the big-endian IEEE-754 encoding.
|
|
33
|
+
The LOG/POWER exponent search the other dialects use repeats the column
|
|
34
|
+
about a hundred times, and T-SQL compiles every normalized column of a row
|
|
35
|
+
hash into one expression with a size limit ("An expression services limit
|
|
36
|
+
has been reached"), which a few dozen FLOAT columns exceed. Integer
|
|
37
|
+
literals above INT range are DECIMAL in T-SQL, so the 64-bit masks are
|
|
38
|
+
cast to BIGINT for the ``&`` operator.
|
|
39
|
+
"""
|
|
40
|
+
# The inner cast keeps a REAL argument from encoding as four bytes.
|
|
41
|
+
bits = f"CAST(CAST({col_ref} AS FLOAT) AS BINARY(8))"
|
|
42
|
+
biased_exponent = (
|
|
43
|
+
f"((CAST(SUBSTRING({bits}, 1, 2) AS INT) & {_BINARY64_EXPONENT_MASK_IN_HIGH_WORD})"
|
|
44
|
+
f" / {_BINARY64_EXPONENT_SHIFT_IN_HIGH_WORD})"
|
|
45
|
+
)
|
|
46
|
+
fraction = f"(CAST({bits} AS BIGINT) & CAST({_BINARY64_FRACTION_MASK} AS BIGINT))"
|
|
47
|
+
# Subnormals have a zero biased exponent, a fixed -1022 exponent and no implicit bit.
|
|
48
|
+
exponent = (
|
|
49
|
+
f"CASE WHEN {biased_exponent} = 0 THEN {IEEE754_BINARY64_MIN_EXPONENT} "
|
|
50
|
+
f"ELSE {biased_exponent} - {_BINARY64_EXPONENT_BIAS} END"
|
|
51
|
+
)
|
|
52
|
+
significand = (
|
|
53
|
+
f"{fraction} + CASE WHEN {biased_exponent} = 0 THEN CAST(0 AS BIGINT) "
|
|
54
|
+
f"ELSE CAST({_BINARY64_IMPLICIT_BIT} AS BIGINT) END"
|
|
55
|
+
)
|
|
56
|
+
special_value = (
|
|
57
|
+
f"CASE WHEN {fraction} <> 0 THEN 'NAN' WHEN {col_ref} < 0 THEN '-INF' ELSE '+INF' END"
|
|
58
|
+
)
|
|
59
|
+
sign = f"CASE WHEN {col_ref} < 0 THEN '1' ELSE '0' END"
|
|
60
|
+
return (
|
|
61
|
+
f"CASE WHEN {col_ref} IS NULL THEN NULL "
|
|
62
|
+
f"WHEN {col_ref} = 0 THEN '0|0|0' "
|
|
63
|
+
f"WHEN {biased_exponent} = {_BINARY64_MAX_BIASED_EXPONENT} THEN {special_value} "
|
|
64
|
+
f"ELSE CONCAT({sign}, '|', CAST({exponent} AS VARCHAR(50)), '|', "
|
|
65
|
+
f"CAST({significand} AS VARCHAR(50))) END"
|
|
66
|
+
)
|
|
@@ -635,6 +635,36 @@ TIMESTAMP_AS_TEXT:
|
|
|
635
635
|
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
636
636
|
metric_return_datatype: BIGINT
|
|
637
637
|
|
|
638
|
+
# Iceberg VARCHAR DATE (SNOW-4381535): MIN/MAX rendered as the UNLOAD footer's
|
|
639
|
+
# signed astronomical-year text. Kept in sync with DMO by test_redshift_consistency.py.
|
|
640
|
+
DATE_AS_TEXT:
|
|
641
|
+
min:
|
|
642
|
+
metric_query: MIN("{{ col_name }}")
|
|
643
|
+
metric_return_datatype: VARCHAR
|
|
644
|
+
metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR END)) || ''-'' || LPAD(EXTRACT(MONTH FROM {{ metric_query }})::VARCHAR, 2, ''0'') || ''-'' || LPAD(EXTRACT(DAY FROM {{ metric_query }})::VARCHAR, 2, ''0'')'
|
|
645
|
+
max:
|
|
646
|
+
metric_query: MAX("{{ col_name }}")
|
|
647
|
+
metric_return_datatype: VARCHAR
|
|
648
|
+
metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR END)) || ''-'' || LPAD(EXTRACT(MONTH FROM {{ metric_query }})::VARCHAR, 2, ''0'') || ''-'' || LPAD(EXTRACT(DAY FROM {{ metric_query }})::VARCHAR, 2, ''0'')'
|
|
649
|
+
count_null:
|
|
650
|
+
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
651
|
+
metric_return_datatype: BIGINT
|
|
652
|
+
|
|
653
|
+
# Iceberg VARCHAR TIMESTAMPTZ (SNOW-4381535): MIN/MAX of the instant, rendered in
|
|
654
|
+
# UTC with the UNLOAD footer's signed year. Kept in sync with DMO by test_redshift_consistency.py.
|
|
655
|
+
TIMESTAMPTZ_AS_TEXT:
|
|
656
|
+
min:
|
|
657
|
+
metric_query: MIN("{{ col_name }}")
|
|
658
|
+
metric_return_datatype: VARCHAR
|
|
659
|
+
metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR END)) || TO_CHAR(({{ metric_query }} AT TIME ZONE ''UTC''), ''-MM-DD"T"HH24:MI:SS.US'') || ''000'' || ''+00:00'''
|
|
660
|
+
max:
|
|
661
|
+
metric_query: MAX("{{ col_name }}")
|
|
662
|
+
metric_return_datatype: VARCHAR
|
|
663
|
+
metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR END)) || TO_CHAR(({{ metric_query }} AT TIME ZONE ''UTC''), ''-MM-DD"T"HH24:MI:SS.US'') || ''000'' || ''+00:00'''
|
|
664
|
+
count_null:
|
|
665
|
+
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
666
|
+
metric_return_datatype: BIGINT
|
|
667
|
+
|
|
638
668
|
TIMESTAMPTZ:
|
|
639
669
|
min:
|
|
640
670
|
metric_query: MIN("{{ col_name }}")
|