snowflake-data-validation 1.47.0__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.
Files changed (744) hide show
  1. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/PKG-INFO +30 -3
  2. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/README.md +28 -1
  3. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/pyproject.toml +1 -1
  4. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +24 -156
  5. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +3 -0
  6. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +1 -1
  7. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +5 -0
  8. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +11 -103
  9. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +1 -1
  10. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +4 -0
  11. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +69 -257
  12. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +1 -1
  13. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +4 -0
  14. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +34 -20
  15. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +51 -21
  16. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +5 -0
  17. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +48 -193
  18. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +15 -12
  19. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +1 -1
  20. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +80 -7
  21. snowflake_data_validation-1.48.0/src/snowflake/snowflake_data_validation/oracle/oracle_spatial.py +100 -0
  22. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +14 -0
  23. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +115 -390
  24. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +2 -2
  25. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +21 -0
  26. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +9 -2
  27. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +11 -29
  28. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +0 -20
  29. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +31 -1
  30. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +48 -254
  31. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +8 -2
  32. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +19 -72
  33. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +2 -1
  34. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +42 -96
  35. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +10 -0
  36. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +1 -1
  37. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +42 -34
  38. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +9 -35
  39. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +2 -2
  40. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +51 -228
  41. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +3 -0
  42. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +1 -1
  43. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +5 -0
  44. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +1 -1
  45. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +40 -241
  46. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +4 -2
  47. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +2 -0
  48. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +61 -17
  49. snowflake_data_validation-1.48.0/src/snowflake/snowflake_data_validation/teradata/query/hash_md5_function.py +60 -0
  50. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +65 -5
  51. snowflake_data_validation-1.48.0/src/snowflake/snowflake_data_validation/utils/catalog_literals.py +39 -0
  52. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +9 -13
  53. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +8 -7
  54. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/constants.py +4 -3
  55. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +20 -13
  56. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/interval_common.py +48 -0
  57. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +12 -1
  58. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +8 -12
  59. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/telemetry.py +2 -1
  60. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +1 -1
  61. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +45 -16
  62. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +14 -0
  63. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +5 -1
  64. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +6 -2
  65. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +5 -4
  66. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/integration/Redshift/test_metadata_extractor_integration.py +17 -180
  67. snowflake_data_validation-1.48.0/tests/integration/test_async_generation_integration.py +376 -0
  68. snowflake_data_validation-1.48.0/tests/integration/test_async_validation_integration.py +347 -0
  69. snowflake_data_validation-1.48.0/tests/integration/test_source_validation_integration.py +638 -0
  70. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +9 -19
  71. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_collation.py +18 -1
  72. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +1 -2
  73. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_collation.py +15 -1
  74. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +1 -3
  75. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_spatial_templates.py +2 -4
  76. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +0 -29
  77. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_query_generator_teradata.py +1 -0
  78. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_blob_metrics.py +8 -6
  79. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_collation.py +28 -3
  80. snowflake_data_validation-1.48.0/tests/unit/Teradata/test_teradata_hash_md5_function.py +129 -0
  81. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_integer_stddev_exact.py +11 -33
  82. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +3 -1
  83. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_spatial_templates.py +2 -5
  84. snowflake_data_validation-1.48.0/tests/unit/Teradata/test_teradata_table_metadata_unbounded_number.py +107 -0
  85. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +19 -19
  86. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_bigquery_spatial_templates.py +2 -3
  87. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_query_generator_bigquery.py +18 -1
  88. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_query_generator.py +3 -11
  89. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_xml_long_metrics.py +1 -10
  90. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_iso_normalization.py +1 -1
  91. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_metrics_templates.py +7 -10
  92. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_query_generator.py +34 -4
  93. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_query_modifiers.py +11 -6
  94. snowflake_data_validation-1.48.0/tests/unit/oracle/test_oracle_signed_year.py +68 -0
  95. snowflake_data_validation-1.48.0/tests/unit/oracle/test_oracle_snowflake_signed_year.py +73 -0
  96. snowflake_data_validation-1.48.0/tests/unit/oracle/test_oracle_spatial.py +89 -0
  97. snowflake_data_validation-1.48.0/tests/unit/query/test_unsigned_hex_slice_sql.py +105 -0
  98. snowflake_data_validation-1.48.0/tests/unit/snowflake/test_snowflake_ipaddress_metrics_templates.py +34 -0
  99. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +2 -3
  100. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_json.py +0 -7
  101. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +8 -3
  102. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_row_queries.py +45 -16
  103. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +2 -3
  104. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +1 -1
  105. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +1 -25
  106. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +10 -38
  107. snowflake_data_validation-1.48.0/tests/unit/test_async_validation_executor.py +100 -0
  108. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_charset_normalization.py +32 -6
  109. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_column_partitioning_strategy.py +11 -0
  110. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_comparison_codec.py +105 -4
  111. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_file_generator.py +24 -0
  112. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_connector_snowflake.py +2 -0
  113. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_data_validator.py +37 -0
  114. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_float_canonical_templates.py +44 -9
  115. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_iceberg_dv_l3_normalization.py +178 -9
  116. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_iceberg_v2_metrics_exclusion.py +89 -0
  117. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_templates_casts.py +42 -21
  118. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_postgresql_normalization_templates.py +1 -19
  119. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_redshift_native_timestamptz_ltz.py +8 -4
  120. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_schema_accepted_native_datatypes.py +69 -3
  121. snowflake_data_validation-1.48.0/tests/unit/test_schema_query_row_count_option.py +136 -0
  122. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_spatial_wkt_canonicalization.py +51 -2
  123. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sqlserver_multi_version_support.py +2 -0
  124. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sync_validation_executor.py +26 -0
  125. snowflake_data_validation-1.48.0/tests/unit/test_teradata_aimv_normalization.py +85 -0
  126. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_string_rtrim_policy.py +0 -1
  127. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_tsql_float_l2_aggregates.py +14 -121
  128. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_vector_bit_normalization.py +6 -0
  129. snowflake_data_validation-1.48.0/tests/unit/utils/test_catalog_literals.py +34 -0
  130. snowflake_data_validation-1.47.0/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +0 -57
  131. snowflake_data_validation-1.47.0/tests/integration/test_async_generation_integration.py +0 -579
  132. snowflake_data_validation-1.47.0/tests/integration/test_async_validation_integration.py +0 -649
  133. snowflake_data_validation-1.47.0/tests/integration/test_source_validation_integration.py +0 -810
  134. snowflake_data_validation-1.47.0/tests/integration/test_sync_validation_integration.py +0 -655
  135. snowflake_data_validation-1.47.0/tests/unit/test_float_aggregate_reduction.py +0 -358
  136. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/.gitignore +0 -0
  137. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/LICENSE +0 -0
  138. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/docs/README.md +0 -0
  139. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
  140. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
  141. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
  142. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
  143. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
  144. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
  145. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
  146. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
  147. {snowflake_data_validation-1.47.0 → 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
  148. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
  149. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
  150. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
  151. {snowflake_data_validation-1.47.0 → 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
  152. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
  153. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
  154. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
  155. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
  156. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
  157. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
  158. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
  159. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
  160. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +0 -0
  161. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
  162. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
  163. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
  164. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
  165. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
  166. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
  167. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
  168. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
  169. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
  170. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
  171. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
  172. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
  173. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
  174. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
  175. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
  176. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
  177. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
  178. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
  179. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
  180. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
  181. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
  182. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
  183. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
  184. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
  185. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
  186. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +0 -0
  187. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
  188. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
  189. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +0 -0
  190. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
  191. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
  192. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
  193. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -0
  194. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
  195. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
  196. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
  197. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
  198. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
  199. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -0
  200. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
  201. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
  202. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
  203. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
  204. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
  205. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
  206. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
  207. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
  208. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
  209. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
  210. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
  211. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
  212. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
  213. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
  214. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +0 -0
  215. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
  216. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
  217. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
  218. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
  219. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
  220. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
  221. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
  222. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
  223. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
  224. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
  225. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
  226. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
  227. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
  228. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
  229. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
  230. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
  231. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
  232. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_insert_template.sql.j2 +0 -0
  233. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_table_template.sql.j2 +0 -0
  234. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_insert_template.sql.j2 +0 -0
  235. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_table_template.sql.j2 +0 -0
  236. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
  237. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
  238. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
  239. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
  240. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
  241. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
  242. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
  243. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
  244. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
  245. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
  246. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
  247. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
  248. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
  249. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
  250. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
  251. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
  252. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
  253. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
  254. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
  255. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
  256. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
  257. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
  258. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
  259. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
  260. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
  261. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
  262. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
  263. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
  264. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
  265. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
  266. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
  267. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
  268. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
  269. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
  270. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
  271. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
  272. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
  273. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
  274. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
  275. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
  276. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
  277. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
  278. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
  279. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
  280. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
  281. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
  282. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
  283. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
  284. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
  285. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
  286. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
  287. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
  288. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
  289. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
  290. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
  291. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
  292. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
  293. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
  294. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
  295. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
  296. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
  297. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
  298. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
  299. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +0 -0
  300. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
  301. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
  302. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/normalization_render_context.py +0 -0
  303. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
  304. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
  305. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
  306. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +0 -0
  307. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +0 -0
  308. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/tsql_float_bits.py +0 -0
  309. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +0 -0
  310. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
  311. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
  312. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
  313. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
  314. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
  315. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
  316. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
  317. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
  318. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
  319. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
  320. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
  321. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
  322. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
  323. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
  324. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
  325. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
  326. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_show_columns_query.sql.j2 +0 -0
  327. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
  328. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
  329. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
  330. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
  331. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
  332. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
  333. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +0 -0
  334. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
  335. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
  336. {snowflake_data_validation-1.47.0 → 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
  337. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
  338. {snowflake_data_validation-1.47.0 → 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
  339. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
  340. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
  341. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
  342. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
  343. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
  344. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
  345. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
  346. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +0 -0
  347. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
  348. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
  349. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
  350. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
  351. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
  352. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
  353. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_iceberg_format_version.sql.j2 +0 -0
  354. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
  355. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
  356. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
  357. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
  358. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
  359. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +0 -0
  360. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
  361. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
  362. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
  363. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
  364. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
  365. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
  366. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
  367. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
  368. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
  369. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
  370. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
  371. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
  372. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
  373. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
  374. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
  375. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
  376. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
  377. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
  378. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
  379. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
  380. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
  381. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
  382. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
  383. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
  384. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
  385. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
  386. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
  387. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
  388. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
  389. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
  390. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
  391. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
  392. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
  393. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
  394. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
  395. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
  396. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
  397. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
  398. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
  399. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
  400. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
  401. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
  402. {snowflake_data_validation-1.47.0 → 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
  403. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
  404. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
  405. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
  406. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
  407. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
  408. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
  409. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
  410. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
  411. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
  412. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
  413. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
  414. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +0 -0
  415. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_uniqueidentifier_normalization.py +0 -0
  416. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
  417. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
  418. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
  419. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
  420. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
  421. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
  422. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
  423. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
  424. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
  425. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
  426. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
  427. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +0 -0
  428. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
  429. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
  430. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
  431. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
  432. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
  433. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
  434. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
  435. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
  436. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
  437. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
  438. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -0
  439. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
  440. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
  441. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
  442. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
  443. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
  444. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
  445. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
  446. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
  447. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
  448. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
  449. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
  450. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
  451. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
  452. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
  453. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
  454. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
  455. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
  456. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
  457. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
  458. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
  459. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +0 -0
  460. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
  461. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
  462. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
  463. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +0 -0
  464. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
  465. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
  466. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
  467. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
  468. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/metrics_exclusion.py +0 -0
  469. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
  470. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
  471. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
  472. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
  473. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
  474. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
  475. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
  476. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
  477. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
  478. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
  479. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
  480. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
  481. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
  482. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
  483. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
  484. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
  485. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
  486. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
  487. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
  488. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
  489. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
  490. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
  491. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/column_pairing.py +0 -0
  492. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
  493. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/lossy_number_mapping.py +0 -0
  494. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +0 -0
  495. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +0 -0
  496. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
  497. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
  498. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
  499. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
  500. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
  501. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
  502. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
  503. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
  504. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
  505. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
  506. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
  507. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
  508. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
  509. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
  510. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
  511. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
  512. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
  513. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
  514. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
  515. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
  516. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/.coveragerc +0 -0
  517. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/conftest.py +0 -0
  518. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/integration/.coveragerc +0 -0
  519. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/integration/test_reference_integration.py +0 -0
  520. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_enum_metadata.py +0 -0
  521. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
  522. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
  523. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
  524. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
  525. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
  526. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
  527. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_connector_redshift.py +0 -0
  528. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
  529. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_columns_metadata_template.py +0 -0
  530. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_split_schema_query.py +0 -0
  531. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_super_normalization.py +0 -0
  532. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
  533. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_connector_teradata.py +0 -0
  534. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
  535. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
  536. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_columns_metadata_precision_scale.py +0 -0
  537. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_table_metadata_float_precision.py +0 -0
  538. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_table_metadata_object_type.py +0 -0
  539. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_unicode_character_length.py +0 -0
  540. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
  541. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
  542. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/__init__.py +0 -0
  543. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
  544. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
  545. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
  546. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
  547. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
  548. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
  549. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
  550. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
  551. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
  552. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
  553. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
  554. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
  555. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
  556. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
  557. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
  558. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/__init__.py +0 -0
  559. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
  560. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +0 -0
  561. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
  562. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
  563. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +0 -0
  564. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
  565. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
  566. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/__init__.py +0 -0
  567. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
  568. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
  569. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/conftest.py +0 -0
  570. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/db2/__init__.py +0 -0
  571. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
  572. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_metadata_extractor.py +0 -0
  573. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_registration.py +0 -0
  574. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
  575. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/__init__.py +0 -0
  576. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -0
  577. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
  578. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
  579. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
  580. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
  581. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
  582. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
  583. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
  584. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/oracle/test_oracle_xmltype.py +0 -0
  585. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
  586. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/query/test_normalization_render_context.py +0 -0
  587. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/query/test_template_object_name_bracketing.py +0 -0
  588. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/query/test_time_fraction_rendering.py +0 -0
  589. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/snowflake/test_snowflake_get_case_sensitive_columns.py +0 -0
  590. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/snowflake/test_snowflake_get_iceberg_format_version.py +0 -0
  591. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/__init__.py +0 -0
  592. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
  593. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
  594. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
  595. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
  596. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
  597. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
  598. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/__init__.py +0 -0
  599. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
  600. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -0
  601. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +0 -0
  602. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
  603. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_physical_target.py +0 -0
  604. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -0
  605. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_l1_character_length.py +0 -0
  606. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_l1_character_maximum_length.py +0 -0
  607. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +0 -0
  608. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
  609. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +0 -0
  610. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/sqlserver/test_sqlserver_uniqueidentifier_l3_normalization.py +0 -0
  611. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_accepted_transformation.py +0 -0
  612. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_arguments_manager_base.py +0 -0
  613. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_arguments_manager_factory.py +0 -0
  614. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_batched_metrics_queries.py +0 -0
  615. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
  616. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_case_sensitive_column_pairing.py +0 -0
  617. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_catalog_column_size.py +0 -0
  618. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
  619. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_cell_data_validator.py +0 -0
  620. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_cell_data_validator_threading.py +0 -0
  621. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_cell_validation_query_generation.py +0 -0
  622. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_column_grouping.py +0 -0
  623. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_column_metadata.py +0 -0
  624. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_column_normalization_override.py +0 -0
  625. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_column_selection.py +0 -0
  626. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_column_selection_actual_names.py +0 -0
  627. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_comparison_orchestrator.py +0 -0
  628. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_file_editor.py +0 -0
  629. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_file_synchronizer.py +0 -0
  630. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_loader.py +0 -0
  631. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_configuration_model.py +0 -0
  632. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_connection_pool.py +0 -0
  633. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_connector_failure_tracker.py +0 -0
  634. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_cpu_optimizer.py +0 -0
  635. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_custom_templates_models.py +0 -0
  636. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_decfloat_l2_min_max.py +0 -0
  637. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_decimal_text_canonical.py +0 -0
  638. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_dv_tracing.py +0 -0
  639. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_empty_query_result_columns.py +0 -0
  640. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_error_classifier.py +0 -0
  641. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_escape_odbc_value.py +0 -0
  642. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_execute_query_internal.py +0 -0
  643. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_executor_factory.py +0 -0
  644. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_extraction_keeps_catalog_column_spelling.py +0 -0
  645. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_fetch_schema_metadata.py +0 -0
  646. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_float_bit_canonical.py +0 -0
  647. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_get_configuration_file.py +0 -0
  648. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_get_target_cols.py +0 -0
  649. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_hatch_linter_environment.py +0 -0
  650. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_dataframe.py +0 -0
  651. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_io.py +0 -0
  652. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_polars_cast.py +0 -0
  653. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_helper_polars_cast_threading.py +0 -0
  654. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_helpers.py +0 -0
  655. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_html_report_builder.py +0 -0
  656. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_index_key_format.py +0 -0
  657. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_internal_helpers.py +0 -0
  658. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_interval_common.py +0 -0
  659. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_iso_dv_common.py +0 -0
  660. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_l2_collation_metadata.py +0 -0
  661. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_l2_count_distinct_opt_in_config.py +0 -0
  662. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_logging_config.py +0 -0
  663. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_lossy_number_mapping.py +0 -0
  664. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_metric_identifier_rendering.py +0 -0
  665. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_exclusion.py +0 -0
  666. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_reshape.py +0 -0
  667. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_result_shape.py +0 -0
  668. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_metrics_tolerance.py +0 -0
  669. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_normalize_shape_aware.py +0 -0
  670. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_numeric_scale_resolution.py +0 -0
  671. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_object_type_criterion.py +0 -0
  672. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
  673. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_period_common.py +0 -0
  674. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_platform_bridge.py +0 -0
  675. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_postgresql_tz_normalization.py +0 -0
  676. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_pushdown_diff_sql.py +0 -0
  677. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_query_cell_level_validation.py +0 -0
  678. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_query_executor.py +0 -0
  679. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_query_generator_numeric_scale.py +0 -0
  680. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_query_metrics_level_validation.py +0 -0
  681. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_query_to_dataframe.py +0 -0
  682. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_query_validator.py +0 -0
  683. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_qvci_fallback.py +0 -0
  684. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
  685. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_qvci_fallback_triggers.py +0 -0
  686. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_redshift_iceberg_timestamp_metrics.py +0 -0
  687. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_report_metadata.py +0 -0
  688. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_cell_level_validation.py +0 -0
  689. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
  690. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_snapshot_generation.py +0 -0
  691. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_snapshot_validation.py +0 -0
  692. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_to_dataframe.py +0 -0
  693. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_result_set_validator.py +0 -0
  694. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_row_count_bigint_overflow.py +0 -0
  695. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_row_data_validator.py +0 -0
  696. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_row_data_validator_empty_chunk.py +0 -0
  697. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_row_hash_column_delimiter.py +0 -0
  698. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_row_partitioning_strategy.py +0 -0
  699. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
  700. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_row_validation_report_buffer.py +0 -0
  701. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_schema_column_selection.py +0 -0
  702. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_schema_query_capability.py +0 -0
  703. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_shutdown_coordinator.py +0 -0
  704. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_signature_external_table.py +0 -0
  705. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_signature_row_md5_query.py +0 -0
  706. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_snapshot_validation_statements.py +0 -0
  707. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_snowflake_arguments_manager.py +0 -0
  708. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
  709. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
  710. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_source_validation_executor.py +0 -0
  711. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sql_catalog_template_guard.py +0 -0
  712. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sql_literal_jinja_filter.py +0 -0
  713. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sqlite_validation_connection.py +0 -0
  714. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
  715. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sync_executor_qvci_fallback.py +0 -0
  716. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_sync_schema_validation_real_callbacks.py +0 -0
  717. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_table_column_metadata_model.py +0 -0
  718. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_table_configuration.py +0 -0
  719. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_table_context.py +0 -0
  720. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_table_metadata_processor.py +0 -0
  721. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_table_snapshot_generation.py +0 -0
  722. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_table_snapshot_validation.py +0 -0
  723. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_target_platform_factory.py +0 -0
  724. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_telemetry.py +0 -0
  725. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_templates_loader_manager.py +0 -0
  726. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_iso_normalization.py +0 -0
  727. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
  728. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_teradata_type_code_mapping.py +0 -0
  729. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_timestamp_golden_vectors.py +0 -0
  730. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_trace_bridge.py +0 -0
  731. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_configuration.py +0 -0
  732. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_database_connection.py +0 -0
  733. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_execution_context.py +0 -0
  734. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_progress_reporter.py +0 -0
  735. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_report_buffer.py +0 -0
  736. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_report_status.py +0 -0
  737. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_validation_templates_dto.py +0 -0
  738. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_vector_common.py +0 -0
  739. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_vector_normalization.py +0 -0
  740. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_view_configuration.py +0 -0
  741. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/test_warm_start.py +0 -0
  742. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/utils/__init__.py +0 -0
  743. {snowflake_data_validation-1.47.0 → snowflake_data_validation-1.48.0}/tests/unit/utils/test_constants.py +0 -0
  744. {snowflake_data_validation-1.47.0 → 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.47.0
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/
@@ -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.15; extra == 'scai'
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 and object-type lookups) 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.
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:
@@ -266,10 +266,37 @@ empty result becomes an empty DataFrame with no columns.
266
266
 
267
267
  For configuration options and examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
268
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
+
269
271
  ---
270
272
 
271
273
  ## Changelog
272
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
+
273
300
  ### v1.47.0
274
301
 
275
302
  **New features**
@@ -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 and object-type lookups) 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.
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:
@@ -175,10 +175,37 @@ empty result becomes an empty DataFrame with no columns.
175
175
 
176
176
  For configuration options and examples, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
177
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
+
178
180
  ---
179
181
 
180
182
  ## Changelog
181
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
+
182
209
  ### v1.47.0
183
210
 
184
211
  **New features**
@@ -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.15",
109
+ "snowflake-code-unit-registry>=0.9.19",
110
110
  ]
111
111
 
112
112
  [project.urls]
@@ -18,27 +18,16 @@ BIGINT:
18
18
  max:
19
19
  metric_query: MAX("{{ col_name }}")
20
20
  metric_return_datatype: BIGINT
21
- count_distinct:
22
- metric_query: COUNT(DISTINCT "{{ col_name }}")
23
- metric_return_datatype: INT
24
21
  count_null:
25
22
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
26
23
  metric_return_datatype: INT
27
24
  count_zero:
28
25
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
29
26
  metric_return_datatype: INT
30
- avg:
31
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
32
- metric_return_datatype: FLOAT
33
- metric_column_modifier: "% 2097143"
34
27
  sum:
35
28
  metric_query: SUM("{{ col_name }}" {{ modifier }})
36
29
  metric_return_datatype: BIGINT
37
30
  metric_column_modifier: "% 2097143"
38
- stddev:
39
- metric_query: STDEVP(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
40
- metric_return_datatype: FLOAT
41
- metric_column_modifier: "% 2097143"
42
31
 
43
32
  INT:
44
33
  min:
@@ -47,19 +36,12 @@ INT:
47
36
  max:
48
37
  metric_query: MAX("{{ col_name }}")
49
38
  metric_return_datatype: INT
50
- count_distinct:
51
- metric_query: COUNT(DISTINCT "{{ col_name }}")
52
- metric_return_datatype: INT
53
39
  count_null:
54
40
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
55
41
  metric_return_datatype: INT
56
42
  count_zero:
57
43
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
58
44
  metric_return_datatype: INT
59
- avg:
60
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
61
- metric_return_datatype: FLOAT
62
- metric_column_modifier: "% 2097143"
63
45
  sum:
64
46
  metric_query: SUM(CAST("{{ col_name }}" {{ modifier }} AS BIGINT))
65
47
  metric_return_datatype: BIGINT
@@ -69,10 +51,6 @@ INT:
69
51
  # and spread small (inventory.inv_date_sk: 0-5.5 vs Snowflake 3.5 on identical data).
70
52
  # 32-bit values keep n*SUM(x^2) inside DECIMAL(38) even with the modifier off; BIGINT
71
53
  # stays on FLOAT STDEVP because raw 64-bit squares would overflow it.
72
- stddev:
73
- metric_query: SQRT(CAST(COUNT_BIG("{{ col_name }}") * SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0)) * CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) - SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) * SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) AS FLOAT)) / NULLIF(COUNT_BIG("{{ col_name }}"), 0)
74
- metric_return_datatype: FLOAT
75
- metric_column_modifier: "% 2097143"
76
54
 
