snowflake-data-validation 1.46.2__tar.gz → 1.48.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.46.2 → snowflake_data_validation-1.48.0}/PKG-INFO +92 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/README.md +89 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/pyproject.toml +10 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +24 -156
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +3 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +5 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +11 -103
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +12 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +70 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/connector_base.py +12 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +69 -257
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +4 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +34 -20
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +51 -21
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +46 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +55 -16
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +48 -193
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +19 -16
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +85 -10
- snowflake_data_validation-1.48.0/src/snowflake/snowflake_data_validation/oracle/oracle_spatial.py +100 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +9 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +14 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +115 -390
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +2 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +21 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/_internal.py +25 -10
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +4 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +10 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +1 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +4 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +11 -29
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +0 -20
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +65 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +48 -254
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +13 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +19 -72
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +21 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +42 -96
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +11 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +52 -39
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +9 -35
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +2 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +51 -228
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +3 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +5 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +80 -235
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +3 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +4 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +2 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +61 -17
- snowflake_data_validation-1.48.0/src/snowflake/snowflake_data_validation/teradata/query/hash_md5_function.py +60 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +65 -5
- snowflake_data_validation-1.48.0/src/snowflake/snowflake_data_validation/utils/catalog_literals.py +39 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +9 -13
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +8 -7
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/constants.py +7 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +71 -14
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/interval_common.py +48 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +2 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +29 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +8 -12
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/telemetry.py +40 -30
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +45 -16
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +94 -30
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +5 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +6 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +5 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +283 -37
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/integration/Redshift/test_metadata_extractor_integration.py +17 -180
- snowflake_data_validation-1.48.0/tests/integration/test_async_generation_integration.py +376 -0
- snowflake_data_validation-1.48.0/tests/integration/test_async_validation_integration.py +347 -0
- snowflake_data_validation-1.48.0/tests/integration/test_source_validation_integration.py +638 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +9 -19
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_collation.py +18 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +1 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_collation.py +15 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +1 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_spatial_templates.py +2 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_split_schema_query.py +17 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +0 -29
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_query_generator_teradata.py +1 -0
- snowflake_data_validation-1.48.0/tests/unit/Teradata/test_teradata_blob_metrics.py +99 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_collation.py +28 -3
- snowflake_data_validation-1.48.0/tests/unit/Teradata/test_teradata_hash_md5_function.py +129 -0
- snowflake_data_validation-1.48.0/tests/unit/Teradata/test_teradata_integer_stddev_exact.py +101 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +24 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_spatial_templates.py +2 -5
- snowflake_data_validation-1.48.0/tests/unit/Teradata/test_teradata_table_metadata_unbounded_number.py +107 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +19 -19
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +47 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_bigquery_spatial_templates.py +2 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_query_generator_bigquery.py +175 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_query_generator.py +3 -11
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_xml_long_metrics.py +1 -10
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_iso_normalization.py +14 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_metrics_templates.py +7 -10
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_query_generator.py +34 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_query_modifiers.py +11 -6
- snowflake_data_validation-1.48.0/tests/unit/oracle/test_oracle_signed_year.py +68 -0
- snowflake_data_validation-1.48.0/tests/unit/oracle/test_oracle_snowflake_signed_year.py +73 -0
- snowflake_data_validation-1.48.0/tests/unit/oracle/test_oracle_spatial.py +89 -0
- snowflake_data_validation-1.48.0/tests/unit/oracle/test_oracle_xmltype.py +19 -0
- snowflake_data_validation-1.48.0/tests/unit/query/test_template_object_name_bracketing.py +188 -0
- snowflake_data_validation-1.48.0/tests/unit/query/test_unsigned_hex_slice_sql.py +105 -0
- snowflake_data_validation-1.48.0/tests/unit/snowflake/test_snowflake_ipaddress_metrics_templates.py +34 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +2 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_json.py +0 -7
- snowflake_data_validation-1.48.0/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +119 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +8 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_row_queries.py +45 -16
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +2 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +1 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +1 -25
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +15 -42
- snowflake_data_validation-1.48.0/tests/unit/test_async_validation_executor.py +100 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_batched_metrics_queries.py +54 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_boolean_binary_canonical_templates.py +5 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_charset_normalization.py +32 -6
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_column_partitioning_strategy.py +11 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_comparison_codec.py +105 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_file_generator.py +24 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_connector_snowflake.py +54 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_data_validator.py +208 -0
- snowflake_data_validation-1.48.0/tests/unit/test_empty_query_result_columns.py +234 -0
- snowflake_data_validation-1.48.0/tests/unit/test_execute_query_internal.py +94 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_float_canonical_templates.py +44 -9
- snowflake_data_validation-1.48.0/tests/unit/test_hatch_linter_environment.py +36 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_iceberg_dv_l3_normalization.py +178 -9
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_iceberg_v2_metrics_exclusion.py +89 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_templates_casts.py +42 -21
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_postgresql_normalization_templates.py +1 -19
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_query_executor.py +8 -6
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_redshift_native_timestamptz_ltz.py +8 -4
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_row_data_validator.py +663 -9
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_row_data_validator_empty_chunk.py +25 -3
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_schema_accepted_native_datatypes.py +69 -3
- snowflake_data_validation-1.48.0/tests/unit/test_schema_query_row_count_option.py +136 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_spatial_wkt_canonicalization.py +51 -2
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sqlserver_multi_version_support.py +3 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sync_validation_executor.py +216 -17
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_table_context.py +53 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_telemetry.py +60 -0
- snowflake_data_validation-1.48.0/tests/unit/test_teradata_aimv_normalization.py +85 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_string_rtrim_policy.py +0 -1
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_tsql_float_l2_aggregates.py +14 -121
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_vector_bit_normalization.py +6 -0
- snowflake_data_validation-1.48.0/tests/unit/utils/test_catalog_literals.py +34 -0
- snowflake_data_validation-1.46.2/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +0 -57
- snowflake_data_validation-1.46.2/tests/integration/test_async_generation_integration.py +0 -579
- snowflake_data_validation-1.46.2/tests/integration/test_async_validation_integration.py +0 -649
- snowflake_data_validation-1.46.2/tests/integration/test_source_validation_integration.py +0 -810
- snowflake_data_validation-1.46.2/tests/integration/test_sync_validation_integration.py +0 -655
- snowflake_data_validation-1.46.2/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -63
- snowflake_data_validation-1.46.2/tests/unit/test_float_aggregate_reduction.py +0 -358
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/.gitignore +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/LICENSE +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/docs/README.md +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/normalization_render_context.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/tsql_float_bits.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_show_columns_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_iceberg_format_version.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_uniqueidentifier_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/metrics_exclusion.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/column_pairing.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/lossy_number_mapping.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/conftest.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_enum_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_columns_metadata_template.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_super_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_columns_metadata_precision_scale.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_table_metadata_float_precision.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_table_metadata_object_type.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_unicode_character_length.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/conftest.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/db2/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_registration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/query/test_normalization_render_context.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/query/test_time_fraction_rendering.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/snowflake/test_snowflake_get_case_sensitive_columns.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/snowflake/test_snowflake_get_iceberg_format_version.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_physical_target.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_l1_character_length.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_l1_character_maximum_length.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_uniqueidentifier_l3_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_accepted_transformation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_case_sensitive_column_pairing.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_catalog_column_size.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_cell_data_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_cell_data_validator_threading.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_cell_validation_query_generation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_column_grouping.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_column_normalization_override.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_column_selection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_column_selection_actual_names.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_loader.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_model.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_custom_templates_models.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_decfloat_l2_min_max.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_decimal_text_canonical.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_dv_tracing.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_error_classifier.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_escape_odbc_value.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_extraction_keeps_catalog_column_spelling.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_fetch_schema_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_float_bit_canonical.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_get_configuration_file.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_get_target_cols.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_dataframe.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_io.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_polars_cast_threading.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_index_key_format.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_internal_helpers.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_interval_common.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_iso_dv_common.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_l2_collation_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_l2_count_distinct_opt_in_config.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_lossy_number_mapping.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_metric_identifier_rendering.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_exclusion.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_reshape.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_normalize_shape_aware.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_object_type_criterion.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_period_common.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_platform_bridge.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_query_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_query_generator_numeric_scale.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_query_metrics_level_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_query_to_dataframe.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_query_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_qvci_fallback_triggers.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_redshift_iceberg_timestamp_metrics.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_to_dataframe.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_validator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_row_count_bigint_overflow.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_row_hash_column_delimiter.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_schema_column_selection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_schema_query_capability.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_signature_external_table.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_signature_row_md5_query.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_source_validation_executor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sql_catalog_template_guard.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sql_literal_jinja_filter.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sync_executor_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_sync_schema_validation_real_callbacks.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_table_configuration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_table_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_table_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_target_platform_factory.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_iso_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_type_code_mapping.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_timestamp_golden_vectors.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_trace_bridge.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_configuration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_report_status.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_templates_dto.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_vector_common.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_vector_normalization.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_view_configuration.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/test_warm_start.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.0}/tests/unit/utils/test_constants.py +0 -0
- {snowflake_data_validation-1.46.2 → snowflake_data_validation-1.48.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.48.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
|
|
41
|
+
Requires-Dist: snowflake-connector-python<6,>=5
|
|
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.19; extra == 'scai'
|
|
83
83
|
Provides-Extra: sqlite
|
|
84
84
|
Requires-Dist: sqlean-py>=3.45.0; extra == 'sqlite'
|
|
85
85
|
Provides-Extra: sqlserver
|
|
@@ -164,7 +164,7 @@ An integer column mapped to a `NUMBER` with scale 0 is the exception to the prec
|
|
|
164
164
|
|
|
165
165
|
A PostgreSQL user-defined `ENUM` column is validated as `ENUM` against a Snowflake `VARCHAR`. `information_schema` reports every enum as `USER-DEFINED`, so the metadata queries read `pg_type.typtype` to tell enums apart, and report the longest label as the column's length. L2 and L3 compare the label text.
|
|
166
166
|
|
|
167
|
-
Snowflake database, schema and table names may contain a backslash or an apostrophe, for example `NAFMAIN\TUSDB102`. Snowflake reads backslash escapes inside a string literal, so the Snowflake metadata queries (table metadata, column metadata, case-sensitive columns
|
|
167
|
+
Snowflake database, schema and table names may contain a backslash or an apostrophe, for example `NAFMAIN\TUSDB102`. Snowflake reads backslash escapes inside a string literal, so the Snowflake metadata queries (table metadata, column metadata, case-sensitive columns, object-type lookups, and the column list and table list that column partitioning and the configuration generator read through `utils/catalog_literals.py`) write each name through `escape_snowflake_sql_literal` / `quote_snowflake_sql_literal` in `shared/queries/sql_literals.py`, which double backslashes as well as single quotes. Use these helpers, not `escape_sql_literal`, for any name embedded in a Snowflake string literal.
|
|
168
168
|
|
|
169
169
|
### Metrics Validation
|
|
170
170
|
Compares statistical metrics for each column:
|
|
@@ -182,6 +182,14 @@ L1 and L2 read each column's catalog spelling rather than an upper-cased name, s
|
|
|
182
182
|
|
|
183
183
|
### Views
|
|
184
184
|
|
|
185
|
+
SQL Server and Azure Synapse source scans delimit each configured object-name part
|
|
186
|
+
through the shared identifier manager. Reserved words, dots inside quoted parts,
|
|
187
|
+
escaped closing brackets, and omitted schema segments remain valid in generated
|
|
188
|
+
SQL, including whitespace between a separator and a quoted part.
|
|
189
|
+
The platform-aware table-context configuration boundary parses T-SQL references
|
|
190
|
+
into actual name components once; repeated queries write those components without
|
|
191
|
+
reinterpreting quote characters or reparsing the original configuration.
|
|
192
|
+
|
|
185
193
|
For **Redshift** and **Teradata** sources, views are validated on the view itself (no `CREATE TABLE AS SELECT` materialization in local sync mode). Other platforms may still materialize views to temporary tables before L1/L2/L3. **Teradata** views are read via `DBC.ColumnsQV` (Teradata's Query View Column Information catalog), so view L1 covers the full field set — column existence, datatype, precision, scale, length, nullability, and ordinal position — matching the table path. When `DBC.ColumnsQV` is unavailable (QVCI disabled → Teradata error 9719, missing `SELECT` grant, any other failure of that catalog query, or a degenerate result with null `DATA_TYPE`), the extractor falls back to `HELP COLUMN` with `basic_validation=True` and emits one WARNING schema row per view naming the trigger and the remediation. If HELP fails or source schema metadata still has no usable `DATA_TYPE` (including a view validated as a table whose `ColumnsV` types are null), L1 fails that object and does not continue to L2/L3. **Redshift** uses full schema metadata like tables.
|
|
186
194
|
|
|
187
195
|
### Row Validation
|
|
@@ -190,6 +198,26 @@ Performs row-by-row comparison:
|
|
|
190
198
|
- Field-level value comparison
|
|
191
199
|
- Mismatch reporting
|
|
192
200
|
|
|
201
|
+
Row-MD5 results preserve the exact key aliases projected from actual catalog names; joins and report predicates do not uppercase or case-fold those aliases. Distinct keys such as `MixedCase` and `MIXEDCASE` keep their own values. Join alignment accepts an exact `_IDX` projection alias when the key's direct alias is absent; reports read the resulting canonical aliases directly. Each report side takes its identifier and literal rules from the same query generator. Only the generated hash alias is recognized by its dialect spelling (`row_md5` on PostgreSQL/Redshift). An index named `ROW_MD5` conflicts with that reserved result column and is rejected rather than used as a hash. Empty results retain cursor headers and complete missing join/hash columns; populated results fail explicitly for a missing key alias (including a known exclusion) or a missing row-MD5 column rather than guessing another key by casing.
|
|
202
|
+
|
|
203
|
+
For each mismatched row, the report holds a source and a target `SELECT` that find that row, and the run also saves a diff query per side. Each side's queries write names by that side's identifier rules: every part of the object name is read as that platform reads a configured name (an unquoted part folds to its storage case, a quoted part is kept) and written delimited, and every key column is written delimited too. So a SQL Server or Azure Synapse `Load.dbo.File` is queried as `[Load].[dbo].[File]`, the Snowflake target `LOAD.DBO.FILE` as `"LOAD"."DBO"."FILE"`, and a BigQuery key column as `` `Order Id` ``; a reserved word such as `File` stays valid. The report's table name and the saved query file names keep the configured name (`Load.dbo.File`). A string key is escaped by the query generator of the platform that runs that side (`escape_string_literal`). Most dialects use standard SQL and double an apostrophe. Snowflake also doubles backslashes, because it reads a backslash in a string literal as an escape, and BigQuery backslash-escapes both backslashes and apostrophes. A platform whose literals differ overrides `escape_string_literal` on its query generator.
|
|
204
|
+
|
|
205
|
+
Redshift also doubles backslashes and apostrophes. PostgreSQL's standard-SQL escaping assumes `standard_conforming_strings=on` (the server default since PostgreSQL 9.1); the connector does not set this session option. The unit tests check generated literal text for all ten engine dialects, not live database parsing.
|
|
206
|
+
|
|
207
|
+
Qualified source references retain parsed actual components until the identifier
|
|
208
|
+
manager writes SQL. At the table-context boundary, an explicitly supplied actual
|
|
209
|
+
schema fills an omitted schema position; it is not reparsed or replaced with
|
|
210
|
+
`dbo`. Without a resolved schema, valid omitted-position syntax such as
|
|
211
|
+
`tempdb..#snapshot` remains omitted. Separate internal temporary references do
|
|
212
|
+
not inherit the source table's schema. Catalog predicates likewise escape actual
|
|
213
|
+
names as string values rather than stripping literal brackets, quotes or padding.
|
|
214
|
+
|
|
215
|
+
Row-query result labels retain their exact aliases. Catalog-metadata boundaries
|
|
216
|
+
normalize only field labels (such as `DATA_TYPE` and `ROW_COUNT`) for metadata
|
|
217
|
+
consumers; actual column-name values remain unchanged, including mixed case.
|
|
218
|
+
|
|
219
|
+
A key present once on each side is a `MISMATCH` when its row MD5s differ. A NULL row MD5 on one side against a digest on the other is a difference too; NULL on both sides is a match. This is the `IS DISTINCT FROM` rule the Snowflake pushdown compare uses (`docs/common/l3-signature-pushdown-compare.md`).
|
|
220
|
+
|
|
193
221
|
---
|
|
194
222
|
|
|
195
223
|
## 📊 Reports
|
|
@@ -222,14 +250,74 @@ Raising `requires-python` here above the pinned version fails the audit until th
|
|
|
222
250
|
|
|
223
251
|
---
|
|
224
252
|
|
|
253
|
+
## 🧩 Custom result processors
|
|
254
|
+
|
|
255
|
+
`execute_query` and `execute_query_from_table_configuration` take an optional
|
|
256
|
+
`result_processor(raw_result, apply_column_validated_uppercase)` that turns the
|
|
257
|
+
connector's raw result into a DataFrame. A processor you pass is called for every
|
|
258
|
+
result, an empty one included, with the `apply_column_validated_uppercase` flag,
|
|
259
|
+
and the DataFrame it returns is the result, so the columns it gives an empty
|
|
260
|
+
frame are kept. Without one, the platform's default processor is used and an
|
|
261
|
+
empty result becomes an empty DataFrame with no columns.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
225
265
|
## 📚 Documentation
|
|
226
266
|
|
|
227
267
|
For configuration options and examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
|
|
228
268
|
|
|
269
|
+
Async validation reads extracted schema and metrics files laid out as described in [Async validation files](../docs/snowflake-data-validation/async-validation-files.md).
|
|
270
|
+
|
|
229
271
|
---
|
|
230
272
|
|
|
231
273
|
## Changelog
|
|
232
274
|
|
|
275
|
+
### v1.48.0
|
|
276
|
+
|
|
277
|
+
**New features**
|
|
278
|
+
|
|
279
|
+
- Added a row checksum gate that validates a large matching table with one aggregate query per side before extracting row signatures.
|
|
280
|
+
- Added support for Snowflake `IPADDRESS` as an opt-in target for PostgreSQL `INET`.
|
|
281
|
+
- Added L1, L2, and L3 validation parity for Oracle Iceberg tables.
|
|
282
|
+
- Added validation of `INTERVAL` and `NUMBER(*)` target encodings.
|
|
283
|
+
- Added a validation config setting that names one `HASH_MD5` UDF for every Teradata source database.
|
|
284
|
+
- Added the adoption row-hash check for partially migrated Snowflake targets.
|
|
285
|
+
|
|
286
|
+
**Improvements**
|
|
287
|
+
|
|
288
|
+
- Improved L2 metrics by dropping the `FLOAT` sum, adding exact sign counts, and aligning the text and binary metric sets.
|
|
289
|
+
- Improved Oracle `SDO_GEOMETRY` validation by comparing the whole WKT by MD5 and keeping the SRID as EWKT on `GEOMETRY` targets.
|
|
290
|
+
|
|
291
|
+
**Bug fixes**
|
|
292
|
+
|
|
293
|
+
- Fixed Snowflake catalog and `SHOW` lookups not doubling backslashes in name literals.
|
|
294
|
+
- Fixed Azure Synapse `VARCHAR` time values not being compared as the text CETAS stored.
|
|
295
|
+
- Fixed `etl-validate` row validation by pairing each target column with its source type.
|
|
296
|
+
- Fixed Oracle dates and timestamps before year 1 losing their sign.
|
|
297
|
+
- Fixed Oracle integer spatial coordinates not being compared as Snowflake writes them.
|
|
298
|
+
- Fixed Teradata L3 false mismatches on non-ASCII values in `LATIN` columns.
|
|
299
|
+
|
|
300
|
+
### v1.47.0
|
|
301
|
+
|
|
302
|
+
**New features**
|
|
303
|
+
|
|
304
|
+
- Added L1, L2, and L3 validation of BigQuery Iceberg tables.
|
|
305
|
+
- Added L2 and L3 comparison of Teradata `BLOB` and `CLOB` columns.
|
|
306
|
+
|
|
307
|
+
**Improvements**
|
|
308
|
+
|
|
309
|
+
- Improved Teradata L2 validation to compute the standard deviation of integer columns exactly.
|
|
310
|
+
- Updated the Snowflake connector to `snowflake-connector-python` 5.x.
|
|
311
|
+
|
|
312
|
+
**Bug fixes**
|
|
313
|
+
|
|
314
|
+
- Fixed row validation losing join keys when their casing differed or the key column was excluded.
|
|
315
|
+
- Fixed row validation of tables with duplicate keys by matching duplicate-key rows as multisets, and quoted SQL Server identifiers.
|
|
316
|
+
- Fixed custom processing being dropped when a query returned no rows.
|
|
317
|
+
- Fixed the saved row-diff SQL ending in an empty `WHERE` when every mismatched row was missing on one side.
|
|
318
|
+
- Fixed the row drill-down treating a `NULL` `ROW_MD5` on one side as equal to a digest on the other.
|
|
319
|
+
- Fixed Oracle `TIMESTAMP WITH LOCAL TIME ZONE` and `XMLTYPE` comparison by reading them as UTC text and compact `XMLSERIALIZE` text.
|
|
320
|
+
|
|
233
321
|
### v1.46.2
|
|
234
322
|
|
|
235
323
|
**Improvements**
|
|
@@ -73,7 +73,7 @@ An integer column mapped to a `NUMBER` with scale 0 is the exception to the prec
|
|
|
73
73
|
|
|
74
74
|
A PostgreSQL user-defined `ENUM` column is validated as `ENUM` against a Snowflake `VARCHAR`. `information_schema` reports every enum as `USER-DEFINED`, so the metadata queries read `pg_type.typtype` to tell enums apart, and report the longest label as the column's length. L2 and L3 compare the label text.
|
|
75
75
|
|
|
76
|
-
Snowflake database, schema and table names may contain a backslash or an apostrophe, for example `NAFMAIN\TUSDB102`. Snowflake reads backslash escapes inside a string literal, so the Snowflake metadata queries (table metadata, column metadata, case-sensitive columns
|
|
76
|
+
Snowflake database, schema and table names may contain a backslash or an apostrophe, for example `NAFMAIN\TUSDB102`. Snowflake reads backslash escapes inside a string literal, so the Snowflake metadata queries (table metadata, column metadata, case-sensitive columns, object-type lookups, and the column list and table list that column partitioning and the configuration generator read through `utils/catalog_literals.py`) write each name through `escape_snowflake_sql_literal` / `quote_snowflake_sql_literal` in `shared/queries/sql_literals.py`, which double backslashes as well as single quotes. Use these helpers, not `escape_sql_literal`, for any name embedded in a Snowflake string literal.
|
|
77
77
|
|
|
78
78
|
### Metrics Validation
|
|
79
79
|
Compares statistical metrics for each column:
|
|
@@ -91,6 +91,14 @@ L1 and L2 read each column's catalog spelling rather than an upper-cased name, s
|
|
|
91
91
|
|
|
92
92
|
### Views
|
|
93
93
|
|
|
94
|
+
SQL Server and Azure Synapse source scans delimit each configured object-name part
|
|
95
|
+
through the shared identifier manager. Reserved words, dots inside quoted parts,
|
|
96
|
+
escaped closing brackets, and omitted schema segments remain valid in generated
|
|
97
|
+
SQL, including whitespace between a separator and a quoted part.
|
|
98
|
+
The platform-aware table-context configuration boundary parses T-SQL references
|
|
99
|
+
into actual name components once; repeated queries write those components without
|
|
100
|
+
reinterpreting quote characters or reparsing the original configuration.
|
|
101
|
+
|
|
94
102
|
For **Redshift** and **Teradata** sources, views are validated on the view itself (no `CREATE TABLE AS SELECT` materialization in local sync mode). Other platforms may still materialize views to temporary tables before L1/L2/L3. **Teradata** views are read via `DBC.ColumnsQV` (Teradata's Query View Column Information catalog), so view L1 covers the full field set — column existence, datatype, precision, scale, length, nullability, and ordinal position — matching the table path. When `DBC.ColumnsQV` is unavailable (QVCI disabled → Teradata error 9719, missing `SELECT` grant, any other failure of that catalog query, or a degenerate result with null `DATA_TYPE`), the extractor falls back to `HELP COLUMN` with `basic_validation=True` and emits one WARNING schema row per view naming the trigger and the remediation. If HELP fails or source schema metadata still has no usable `DATA_TYPE` (including a view validated as a table whose `ColumnsV` types are null), L1 fails that object and does not continue to L2/L3. **Redshift** uses full schema metadata like tables.
|
|
95
103
|
|
|
96
104
|
### Row Validation
|
|
@@ -99,6 +107,26 @@ Performs row-by-row comparison:
|
|
|
99
107
|
- Field-level value comparison
|
|
100
108
|
- Mismatch reporting
|
|
101
109
|
|
|
110
|
+
Row-MD5 results preserve the exact key aliases projected from actual catalog names; joins and report predicates do not uppercase or case-fold those aliases. Distinct keys such as `MixedCase` and `MIXEDCASE` keep their own values. Join alignment accepts an exact `_IDX` projection alias when the key's direct alias is absent; reports read the resulting canonical aliases directly. Each report side takes its identifier and literal rules from the same query generator. Only the generated hash alias is recognized by its dialect spelling (`row_md5` on PostgreSQL/Redshift). An index named `ROW_MD5` conflicts with that reserved result column and is rejected rather than used as a hash. Empty results retain cursor headers and complete missing join/hash columns; populated results fail explicitly for a missing key alias (including a known exclusion) or a missing row-MD5 column rather than guessing another key by casing.
|
|
111
|
+
|
|
112
|
+
For each mismatched row, the report holds a source and a target `SELECT` that find that row, and the run also saves a diff query per side. Each side's queries write names by that side's identifier rules: every part of the object name is read as that platform reads a configured name (an unquoted part folds to its storage case, a quoted part is kept) and written delimited, and every key column is written delimited too. So a SQL Server or Azure Synapse `Load.dbo.File` is queried as `[Load].[dbo].[File]`, the Snowflake target `LOAD.DBO.FILE` as `"LOAD"."DBO"."FILE"`, and a BigQuery key column as `` `Order Id` ``; a reserved word such as `File` stays valid. The report's table name and the saved query file names keep the configured name (`Load.dbo.File`). A string key is escaped by the query generator of the platform that runs that side (`escape_string_literal`). Most dialects use standard SQL and double an apostrophe. Snowflake also doubles backslashes, because it reads a backslash in a string literal as an escape, and BigQuery backslash-escapes both backslashes and apostrophes. A platform whose literals differ overrides `escape_string_literal` on its query generator.
|
|
113
|
+
|
|
114
|
+
Redshift also doubles backslashes and apostrophes. PostgreSQL's standard-SQL escaping assumes `standard_conforming_strings=on` (the server default since PostgreSQL 9.1); the connector does not set this session option. The unit tests check generated literal text for all ten engine dialects, not live database parsing.
|
|
115
|
+
|
|
116
|
+
Qualified source references retain parsed actual components until the identifier
|
|
117
|
+
manager writes SQL. At the table-context boundary, an explicitly supplied actual
|
|
118
|
+
schema fills an omitted schema position; it is not reparsed or replaced with
|
|
119
|
+
`dbo`. Without a resolved schema, valid omitted-position syntax such as
|
|
120
|
+
`tempdb..#snapshot` remains omitted. Separate internal temporary references do
|
|
121
|
+
not inherit the source table's schema. Catalog predicates likewise escape actual
|
|
122
|
+
names as string values rather than stripping literal brackets, quotes or padding.
|
|
123
|
+
|
|
124
|
+
Row-query result labels retain their exact aliases. Catalog-metadata boundaries
|
|
125
|
+
normalize only field labels (such as `DATA_TYPE` and `ROW_COUNT`) for metadata
|
|
126
|
+
consumers; actual column-name values remain unchanged, including mixed case.
|
|
127
|
+
|
|
128
|
+
A key present once on each side is a `MISMATCH` when its row MD5s differ. A NULL row MD5 on one side against a digest on the other is a difference too; NULL on both sides is a match. This is the `IS DISTINCT FROM` rule the Snowflake pushdown compare uses (`docs/common/l3-signature-pushdown-compare.md`).
|
|
129
|
+
|
|
102
130
|
---
|
|
103
131
|
|
|
104
132
|
## 📊 Reports
|
|
@@ -131,14 +159,74 @@ Raising `requires-python` here above the pinned version fails the audit until th
|
|
|
131
159
|
|
|
132
160
|
---
|
|
133
161
|
|
|
162
|
+
## 🧩 Custom result processors
|
|
163
|
+
|
|
164
|
+
`execute_query` and `execute_query_from_table_configuration` take an optional
|
|
165
|
+
`result_processor(raw_result, apply_column_validated_uppercase)` that turns the
|
|
166
|
+
connector's raw result into a DataFrame. A processor you pass is called for every
|
|
167
|
+
result, an empty one included, with the `apply_column_validated_uppercase` flag,
|
|
168
|
+
and the DataFrame it returns is the result, so the columns it gives an empty
|
|
169
|
+
frame are kept. Without one, the platform's default processor is used and an
|
|
170
|
+
empty result becomes an empty DataFrame with no columns.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
134
174
|
## 📚 Documentation
|
|
135
175
|
|
|
136
176
|
For configuration options and examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
|
|
137
177
|
|
|
178
|
+
Async validation reads extracted schema and metrics files laid out as described in [Async validation files](../docs/snowflake-data-validation/async-validation-files.md).
|
|
179
|
+
|
|
138
180
|
---
|
|
139
181
|
|
|
140
182
|
## Changelog
|
|
141
183
|
|
|
184
|
+
### v1.48.0
|
|
185
|
+
|
|
186
|
+
**New features**
|
|
187
|
+
|
|
188
|
+
- Added a row checksum gate that validates a large matching table with one aggregate query per side before extracting row signatures.
|
|
189
|
+
- Added support for Snowflake `IPADDRESS` as an opt-in target for PostgreSQL `INET`.
|
|
190
|
+
- Added L1, L2, and L3 validation parity for Oracle Iceberg tables.
|
|
191
|
+
- Added validation of `INTERVAL` and `NUMBER(*)` target encodings.
|
|
192
|
+
- Added a validation config setting that names one `HASH_MD5` UDF for every Teradata source database.
|
|
193
|
+
- Added the adoption row-hash check for partially migrated Snowflake targets.
|
|
194
|
+
|
|
195
|
+
**Improvements**
|
|
196
|
+
|
|
197
|
+
- Improved L2 metrics by dropping the `FLOAT` sum, adding exact sign counts, and aligning the text and binary metric sets.
|
|
198
|
+
- Improved Oracle `SDO_GEOMETRY` validation by comparing the whole WKT by MD5 and keeping the SRID as EWKT on `GEOMETRY` targets.
|
|
199
|
+
|
|
200
|
+
**Bug fixes**
|
|
201
|
+
|
|
202
|
+
- Fixed Snowflake catalog and `SHOW` lookups not doubling backslashes in name literals.
|
|
203
|
+
- Fixed Azure Synapse `VARCHAR` time values not being compared as the text CETAS stored.
|
|
204
|
+
- Fixed `etl-validate` row validation by pairing each target column with its source type.
|
|
205
|
+
- Fixed Oracle dates and timestamps before year 1 losing their sign.
|
|
206
|
+
- Fixed Oracle integer spatial coordinates not being compared as Snowflake writes them.
|
|
207
|
+
- Fixed Teradata L3 false mismatches on non-ASCII values in `LATIN` columns.
|
|
208
|
+
|
|
209
|
+
### v1.47.0
|
|
210
|
+
|
|
211
|
+
**New features**
|
|
212
|
+
|
|
213
|
+
- Added L1, L2, and L3 validation of BigQuery Iceberg tables.
|
|
214
|
+
- Added L2 and L3 comparison of Teradata `BLOB` and `CLOB` columns.
|
|
215
|
+
|
|
216
|
+
**Improvements**
|
|
217
|
+
|
|
218
|
+
- Improved Teradata L2 validation to compute the standard deviation of integer columns exactly.
|
|
219
|
+
- Updated the Snowflake connector to `snowflake-connector-python` 5.x.
|
|
220
|
+
|
|
221
|
+
**Bug fixes**
|
|
222
|
+
|
|
223
|
+
- Fixed row validation losing join keys when their casing differed or the key column was excluded.
|
|
224
|
+
- Fixed row validation of tables with duplicate keys by matching duplicate-key rows as multisets, and quoted SQL Server identifiers.
|
|
225
|
+
- Fixed custom processing being dropped when a query returned no rows.
|
|
226
|
+
- Fixed the saved row-diff SQL ending in an empty `WHERE` when every mismatched row was missing on one side.
|
|
227
|
+
- Fixed the row drill-down treating a `NULL` `ROW_MD5` on one side as equal to a digest on the other.
|
|
228
|
+
- Fixed Oracle `TIMESTAMP WITH LOCAL TIME ZONE` and `XMLTYPE` comparison by reading them as UTC text and compact `XMLSERIALIZE` text.
|
|
229
|
+
|
|
142
230
|
### v1.46.2
|
|
143
231
|
|
|
144
232
|
**Improvements**
|
|
@@ -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>=
|
|
39
|
+
"snowflake-connector-python>=5,<6",
|
|
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.19",
|
|
110
110
|
]
|
|
111
111
|
|
|
112
112
|
[project.urls]
|
|
@@ -192,6 +192,14 @@ exclude_lines = [
|
|
|
192
192
|
"if __name__ == .__main__.:",
|
|
193
193
|
]
|
|
194
194
|
|
|
195
|
+
# Ruff only reads the sources, so the linter needs neither the package nor its drivers.
|
|
196
|
+
[tool.hatch.envs.linter]
|
|
197
|
+
detached = true
|
|
198
|
+
installer = "uv"
|
|
199
|
+
dependencies = [
|
|
200
|
+
"ruff>=0.15",
|
|
201
|
+
]
|
|
202
|
+
|
|
195
203
|
[tool.hatch.envs.linter.scripts]
|
|
196
204
|
check = [
|
|
197
205
|
"echo 'Running linting checks...' && ruff check --config=../ruff.toml --statistics --verbose . || (echo '❌ LINTING FAILED: Please fix the above linting issues before proceeding. Use \"ruff check --config=../ruff.toml --fix .\" to auto-fix some issues, or fix them manually.' && exit 1)",
|