77
55
  SMALLINT:
78
56
  min:
@@ -81,19 +59,12 @@ SMALLINT:
81
59
  max:
82
60
  metric_query: MAX("{{ col_name }}")
83
61
  metric_return_datatype: SMALLINT
84
- count_distinct:
85
- metric_query: COUNT(DISTINCT "{{ col_name }}")
86
- metric_return_datatype: INT
87
62
  count_null:
88
63
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
89
64
  metric_return_datatype: INT
90
65
  count_zero:
91
66
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
92
67
  metric_return_datatype: INT
93
- avg:
94
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
95
- metric_return_datatype: FLOAT
96
- metric_column_modifier: "% 2097143"
97
68
  sum:
98
69
  metric_query: SUM(CAST("{{ col_name }}" {{ modifier }} AS BIGINT))
99
70
  metric_return_datatype: BIGINT
@@ -103,10 +74,6 @@ SMALLINT:
103
74
  # and spread small (inventory.inv_date_sk: 0-5.5 vs Snowflake 3.5 on identical data).
104
75
  # 32-bit values keep n*SUM(x^2) inside DECIMAL(38) even with the modifier off; BIGINT
105
76
  # stays on FLOAT STDEVP because raw 64-bit squares would overflow it.
106
- stddev:
107
- metric_query: SQRT(CAST(COUNT_BIG("{{ col_name }}") * SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0)) * CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) - SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) * SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) AS FLOAT)) / NULLIF(COUNT_BIG("{{ col_name }}"), 0)
108
- metric_return_datatype: FLOAT
109
- metric_column_modifier: "% 2097143"
110
77
 
111
78
  TINYINT:
112
79
  min:
@@ -115,19 +82,12 @@ TINYINT:
115
82
  max:
116
83
  metric_query: MAX("{{ col_name }}")
117
84
  metric_return_datatype: TINYINT
118
- count_distinct:
119
- metric_query: COUNT(DISTINCT "{{ col_name }}")
120
- metric_return_datatype: INT
121
85
  count_null:
122
86
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
123
87
  metric_return_datatype: INT
124
88
  count_zero:
125
89
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
126
90
  metric_return_datatype: INT
127
- avg:
128
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
129
- metric_return_datatype: FLOAT
130
- metric_column_modifier: "% 2097143"
131
91
  sum:
132
92
  metric_query: SUM(CAST("{{ col_name }}" {{ modifier }} AS BIGINT))
133
93
  metric_return_datatype: BIGINT
@@ -137,10 +97,6 @@ TINYINT:
137
97
  # and spread small (inventory.inv_date_sk: 0-5.5 vs Snowflake 3.5 on identical data).
138
98
  # 32-bit values keep n*SUM(x^2) inside DECIMAL(38) even with the modifier off; BIGINT
139
99
  # stays on FLOAT STDEVP because raw 64-bit squares would overflow it.
140
- stddev:
141
- metric_query: SQRT(CAST(COUNT_BIG("{{ col_name }}") * SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0)) * CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) - SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) * SUM(CAST("{{ col_name }}" {{ modifier }} AS DECIMAL(38, 0))) AS FLOAT)) / NULLIF(COUNT_BIG("{{ col_name }}"), 0)
142
- metric_return_datatype: FLOAT
143
- metric_column_modifier: "% 2097143"
144
100
 
145
101
  DECIMAL:
146
102
  min:
@@ -149,27 +105,16 @@ DECIMAL:
149
105
  max:
150
106
  metric_query: MAX("{{ col_name }}")
151
107
  metric_return_datatype: DECIMAL
152
- count_distinct:
153
- metric_query: COUNT(DISTINCT "{{ col_name }}")
154
- metric_return_datatype: INT
155
108
  count_null:
156
109
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
157
110
  metric_return_datatype: INT
158
111
  count_zero:
159
112
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
160
113
  metric_return_datatype: INT
161
- avg:
162
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
163
- metric_return_datatype: FLOAT
164
- metric_column_modifier: "% 2097143"
165
114
  sum:
166
115
  metric_query: SUM("{{ col_name }}" {{ modifier }})
167
116
  metric_return_datatype: DECIMAL
168
117
  metric_column_modifier: "% 2097143"
169
- stddev:
170
- metric_query: STDEVP(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
171
- metric_return_datatype: FLOAT
172
- metric_column_modifier: "% 2097143"
173
118
 
174
119
  NUMERIC:
175
120
  min:
@@ -178,27 +123,16 @@ NUMERIC:
178
123
  max:
179
124
  metric_query: MAX("{{ col_name }}")
180
125
  metric_return_datatype: NUMERIC
181
- count_distinct:
182
- metric_query: COUNT(DISTINCT "{{ col_name }}")
183
- metric_return_datatype: INT
184
126
  count_null:
185
127
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
186
128
  metric_return_datatype: INT
187
129
  count_zero:
188
130
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
189
131
  metric_return_datatype: INT
190
- avg:
191
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
192
- metric_return_datatype: FLOAT
193
- metric_column_modifier: "% 2097143"
194
132
  sum:
195
133
  metric_query: SUM("{{ col_name }}" {{ modifier }})
196
134
  metric_return_datatype: NUMERIC
197
135
  metric_column_modifier: "% 2097143"
198
- stddev:
199
- metric_query: STDEVP(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
200
- metric_return_datatype: FLOAT
201
- metric_column_modifier: "% 2097143"
202
136
 
203
137
  MONEY:
204
138
  min:
@@ -207,27 +141,16 @@ MONEY:
207
141
  max:
208
142
  metric_query: MAX("{{ col_name }}")
209
143
  metric_return_datatype: MONEY
210
- count_distinct:
211
- metric_query: COUNT(DISTINCT "{{ col_name }}")
212
- metric_return_datatype: INT
213
144
  count_null:
214
145
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
215
146
  metric_return_datatype: INT
216
147
  count_zero:
217
148
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
218
149
  metric_return_datatype: INT
219
- avg:
220
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
221
- metric_return_datatype: FLOAT
222
- metric_column_modifier: "% 2097143"
223
150
  sum:
224
151
  metric_query: SUM("{{ col_name }}" {{ modifier }})
225
152
  metric_return_datatype: MONEY
226
153
  metric_column_modifier: "% 2097143"
227
- stddev:
228
- metric_query: STDEVP(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
229
- metric_return_datatype: FLOAT
230
- metric_column_modifier: "% 2097143"
231
154
 
232
155
  SMALLMONEY:
233
156
  min:
@@ -236,31 +159,17 @@ SMALLMONEY:
236
159
  max:
237
160
  metric_query: MAX("{{ col_name }}")
238
161
  metric_return_datatype: SMALLMONEY
239
- count_distinct:
240
- metric_query: COUNT(DISTINCT "{{ col_name }}")
241
- metric_return_datatype: INT
242
162
  count_null:
243
163
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
244
164
  metric_return_datatype: INT
245
165
  count_zero:
246
166
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
247
167
  metric_return_datatype: INT
248
- avg:
249
- metric_query: AVG(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
250
- metric_return_datatype: FLOAT
251
- metric_column_modifier: "% 2097143"
252
168
  sum:
253
169
  metric_query: SUM("{{ col_name }}" {{ modifier }})
254
170
  metric_return_datatype: SMALLMONEY
255
171
  metric_column_modifier: "% 2097143"
256
- stddev:
257
- metric_query: STDEVP(CAST("{{ col_name }}" {{ modifier }} AS FLOAT))
258
- metric_return_datatype: FLOAT
259
- metric_column_modifier: "% 2097143"
260
172
 
261
- # avg/sum/stddev aggregate the binary64 value, as Snowflake aggregates its FLOAT
262
- # (SNOW-4314808); REAL widens exactly. T-SQL has no FLOAT %, so the generator
263
- # renders {{ modifier }} on this operand as Snowflake's float remainder (tsql_float_remainder.py).
264
173
  FLOAT:
265
174
  min:
266
175
  metric_query: MIN("{{ col_name }}")
@@ -268,29 +177,18 @@ FLOAT:
268
177
  max:
269
178
  metric_query: MAX("{{ col_name }}")
270
179
  metric_return_datatype: FLOAT
271
- count_distinct:
272
- metric_query: COUNT(DISTINCT "{{ col_name }}")
273
- metric_return_datatype: INT
274
180
  count_null:
275
181
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
276
182
  metric_return_datatype: INT
183
+ count_positive:
184
+ metric_query: SUM(CASE WHEN "{{ col_name }}" > 0 AND "{{ col_name }}" = "{{ col_name }}" THEN 1 ELSE 0 END)
185
+ metric_return_datatype: INT
186
+ count_negative:
187
+ metric_query: SUM(CASE WHEN "{{ col_name }}" < 0 AND "{{ col_name }}" = "{{ col_name }}" THEN 1 ELSE 0 END)
188
+ metric_return_datatype: INT
277
189
  count_zero:
278
190
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
279
191
  metric_return_datatype: INT
280
- avg:
281
- metric_query: AVG(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
282
- metric_return_datatype: FLOAT
283
- metric_column_modifier: "% 2097143"
284
- sum:
285
- metric_query: SUM(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
286
- metric_return_datatype: FLOAT
287
- metric_column_modifier: "% 2097143"
288
- stddev:
289
- metric_query: STDEVP(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
290
- metric_return_datatype: FLOAT
291
- metric_column_modifier: "% 2097143"
292
-
293
- # avg/sum/stddev widen to binary64, as FLOAT's do (SNOW-4314808).
294
192
  REAL:
295
193
  min:
296
194
  metric_query: MIN("{{ col_name }}")
@@ -298,29 +196,18 @@ REAL:
298
196
  max:
299
197
  metric_query: MAX("{{ col_name }}")
300
198
  metric_return_datatype: REAL
301
- count_distinct:
302
- metric_query: COUNT(DISTINCT "{{ col_name }}")
303
- metric_return_datatype: INT
304
199
  count_null:
305
200
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
306
201
  metric_return_datatype: INT
202
+ count_positive:
203
+ metric_query: SUM(CASE WHEN "{{ col_name }}" > 0 AND "{{ col_name }}" = "{{ col_name }}" THEN 1 ELSE 0 END)
204
+ metric_return_datatype: INT
205
+ count_negative:
206
+ metric_query: SUM(CASE WHEN "{{ col_name }}" < 0 AND "{{ col_name }}" = "{{ col_name }}" THEN 1 ELSE 0 END)
207
+ metric_return_datatype: INT
307
208
  count_zero:
308
209
  metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
309
210
  metric_return_datatype: INT
310
- avg:
311
- metric_query: AVG(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
312
- metric_return_datatype: FLOAT
313
- metric_column_modifier: "% 2097143"
314
- sum:
315
- metric_query: SUM(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
316
- metric_return_datatype: REAL
317
- metric_column_modifier: "% 2097143"
318
- stddev:
319
- metric_query: STDEVP(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
320
- metric_return_datatype: FLOAT
321
- metric_column_modifier: "% 2097143"
322
-
323
- # ---- Boolean type ----
324
211
 
325
212
  BIT:
326
213
  count_true:
@@ -346,40 +233,33 @@ CHAR:
346
233
  count_empty:
347
234
  metric_query: SUM(CASE WHEN LEN(RTRIM("{{ col_name }}")) = 0 THEN 1 ELSE 0 END)
348
235
  metric_return_datatype: INT
349
- count_distinct:
350
- metric_query: COUNT(DISTINCT {{ measure_collation_prefix }}RTRIM("{{ col_name }}"){{ measure_collation_suffix }})
351
- metric_return_datatype: INT
352
236
  count_null:
353
237
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
354
238
  metric_return_datatype: INT
355
- avg:
356
- metric_query: AVG(CAST(LEN(RTRIM("{{ col_name }}")) AS FLOAT))
239
+ sum:
240
+ metric_query: SUM(CAST(LEN(RTRIM("{{ col_name }}")) AS FLOAT))
357
241
  metric_return_datatype: FLOAT
358
- metric_column_modifier: "% 2097143"
359
242
 
360
243
  VARCHAR:
361
244
  # Characters, trailing spaces trimmed (SNOW-4292391, as SQL Server's SNOW-4283493).
362
245
  # DATALENGTH counted bytes, so 'É' under a UTF-8 collation was 2 against Snowflake's 1.
363
246
  # LEN ignores trailing spaces and the Snowflake side RTRIMs, so 'abc ' is 3 and ' '
364
- # is empty on both sides. count_distinct keeps trailing spaces significant.
247
+ # is empty on both sides.
365
248
  min:
366
249
  metric_query: MIN(LEN("{{ col_name }}"))
367
250
  metric_return_datatype: INT
368
251
  max:
369
252
  metric_query: MAX(LEN("{{ col_name }}"))
370
253
  metric_return_datatype: INT
371
- avg:
372
- metric_query: AVG(CAST(LEN("{{ col_name }}") AS FLOAT))
373
- metric_return_datatype: FLOAT
374
254
  count_empty:
375
255
  metric_query: SUM(CASE WHEN LEN("{{ col_name }}") = 0 THEN 1 ELSE 0 END)
376
256
  metric_return_datatype: INT
377
- count_distinct:
378
- metric_query: COUNT(DISTINCT {{ measure_collation_prefix }}CAST('|' + "{{ col_name }}" + '|' AS VARCHAR(MAX)){{ measure_collation_suffix }})
379
- metric_return_datatype: INT
380
257
  count_null:
381
258
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
382
259
  metric_return_datatype: INT
260
+ sum:
261
+ metric_query: SUM(CAST(LEN("{{ col_name }}") AS FLOAT))
262
+ metric_return_datatype: FLOAT
383
263
 
384
264
  NCHAR:
385
265
  min:
@@ -388,18 +268,15 @@ NCHAR:
388
268
  max:
389
269
  metric_query: MAX(LEN(RTRIM("{{ col_name }}")))
390
270
  metric_return_datatype: INT
391
- avg:
392
- metric_query: AVG(CAST(LEN(RTRIM("{{ col_name }}")) AS FLOAT))
393
- metric_return_datatype: FLOAT
394
271
  count_empty:
395
272
  metric_query: SUM(CASE WHEN LEN(RTRIM("{{ col_name }}")) = 0 THEN 1 ELSE 0 END)
396
273
  metric_return_datatype: INT
397
- count_distinct:
398
- metric_query: COUNT(DISTINCT {{ measure_collation_prefix }}RTRIM("{{ col_name }}"){{ measure_collation_suffix }})
399
- metric_return_datatype: INT
400
274
  count_null:
401
275
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
402
276
  metric_return_datatype: INT
277
+ sum:
278
+ metric_query: SUM(CAST(LEN(RTRIM("{{ col_name }}")) AS FLOAT))
279
+ metric_return_datatype: FLOAT
403
280
 
404
281
  NVARCHAR:
405
282
  # As VARCHAR above (SNOW-4292391). count_empty uses the same LEN, so ' ' is empty
@@ -411,18 +288,15 @@ NVARCHAR:
411
288
  max:
412
289
  metric_query: MAX(LEN("{{ col_name }}"))
413
290
  metric_return_datatype: INT
414
- avg:
415
- metric_query: AVG(CAST(LEN("{{ col_name }}") AS FLOAT))
416
- metric_return_datatype: FLOAT
417
291
  count_empty:
418
292
  metric_query: SUM(CASE WHEN LEN("{{ col_name }}") = 0 THEN 1 ELSE 0 END)
419
293
  metric_return_datatype: INT
420
- count_distinct:
421
- metric_query: COUNT(DISTINCT {{ measure_collation_prefix }}CAST(N'|' + CAST("{{ col_name }}" AS NVARCHAR(MAX)) + N'|' AS NVARCHAR(MAX)){{ measure_collation_suffix }})
422
- metric_return_datatype: INT
423
294
  count_null:
424
295
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
425
296
  metric_return_datatype: INT
297
+ sum:
298
+ metric_query: SUM(CAST(LEN("{{ col_name }}") AS FLOAT))
299
+ metric_return_datatype: FLOAT
426
300
 
427
301
  # ---- Date / Time types ----
428
302
 
@@ -517,9 +391,6 @@ VARBINARY:
517
391
  # ---- Other types ----
518
392
 
519
393
  UNIQUEIDENTIFIER:
520
- count_distinct:
521
- metric_query: COUNT(DISTINCT "{{ col_name }}")
522
- metric_return_datatype: INT
523
394
  count_null:
524
395
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
525
396
  metric_return_datatype: INT
@@ -527,9 +398,6 @@ UNIQUEIDENTIFIER:
527
398
  # ---- Default fallback ----
528
399
 
529
400
  DEFAULT:
530
- count_distinct:
531
- metric_query: COUNT(DISTINCT "{{ col_name }}")
532
- metric_return_datatype: INT
533
401
  count_null:
534
402
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
535
403
  metric_return_datatype: INT
@@ -55,6 +55,9 @@ TIME: LEFT(SUBSTRING(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7))
55
55
  # Iceberg compatible TIME stored as VARCHAR (CETAS): the extract's own text, TIME(7)
56
56
  # widened then '00', nine digits whatever the scale. '+' keeps NULL as NULL.
57
57
  TIME_ICEBERG: CAST(CAST("{{ col_name }}" AS TIME(7)) AS VARCHAR(16)) + '00'
58
+ # CETAS text. Seven digits, not the six-digit DATETIME2 / DATETIMEOFFSET lines below.
59
+ DATETIME2_ICEBERG: STUFF(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 11, 1, 'T') + '00'
60
+ DATETIMEOFFSET_ICEBERG: STUFF(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 11, 1, 'T') + '00' + DATENAME(TZOFFSET, "{{ col_name }}")
58
61
  DATETIME: STUFF(CONVERT(VARCHAR(27), CAST(CAST("{{ col_name }}" AS DATETIME2(3)) AS DATETIME2(7)), 121), 11, 1, 'T') + '00'
59
62
  DATETIME2: LEFT(STUFF(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 11, 1, 'T'), 26) + '000'
60
63
  SMALLDATETIME: CONVERT(VARCHAR(19), "{{ col_name }}", 126) + '.000000000'
@@ -1,7 +1,7 @@
1
1
  {% import 'query_modifiers.sql.j2' as qm with context %}
2
2
  {{ qm.locking_prefix(query_modifiers) }}
3
3
  WITH rc_cte AS (
4
- SELECT COUNT_BIG(*) AS ROW_COUNT {{ qm.render_from_clause(query_modifiers, fully_qualified_name) }} {% if has_where_clause %} WHERE {{ where_clause }} {% endif %}
4
+ {% if omit_row_count %}SELECT CAST(0 AS BIGINT) AS ROW_COUNT{% else %}SELECT COUNT_BIG(*) AS ROW_COUNT {{ qm.render_from_clause(query_modifiers, fully_qualified_name) }} {% if has_where_clause %} WHERE {{ where_clause }} {% endif %}{% endif %}
5
5
  )
6
6
  SELECT
7
7
  C.COLUMN_NAME AS COLUMN_VALIDATED,
@@ -40,6 +40,7 @@ from snowflake.snowflake_data_validation.query.numeric_scale_resolution import (
40
40
  from snowflake.snowflake_data_validation.query.query_generator_base import (
41
41
  QueryGeneratorBase,
42
42
  resolve_table_context_modifiers,
43
+ tsql_unsigned_hex_slice_sql,
43
44
  )
44
45
  from snowflake.snowflake_data_validation.query.tsql_float_bits import (
45
46
  build_tsql_float_bit_canonical_expr,
@@ -96,6 +97,10 @@ class QueryGeneratorAzureSynapse(TsqlFloatMetricModifierMixin, QueryGeneratorBas
96
97
  character_set_resolver=SqlServerCharacterSetResolver(),
97
98
  )
98
99
 
100
+ def unsigned_hex_slice_sql(self, column: str, start: int, length: int = 8) -> str | None:
101
+ """Read hex characters of *column* as an unsigned integer."""
102
+ return tsql_unsigned_hex_slice_sql(column, start, length)
103
+
99
104
  def _measure_collation_tokens(self, column, metric_name: str) -> tuple[str, str]:
100
105
  return tsql_measure_collation_tokens(
101
106
  Platform.AZURE_SYNAPSE,