snowflake-data-validation 1.45.3__tar.gz → 1.46.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/PKG-INFO +29 -3
  2. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/README.md +26 -0
  3. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/pyproject.toml +3 -3
  4. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +4 -4
  5. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +1 -1
  6. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +5 -0
  7. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +38 -9
  8. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +6 -4
  9. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +3 -20
  10. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/normalization_render_context.py +15 -3
  11. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +14 -16
  12. snowflake_data_validation-1.46.0/src/snowflake/snowflake_data_validation/query/tsql_float_bits.py +66 -0
  13. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +30 -0
  14. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +26 -28
  15. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +1 -1
  16. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +10 -0
  17. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +38 -4
  18. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +1 -1
  19. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +9 -1
  20. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +16 -8
  21. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +3 -1
  22. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +4 -4
  23. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +6 -1
  24. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +2 -1
  25. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/constants.py +28 -2
  26. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +13 -0
  27. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +102 -19
  28. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +17 -4
  29. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +0 -3
  30. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +8 -1
  31. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +54 -13
  32. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +59 -4
  33. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_table_metadata_float_precision.py +2 -2
  34. snowflake_data_validation-1.46.0/tests/unit/Teradata/test_teradata_table_metadata_object_type.py +93 -0
  35. snowflake_data_validation-1.46.0/tests/unit/Teradata/test_teradata_unicode_character_length.py +98 -0
  36. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +3 -3
  37. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/query/test_normalization_render_context.py +12 -1
  38. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_physical_target.py +0 -2
  39. snowflake_data_validation-1.46.0/tests/unit/sqlserver/test_sqlserver_l1_character_maximum_length.py +87 -0
  40. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_row_queries.py +47 -2
  41. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +1 -1
  42. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cell_validation_query_generation.py +8 -8
  43. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_data_validator.py +12 -6
  44. snowflake_data_validation-1.46.0/tests/unit/test_decfloat_l2_min_max.py +240 -0
  45. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_float_bit_canonical.py +38 -17
  46. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_polars_cast.py +47 -0
  47. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_iceberg_dv_l3_normalization.py +92 -22
  48. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_iso_dv_common.py +44 -0
  49. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_reshape.py +20 -0
  50. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_tolerance.py +33 -0
  51. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_pushdown_diff_sql.py +15 -0
  52. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_cell_level_validation.py +18 -0
  53. snowflake_data_validation-1.46.0/tests/unit/test_redshift_iceberg_timestamp_metrics.py +175 -0
  54. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_cell_level_validation.py +74 -0
  55. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_validator.py +42 -0
  56. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_templates_loader_manager.py +63 -1
  57. snowflake_data_validation-1.45.3/tests/unit/test_redshift_iceberg_timestamp_metrics.py +0 -94
  58. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/.gitignore +0 -0
  59. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/LICENSE +0 -0
  60. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/docs/README.md +0 -0
  61. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
  62. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
  63. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
  64. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
  65. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
  66. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
  67. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
  68. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
  69. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
  70. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +0 -0
  71. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +0 -0
  72. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
  73. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
  74. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
  75. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
  76. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
  77. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
  78. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
  79. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
  80. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
  81. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
  82. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
  83. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
  84. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
  85. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +0 -0
  86. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +0 -0
  87. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
  88. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
  89. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
  90. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +0 -0
  91. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
  92. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
  93. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
  94. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
  95. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
  96. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
  97. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
  98. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
  99. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
  100. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
  101. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
  102. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
  103. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
  104. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
  105. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
  106. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
  107. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
  108. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
  109. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
  110. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
  111. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
  112. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
  113. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +0 -0
  114. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
  115. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
  116. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +0 -0
  117. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +0 -0
  118. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
  119. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
  120. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
  121. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -0
  122. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
  123. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
  124. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
  125. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +0 -0
  126. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
  127. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
  128. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
  129. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -0
  130. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
  131. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
  132. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +0 -0
  133. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
  134. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
  135. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
  136. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
  137. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +0 -0
  138. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +0 -0
  139. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
  140. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
  141. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
  142. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
  143. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
  144. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
  145. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
  146. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
  147. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
  148. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
  149. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +0 -0
  150. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
  151. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +0 -0
  152. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
  153. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
  154. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
  155. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
  156. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
  157. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
  158. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
  159. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
  160. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
  161. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
  162. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
  163. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
  164. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
  165. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
  166. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
  167. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
  168. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_insert_template.sql.j2 +0 -0
  169. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_table_template.sql.j2 +0 -0
  170. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_insert_template.sql.j2 +0 -0
  171. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_table_template.sql.j2 +0 -0
  172. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
  173. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
  174. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
  175. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
  176. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
  177. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
  178. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +0 -0
  179. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
  180. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
  181. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
  182. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
  183. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
  184. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
  185. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
  186. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +0 -0
  187. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
  188. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
  189. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
  190. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
  191. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
  192. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
  193. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
  194. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
  195. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
  196. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
  197. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
  198. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
  199. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
  200. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
  201. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
  202. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
  203. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
  204. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
  205. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
  206. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
  207. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
  208. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
  209. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
  210. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
  211. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
  212. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
  213. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
  214. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
  215. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
  216. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
  217. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
  218. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
  219. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -0
  220. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
  221. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
  222. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
  223. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
  224. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
  225. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
  226. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
  227. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
  228. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
  229. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
  230. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
  231. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
  232. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
  233. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
  234. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
  235. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
  236. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
  237. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
  238. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +0 -0
  239. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
  240. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
  241. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
  242. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +0 -0
  243. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
  244. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
  245. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
  246. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +0 -0
  247. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +0 -0
  248. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +0 -0
  249. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
  250. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
  251. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
  252. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
  253. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
  254. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
  255. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
  256. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
  257. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
  258. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
  259. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
  260. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
  261. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
  262. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
  263. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
  264. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
  265. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_show_columns_query.sql.j2 +0 -0
  266. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
  267. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
  268. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
  269. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
  270. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
  271. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
  272. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +0 -0
  273. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
  274. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
  275. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
  276. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
  277. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
  278. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
  279. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
  280. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
  281. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
  282. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
  283. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
  284. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
  285. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +0 -0
  286. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
  287. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
  288. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
  289. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
  290. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
  291. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
  292. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_iceberg_format_version.sql.j2 +0 -0
  293. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
  294. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
  295. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +0 -0
  296. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
  297. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
  298. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
  299. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
  300. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
  301. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
  302. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
  303. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
  304. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
  305. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
  306. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
  307. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
  308. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
  309. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
  310. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
  311. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
  312. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
  313. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
  314. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
  315. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
  316. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
  317. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +0 -0
  318. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
  319. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
  320. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
  321. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
  322. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
  323. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
  324. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +0 -0
  325. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
  326. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
  327. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
  328. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
  329. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
  330. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
  331. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
  332. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
  333. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
  334. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
  335. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
  336. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
  337. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
  338. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
  339. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
  340. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +0 -0
  341. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
  342. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +0 -0
  343. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
  344. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
  345. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
  346. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
  347. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
  348. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
  349. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
  350. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
  351. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
  352. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
  353. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
  354. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
  355. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
  356. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
  357. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +0 -0
  358. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +0 -0
  359. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_uniqueidentifier_normalization.py +0 -0
  360. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
  361. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
  362. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
  363. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
  364. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
  365. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
  366. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
  367. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
  368. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +0 -0
  369. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
  370. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
  371. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
  372. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +0 -0
  373. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
  374. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
  375. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
  376. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
  377. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
  378. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
  379. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
  380. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
  381. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +0 -0
  382. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
  383. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
  384. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
  385. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -0
  386. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
  387. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
  388. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
  389. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
  390. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
  391. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
  392. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
  393. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
  394. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
  395. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
  396. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
  397. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
  398. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
  399. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
  400. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
  401. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
  402. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
  403. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
  404. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
  405. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
  406. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
  407. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
  408. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
  409. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
  410. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
  411. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/interval_common.py +0 -0
  412. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
  413. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
  414. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
  415. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
  416. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
  417. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
  418. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
  419. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
  420. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
  421. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
  422. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
  423. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
  424. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
  425. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
  426. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
  427. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
  428. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
  429. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
  430. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
  431. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
  432. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +0 -0
  433. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
  434. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
  435. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
  436. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
  437. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
  438. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
  439. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
  440. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/column_pairing.py +0 -0
  441. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +0 -0
  442. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +0 -0
  443. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
  444. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/lossy_number_mapping.py +0 -0
  445. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
  446. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
  447. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +0 -0
  448. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
  449. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
  450. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
  451. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +0 -0
  452. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
  453. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
  454. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +0 -0
  455. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
  456. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
  457. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
  458. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
  459. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
  460. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
  461. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
  462. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
  463. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
  464. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
  465. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
  466. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
  467. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
  468. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/.coveragerc +0 -0
  469. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/conftest.py +0 -0
  470. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/.coveragerc +0 -0
  471. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
  472. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_async_generation_integration.py +0 -0
  473. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_async_validation_integration.py +0 -0
  474. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_reference_integration.py +0 -0
  475. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_source_validation_integration.py +0 -0
  476. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/integration/test_sync_validation_integration.py +0 -0
  477. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +0 -0
  478. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_collation.py +0 -0
  479. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_enum_metadata.py +0 -0
  480. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
  481. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
  482. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
  483. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +0 -0
  484. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
  485. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
  486. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
  487. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_connector_redshift.py +0 -0
  488. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
  489. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_collation.py +0 -0
  490. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_columns_metadata_template.py +0 -0
  491. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +0 -0
  492. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_spatial_templates.py +0 -0
  493. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_split_schema_query.py +0 -0
  494. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_super_normalization.py +0 -0
  495. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
  496. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +0 -0
  497. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_connector_teradata.py +0 -0
  498. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
  499. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
  500. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_query_generator_teradata.py +0 -0
  501. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_collation.py +0 -0
  502. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_columns_metadata_precision_scale.py +0 -0
  503. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +0 -0
  504. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_spatial_templates.py +0 -0
  505. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
  506. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
  507. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/__init__.py +0 -0
  508. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
  509. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
  510. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
  511. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
  512. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
  513. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
  514. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
  515. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
  516. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
  517. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
  518. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
  519. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
  520. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
  521. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
  522. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
  523. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/__init__.py +0 -0
  524. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
  525. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +0 -0
  526. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
  527. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
  528. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
  529. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
  530. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
  531. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/__init__.py +0 -0
  532. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
  533. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_bigquery_spatial_templates.py +0 -0
  534. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_query_generator_bigquery.py +0 -0
  535. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
  536. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/conftest.py +0 -0
  537. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/__init__.py +0 -0
  538. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
  539. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_metadata_extractor.py +0 -0
  540. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_query_generator.py +0 -0
  541. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_registration.py +0 -0
  542. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
  543. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/db2/test_db2_xml_long_metrics.py +0 -0
  544. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/__init__.py +0 -0
  545. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -0
  546. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
  547. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
  548. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
  549. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
  550. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
  551. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
  552. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
  553. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_query_generator.py +0 -0
  554. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_query_modifiers.py +0 -0
  555. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
  556. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
  557. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
  558. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/query/test_time_fraction_rendering.py +0 -0
  559. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/snowflake/test_snowflake_get_case_sensitive_columns.py +0 -0
  560. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/snowflake/test_snowflake_get_iceberg_format_version.py +0 -0
  561. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +0 -0
  562. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/__init__.py +0 -0
  563. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
  564. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
  565. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
  566. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
  567. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
  568. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
  569. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/__init__.py +0 -0
  570. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
  571. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -0
  572. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +0 -0
  573. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
  574. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_json.py +0 -0
  575. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -0
  576. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_l1_character_length.py +0 -0
  577. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +0 -0
  578. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +0 -0
  579. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
  580. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +0 -0
  581. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +0 -0
  582. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_uniqueidentifier_l3_normalization.py +0 -0
  583. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +0 -0
  584. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +0 -0
  585. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_accepted_transformation.py +0 -0
  586. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_arguments_manager_base.py +0 -0
  587. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_arguments_manager_factory.py +0 -0
  588. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_batched_metrics_queries.py +0 -0
  589. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
  590. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_case_sensitive_column_pairing.py +0 -0
  591. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_catalog_column_size.py +0 -0
  592. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
  593. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cell_data_validator.py +0 -0
  594. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cell_data_validator_threading.py +0 -0
  595. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_charset_normalization.py +0 -0
  596. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_grouping.py +0 -0
  597. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_metadata.py +0 -0
  598. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_normalization_override.py +0 -0
  599. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_partitioning_strategy.py +0 -0
  600. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_selection.py +0 -0
  601. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_column_selection_actual_names.py +0 -0
  602. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_comparison_codec.py +0 -0
  603. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_comparison_orchestrator.py +0 -0
  604. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_file_editor.py +0 -0
  605. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_file_generator.py +0 -0
  606. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_file_synchronizer.py +0 -0
  607. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_loader.py +0 -0
  608. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_configuration_model.py +0 -0
  609. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_connection_pool.py +0 -0
  610. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_connector_failure_tracker.py +0 -0
  611. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_connector_snowflake.py +0 -0
  612. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_cpu_optimizer.py +0 -0
  613. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_custom_templates_models.py +0 -0
  614. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_decimal_text_canonical.py +0 -0
  615. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_dv_tracing.py +0 -0
  616. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_error_classifier.py +0 -0
  617. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_escape_odbc_value.py +0 -0
  618. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_executor_factory.py +0 -0
  619. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_extraction_keeps_catalog_column_spelling.py +0 -0
  620. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_fetch_schema_metadata.py +0 -0
  621. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_float_aggregate_reduction.py +0 -0
  622. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_float_canonical_templates.py +0 -0
  623. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_get_configuration_file.py +0 -0
  624. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_get_target_cols.py +0 -0
  625. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_dataframe.py +0 -0
  626. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_io.py +0 -0
  627. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helper_polars_cast_threading.py +0 -0
  628. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_helpers.py +0 -0
  629. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_html_report_builder.py +0 -0
  630. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_iceberg_v2_metrics_exclusion.py +0 -0
  631. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_index_key_format.py +0 -0
  632. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_internal_helpers.py +0 -0
  633. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_interval_common.py +0 -0
  634. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_l2_collation_metadata.py +0 -0
  635. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_l2_count_distinct_opt_in_config.py +0 -0
  636. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_logging_config.py +0 -0
  637. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_lossy_number_mapping.py +0 -0
  638. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metric_identifier_rendering.py +0 -0
  639. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_result_shape.py +0 -0
  640. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_metrics_templates_casts.py +0 -0
  641. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_normalize_shape_aware.py +0 -0
  642. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_numeric_scale_resolution.py +0 -0
  643. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_object_type_criterion.py +0 -0
  644. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
  645. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_period_common.py +0 -0
  646. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_platform_bridge.py +0 -0
  647. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_postgresql_normalization_templates.py +0 -0
  648. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_postgresql_tz_normalization.py +0 -0
  649. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_executor.py +0 -0
  650. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_generator_numeric_scale.py +0 -0
  651. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_metrics_level_validation.py +0 -0
  652. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_to_dataframe.py +0 -0
  653. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_query_validator.py +0 -0
  654. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_qvci_fallback.py +0 -0
  655. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
  656. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_qvci_fallback_triggers.py +0 -0
  657. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_redshift_native_timestamptz_ltz.py +0 -0
  658. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_report_metadata.py +0 -0
  659. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
  660. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_snapshot_generation.py +0 -0
  661. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_snapshot_validation.py +0 -0
  662. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_result_set_to_dataframe.py +0 -0
  663. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_count_bigint_overflow.py +0 -0
  664. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_data_validator.py +0 -0
  665. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_data_validator_empty_chunk.py +0 -0
  666. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_hash_column_delimiter.py +0 -0
  667. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_partitioning_strategy.py +0 -0
  668. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
  669. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_row_validation_report_buffer.py +0 -0
  670. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_schema_accepted_native_datatypes.py +0 -0
  671. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_schema_column_selection.py +0 -0
  672. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_schema_query_capability.py +0 -0
  673. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_shutdown_coordinator.py +0 -0
  674. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_signature_external_table.py +0 -0
  675. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_signature_row_md5_query.py +0 -0
  676. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snapshot_validation_statements.py +0 -0
  677. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snowflake_arguments_manager.py +0 -0
  678. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
  679. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
  680. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_source_validation_executor.py +0 -0
  681. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_spatial_wkt_canonicalization.py +0 -0
  682. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sql_catalog_template_guard.py +0 -0
  683. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sql_literal_jinja_filter.py +0 -0
  684. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sqlite_validation_connection.py +0 -0
  685. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
  686. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
  687. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sync_executor_qvci_fallback.py +0 -0
  688. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sync_schema_validation_real_callbacks.py +0 -0
  689. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_sync_validation_executor.py +0 -0
  690. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_column_metadata_model.py +0 -0
  691. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_configuration.py +0 -0
  692. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_context.py +0 -0
  693. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_metadata_processor.py +0 -0
  694. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_snapshot_generation.py +0 -0
  695. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_table_snapshot_validation.py +0 -0
  696. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_target_platform_factory.py +0 -0
  697. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_telemetry.py +0 -0
  698. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_iso_normalization.py +0 -0
  699. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_string_rtrim_policy.py +0 -0
  700. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
  701. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_teradata_type_code_mapping.py +0 -0
  702. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_timestamp_golden_vectors.py +0 -0
  703. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_trace_bridge.py +0 -0
  704. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_tsql_float_l2_aggregates.py +0 -0
  705. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_configuration.py +0 -0
  706. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_database_connection.py +0 -0
  707. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_execution_context.py +0 -0
  708. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_progress_reporter.py +0 -0
  709. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_report_buffer.py +0 -0
  710. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_report_status.py +0 -0
  711. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_validation_templates_dto.py +0 -0
  712. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_vector_bit_normalization.py +0 -0
  713. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_vector_common.py +0 -0
  714. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_vector_normalization.py +0 -0
  715. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_view_configuration.py +0 -0
  716. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/test_warm_start.py +0 -0
  717. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/utils/__init__.py +0 -0
  718. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/utils/test_constants.py +0 -0
  719. {snowflake_data_validation-1.45.3 → snowflake_data_validation-1.46.0}/tests/unit/utils/test_semi_structured_json_canonicalization.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: snowflake-data-validation
3
- Version: 1.45.3
3
+ Version: 1.46.0
4
4
  Summary: Snowflake Data Validation
5
5
  Project-URL: Bug Tracker, https://github.com/snowflake-eng/migrations-data-validation/issues
6
6
  Project-URL: Source code, https://github.com/snowflake-eng/migrations-data-validation/
@@ -38,7 +38,7 @@ Requires-Dist: pydantic-yaml>=1.4.0
38
38
  Requires-Dist: pydantic>=2.0
39
39
  Requires-Dist: pyyaml>=6.0
40
40
  Requires-Dist: ruamel-yaml>=0.18.0
41
- Requires-Dist: snowflake-connector-python<5,>=4.7.1
41
+ Requires-Dist: snowflake-connector-python<5,>=4.7.3
42
42
  Requires-Dist: toml>=0.10.2
43
43
  Requires-Dist: typer>=0.15.3
44
44
  Requires-Dist: typing-extensions>=4.13.2
@@ -79,7 +79,7 @@ Requires-Dist: psycopg[binary]>=3.2.0; extra == 'postgresql'
79
79
  Provides-Extra: redshift
80
80
  Requires-Dist: redshift-connector>=2.1.14; extra == 'redshift'
81
81
  Provides-Extra: scai
82
- Requires-Dist: snowflake-code-unit-registry>=0.9.5; extra == 'scai'
82
+ Requires-Dist: snowflake-code-unit-registry>=0.9.7; extra == 'scai'
83
83
  Provides-Extra: sqlite
84
84
  Requires-Dist: sqlean-py>=3.45.0; extra == 'sqlite'
85
85
  Provides-Extra: sqlserver
@@ -230,6 +230,32 @@ For configuration options and examples, see the [official documentation](https:/
230
230
 
231
231
  ## Changelog
232
232
 
233
+ ### v1.46.0
234
+
235
+ **Bug fixes**
236
+
237
+ - Fixed L2 `DECFLOAT` `MIN` and `MAX` being compared as `FLOAT`, which let differences past about 16 significant digits pass.
238
+ - Fixed high-precision decimals being rounded twice when cast to `Float64`, so identical values failed by one unit in the last place.
239
+ - Fixed SQL Server `FLOAT` and `REAL` row validation using `TRIM()`, which SQL Server 2016 does not support.
240
+ - Fixed result-set comparison failing for column names that contain a double quote.
241
+ - Fixed SQL Server row validation of wide tables failing with "expression services limit has been reached".
242
+ - Fixed L2 validation of an empty source and empty target table not being reported as valid.
243
+ - Fixed direct row validation failing tables whose rows are full duplicates when the row drill-down finds no differences.
244
+ - Fixed SQL Server Iceberg L3 validation reporting mismatches between 9-digit source and 6-digit target fractional seconds.
245
+ - Fixed Teradata object-type mapping: tables with no primary index are now validated as tables, and triggers are no longer mapped as tables.
246
+ - Fixed schema validation failing for SQL Server `image` columns.
247
+
248
+ ### v1.45.4
249
+
250
+ **Improvements**
251
+
252
+ - Improved Iceberg validation to read the table format version from the Snowflake catalog once before validation starts, so every validation level uses the actual format version.
253
+
254
+ **Bug fixes**
255
+
256
+ - Fixed Redshift Iceberg metrics validation comparing signed-year `DATE` and `TIMESTAMPTZ` values.
257
+ - Fixed Teradata `UNICODE` `CHAR`, `VARCHAR`, and `CLOB` column lengths being reported in bytes, which raised false truncation warnings.
258
+
233
259
  ### v1.45.3
234
260
 
235
261
  **Bug fixes**
@@ -139,6 +139,32 @@ For configuration options and examples, see the [official documentation](https:/
139
139
 
140
140
  ## Changelog
141
141
 
142
+ ### v1.46.0
143
+
144
+ **Bug fixes**
145
+
146
+ - Fixed L2 `DECFLOAT` `MIN` and `MAX` being compared as `FLOAT`, which let differences past about 16 significant digits pass.
147
+ - Fixed high-precision decimals being rounded twice when cast to `Float64`, so identical values failed by one unit in the last place.
148
+ - Fixed SQL Server `FLOAT` and `REAL` row validation using `TRIM()`, which SQL Server 2016 does not support.
149
+ - Fixed result-set comparison failing for column names that contain a double quote.
150
+ - Fixed SQL Server row validation of wide tables failing with "expression services limit has been reached".
151
+ - Fixed L2 validation of an empty source and empty target table not being reported as valid.
152
+ - Fixed direct row validation failing tables whose rows are full duplicates when the row drill-down finds no differences.
153
+ - Fixed SQL Server Iceberg L3 validation reporting mismatches between 9-digit source and 6-digit target fractional seconds.
154
+ - Fixed Teradata object-type mapping: tables with no primary index are now validated as tables, and triggers are no longer mapped as tables.
155
+ - Fixed schema validation failing for SQL Server `image` columns.
156
+
157
+ ### v1.45.4
158
+
159
+ **Improvements**
160
+
161
+ - Improved Iceberg validation to read the table format version from the Snowflake catalog once before validation starts, so every validation level uses the actual format version.
162
+
163
+ **Bug fixes**
164
+
165
+ - Fixed Redshift Iceberg metrics validation comparing signed-year `DATE` and `TIMESTAMPTZ` values.
166
+ - Fixed Teradata `UNICODE` `CHAR`, `VARCHAR`, and `CLOB` column lengths being reported in bytes, which raised false truncation warnings.
167
+
142
168
  ### v1.45.3
143
169
 
144
170
  **Bug fixes**
@@ -5,7 +5,7 @@ requires = ["hatchling"]
5
5
  [tool.uv]
6
6
  constraint-dependencies = [
7
7
  "certifi>=2026.10.23,<2026.11",
8
- "virtualenv>=21.7.13,<21.8",
8
+ "virtualenv>=21.14.9,<21.15",
9
9
  ]
10
10
 
11
11
  [project]
@@ -36,7 +36,7 @@ dependencies = [
36
36
  "connectorx>=0.3.0",
37
37
  "cryptography>=50.0.0",
38
38
  "deepdiff>=8.0.0",
39
- "snowflake-connector-python>=4.7.1,<5",
39
+ "snowflake-connector-python>=4.7.3,<5",
40
40
  "pandas>=2.2.3",
41
41
  "polars>=1.0.0",
42
42
  "pyarrow>=14.0.0",
@@ -106,7 +106,7 @@ db2 = [
106
106
  # musllinux build, and SDV is published to public PyPI. Inside DMO/DEA the
107
107
  # dependency is already declared, so SDV's logger tree is covered there.
108
108
  scai = [
109
- "snowflake-code-unit-registry>=0.9.5",
109
+ "snowflake-code-unit-registry>=0.9.7",
110
110
  ]
111
111
 
112
112
  [project.urls]
@@ -34,9 +34,6 @@ from typing import TYPE_CHECKING
34
34
 
35
35
  from shared.identifiers.managers import identifier_manager
36
36
  from shared.identifiers.sql_identifier import SqlIdentifier
37
- from snowflake.snowflake_data_validation.query.float_bit_normalization import (
38
- build_binary64_canonical_expr,
39
- )
40
37
  from snowflake.snowflake_data_validation.query.numeric_scale_resolution import (
41
38
  float_bit_input_expr,
42
39
  )
@@ -44,6 +41,9 @@ from snowflake.snowflake_data_validation.query.query_generator_base import (
44
41
  QueryGeneratorBase,
45
42
  resolve_table_context_modifiers,
46
43
  )
44
+ from snowflake.snowflake_data_validation.query.tsql_float_bits import (
45
+ build_tsql_float_bit_canonical_expr,
46
+ )
47
47
  from snowflake.snowflake_data_validation.query.tsql_float_remainder import (
48
48
  TsqlFloatMetricModifierMixin,
49
49
  )
@@ -77,7 +77,7 @@ LOGGER = logging.getLogger(__name__)
77
77
 
78
78
  def build_azure_synapse_float_bit_canonical_expr(col_ref: str) -> str:
79
79
  """Return the exact binary64 tuple used for Azure Synapse float validation."""
80
- return build_binary64_canonical_expr(col_ref, dialect=Platform.AZURE_SYNAPSE.value)
80
+ return build_tsql_float_bit_canonical_expr(col_ref)
81
81
 
82
82
 
83
83
  class QueryGeneratorAzureSynapse(TsqlFloatMetricModifierMixin, QueryGeneratorBase):
@@ -157,7 +157,7 @@ class QueryGeneratorBigQuery(QueryGeneratorBase):
157
157
  normalized = normalized[:index]
158
158
  return normalized.strip()
159
159
 
160
- def _resolve_metrics_col_type(self, col, table_context: TableContext) -> str:
160
+ def _resolve_metrics_col_type(self, col: ColumnMetadata, table_context: TableContext) -> str:
161
161
  """Key the metrics YAML lookup off the parameterless base type."""
162
162
  return self.normalize_bigquery_type(col.data_type)
163
163
 
@@ -338,13 +338,18 @@ DOUBLE PRECISION:
338
338
  metric_return_datatype: FLOAT
339
339
  metric_column_modifier: ' - 2097143 * (CAST("{{ col_name }}" AS DECIMAL(31,0)) / 2097143)'
340
340
 
341
+ # min/max are emitted as exact canonical decimal text (``{{ decfloat_shim }}``
342
+ # over the aggregate), matching Snowflake DECFLOAT's: binary64 keeps only ~16
343
+ # of DECFLOAT's 34 digits.
341
344
  DECFLOAT:
342
345
  min:
343
346
  metric_query: MIN("{{ col_name }}")
344
347
  metric_return_datatype: FLOAT
348
+ metric_normalization: "{{ decfloat_shim }}"
345
349
  max:
346
350
  metric_query: MAX("{{ col_name }}")
347
351
  metric_return_datatype: FLOAT
352
+ metric_normalization: "{{ decfloat_shim }}"
348
353
  count_distinct:
349
354
  metric_query: COUNT(DISTINCT "{{ col_name }}")
350
355
  metric_return_datatype: INTEGER
@@ -28,6 +28,7 @@ below give DB2 its own DB2-valid rendering that still matches Snowflake
28
28
  from pathlib import Path
29
29
 
30
30
  import jinja2
31
+ import pandas as pd
31
32
 
32
33
  from shared.datatypes.common import CommonType
33
34
  from shared.datatypes.db2 import Db2Type
@@ -49,6 +50,8 @@ from snowflake.snowflake_data_validation.query.query_generator_base import (
49
50
  )
50
51
  from snowflake.snowflake_data_validation.query.sql_type_families import SNOWFLAKE_FLOAT_TYPE_NAMES
51
52
  from snowflake.snowflake_data_validation.utils.constants import (
53
+ DECFLOAT_SHIM_PLACEHOLDER,
54
+ METRIC_QUERY_PLACEHOLDER,
52
55
  NULL_HASHING_SENTINEL,
53
56
  NULL_HASHING_SENTINEL_KEY,
54
57
  ROW_HASH_COLUMN_DELIMITER,
@@ -59,6 +62,7 @@ from snowflake.snowflake_data_validation.utils.iso_dv_common import (
59
62
  get_paired_target_column_types,
60
63
  normalize_snowflake_base_type,
61
64
  )
65
+ from snowflake.snowflake_data_validation.utils.model.column_metadata import ColumnMetadata
62
66
  from snowflake.snowflake_data_validation.utils.model.table_context import TableContext
63
67
 
64
68
 
@@ -66,6 +70,9 @@ from snowflake.snowflake_data_validation.utils.model.table_context import TableC
66
70
  # leading zero for |v| < 1 (matching Snowflake TO_VARCHAR).
67
71
  _DB2_INTEGER_NINES = 31
68
72
 
73
+ # MIN/MAX of a DECFLOAT mirrored as a Snowflake FLOAT, in place of its exact text.
74
+ DB2_DECFLOAT_AS_FLOAT_METRIC_NORMALIZATION = f"CAST({METRIC_QUERY_PLACEHOLDER} AS DOUBLE)"
75
+
69
76
 
70
77
  def build_db2_float_bit_canonical_expr(col_ref: str) -> str:
71
78
  """Return the exact binary64 tuple used for DB2 float validation.
@@ -153,21 +160,43 @@ class QueryGeneratorDb2(QueryGeneratorOracle):
153
160
  datatypes_normalization_templates: dict[str, str],
154
161
  table_context: TableContext,
155
162
  ) -> str:
156
- """Hash a DECFLOAT mirrored as a Snowflake FLOAT as binary64, as that target does.
157
-
158
- DMO creates DECFLOAT; only a user-mapped target lands on FLOAT, and it
159
- holds ~16 digits, so the exact decimal text could never match it.
160
- """
161
- if self._parse_type_precision_scale(column.data_type or "")[0] == Db2Type.DECFLOAT:
162
- target_type = get_paired_target_column_types(table_context).get(column.name)
163
- if isinstance(target_type, str) and normalize_snowflake_base_type(target_type) in SNOWFLAKE_FLOAT_TYPE_NAMES:
164
- return datatypes_normalization_templates[CommonType.FLOAT]
163
+ """Hash a DECFLOAT mirrored as a Snowflake FLOAT as binary64, as that target does."""
164
+ if self._decfloat_lands_in_float(column, table_context):
165
+ return datatypes_normalization_templates[CommonType.FLOAT]
165
166
  return super()._resolve_datatype_normalization_template(
166
167
  column,
167
168
  datatypes_normalization_templates,
168
169
  table_context,
169
170
  )
170
171
 
172
+ def _resolve_metric_normalization(
173
+ self,
174
+ col: ColumnMetadata,
175
+ metric_name: str,
176
+ row: pd.Series,
177
+ table_context: TableContext,
178
+ ) -> str | None:
179
+ """Measure a DECFLOAT mirrored as a Snowflake FLOAT in binary64, as that target does.
180
+
181
+ Only the stock exact-text MIN/MAX is swapped, so the DECFLOAT row's custom
182
+ removals and queries still apply.
183
+ """
184
+ normalization = super()._resolve_metric_normalization(col, metric_name, row, table_context)
185
+ if normalization and DECFLOAT_SHIM_PLACEHOLDER in normalization and self._decfloat_lands_in_float(col, table_context):
186
+ return DB2_DECFLOAT_AS_FLOAT_METRIC_NORMALIZATION
187
+ return normalization
188
+
189
+ def _decfloat_lands_in_float(self, column: ColumnMetadata, table_context: TableContext) -> bool:
190
+ """Return True for a DECFLOAT column whose Snowflake mirror is FLOAT.
191
+
192
+ DMO creates DECFLOAT; only a user-mapped target lands on FLOAT, and it
193
+ holds ~16 digits, so the exact decimal text could never match it.
194
+ """
195
+ if self._parse_type_precision_scale(column.data_type or "")[0] != Db2Type.DECFLOAT:
196
+ return False
197
+ target_type = get_paired_target_column_types(table_context).get(column.name)
198
+ return isinstance(target_type, str) and normalize_snowflake_base_type(target_type) in SNOWFLAKE_FLOAT_TYPE_NAMES
199
+
171
200
  # ------------------------------------------------------------------
172
201
  # text_comparison_mode: apply the per-column text codec (raw/logical)
173
202
  #
@@ -45,8 +45,8 @@ def _to_str(value: object) -> object:
45
45
  into a plain ``str``. This guarantees the long-format DataFrame
46
46
  contains only strings and ``pd.NA`` — no mixed native types that
47
47
  would break ``sort_values`` inside ``normalize_dataframe``.
48
- ``MetricsDataValidator`` already applies ``is_numeric`` /
49
- ``float()`` for tolerance checks, so string values work correctly.
48
+ ``MetricsDataValidator`` parses numeric text for its tolerance checks,
49
+ exactly when both sides are exact, so string values work correctly.
50
50
  """
51
51
  if value is None:
52
52
  return None
@@ -114,8 +114,10 @@ def reshape_wide_metrics_result(
114
114
 
115
115
  # Single row is guaranteed by the wide-SELECT contract. If a driver
116
116
  # ever returns more rows (e.g. GROUP BY accident) we use the first.
117
- # ``tolist()`` yields Python-native types (Timestamp -> datetime, etc.)
118
- row_values = wide_df.iloc[0].tolist()
117
+ # Each cell is read as its own column's value: a row of only numeric
118
+ # dtypes would otherwise be upcast to float64 as a whole, rounding an
119
+ # integer MIN/MAX past 2**53 that the comparator measures exactly.
120
+ row_values = wide_df.iloc[:1].astype(object).iloc[0].tolist()
119
121
 
120
122
  rows_by_col: dict[str, dict[str, object]] = {
121
123
  col_name: {m: pd.NA for m in metric_columns} for col_name in ordered_col_names
@@ -80,23 +80,9 @@ SNOWFLAKE_BINARY64_SQL = Binary64SqlDialect(
80
80
  neg_inf_literals=("-inf", "-infinity"),
81
81
  )
82
82
 
83
- # SQL Server / Azure Synapse dedicated pool: LOG is natural log; LEAST/GREATEST
84
- # need SQL Server 2022+. POWER(2.0, n) is DECIMAL arithmetic (2.0 is
85
- # decimal(2,1)), so 2.0^-4 becomes 0.1. Force FLOAT: POWER(CONVERT(FLOAT, 2), n).
86
- # LOG(0) raises divide-by-zero even inside CASE; NULLIF the abs input.
87
- # CAST(... AS VARCHAR) is VARCHAR(30), which is enough for these integers.
88
- SQLSERVER_BINARY64_SQL = Binary64SqlDialect(
89
- log2="LOG(NULLIF({abs}, 0)) / LOG(CONVERT(FLOAT, 2))",
90
- power2="POWER(CONVERT(FLOAT, 2), {exp})",
91
- integer_type="BIGINT",
92
- string_type="VARCHAR(50)",
93
- concat="concat",
94
- use_least_greatest=False,
95
- text_value="LOWER(LTRIM(RTRIM(CONVERT(VARCHAR(50), {value}, 2))))",
96
- nan_literals=("nan",),
97
- pos_inf_literals=("inf", "infinity"),
98
- neg_inf_literals=("-inf", "-infinity"),
99
- )
83
+ # SQL Server and Azure Synapse read the tuple from the stored bits instead
84
+ # (``tsql_float_bits``): the LOG/POWER search below repeats the column about a
85
+ # hundred times, and T-SQL row hashes compile into one size-limited expression.
100
86
 
101
87
  # Redshift and PostgreSQL can share Snowflake's spelling
102
88
  # (LN / POWER / BIGINT / ||).
@@ -196,9 +182,6 @@ BINARY64_SQL_BY_DIALECT: dict[str, Binary64SqlDialect] = {
196
182
  "snowflake": SNOWFLAKE_BINARY64_SQL,
197
183
  "redshift": SNOWFLAKE_BINARY64_SQL,
198
184
  "postgresql": SNOWFLAKE_BINARY64_SQL,
199
- "sqlserver": SQLSERVER_BINARY64_SQL,
200
- # Dedicated SQL pool is T-SQL: same LOG/POWER(FLOAT) spelling as SQL Server.
201
- "azure_synapse": SQLSERVER_BINARY64_SQL,
202
185
  "oracle": ORACLE_BINARY64_SQL,
203
186
  "sqlite": SQLITE_BINARY64_SQL,
204
187
  "db2": DB2_BINARY64_SQL,
@@ -26,11 +26,23 @@ class NormalizationRenderContext:
26
26
  has_custom_normalization: bool = False
27
27
 
28
28
  @classmethod
29
- def from_table_context(cls, table_context: TableContext) -> NormalizationRenderContext:
30
- """Resolve the per-table inputs; ``for_column`` adds the per-column paired type."""
29
+ def from_table_context(
30
+ cls,
31
+ table_context: TableContext,
32
+ *,
33
+ source_timestamp_fraction_digits: int | None = None,
34
+ ) -> NormalizationRenderContext:
35
+ """Resolve the per-table inputs; ``for_column`` adds the per-column paired type.
36
+
37
+ ``source_timestamp_fraction_digits`` is the paired source's fixed timestamp
38
+ text width; it replaces the Iceberg spec's digits when given.
39
+ """
40
+ fraction_digits = source_timestamp_fraction_digits
41
+ if fraction_digits is None:
42
+ fraction_digits = IcebergProfile.from_table_context(table_context).fraction_digits
31
43
  return cls(
32
44
  paired_source_platform=table_context.paired_source_platform,
33
- iceberg_fraction_digits=IcebergProfile.from_table_context(table_context).fraction_digits,
45
+ iceberg_fraction_digits=fraction_digits,
34
46
  )
35
47
 
36
48
  def for_column(
@@ -182,12 +182,15 @@ class QueryGeneratorBase(ABC):
182
182
  f"DECFLOAT normalization is not supported for platform {self.platform.value!r}",
183
183
  )
184
184
 
185
- def _expand_decfloat_placeholder(self, template: str, column) -> str:
186
- """Replace ``{{ decfloat_shim }}`` when present."""
185
+ def _expand_decfloat_placeholder(self, template: str, column, col_ref: str | None = None) -> str:
186
+ """Replace ``{{ decfloat_shim }}`` when present, over *col_ref* (default: the column itself)."""
187
187
  if DECFLOAT_SHIM_PLACEHOLDER not in template:
188
188
  return template
189
189
  try:
190
- shim = self.build_decfloat_shim(column, self._float_column_reference(column))
190
+ shim = self.build_decfloat_shim(
191
+ column,
192
+ col_ref if col_ref is not None else self._float_column_reference(column),
193
+ )
191
194
  except NotImplementedError as exc:
192
195
  raise ValueError(
193
196
  f"{{ decfloat_shim }} is not supported for platform {self.platform.value!r}",
@@ -225,7 +228,7 @@ class QueryGeneratorBase(ABC):
225
228
 
226
229
  The shipped templates spell the column ``"{{ col_name }}"``; custom ones may
227
230
  use a bare ``{{ col_name }}``. Dialects whose writer delimits the name itself
228
- (Snowflake, SQL Server, Synapse) render either as one complete identifier.
231
+ (Snowflake, SQL Server, Synapse, result set) render either as one complete identifier.
229
232
  """
230
233
  written = self._write_sql_identifier(identifier)
231
234
  rendered = template.replace(self._quoted_metric_identifier_placeholder(), written)
@@ -394,8 +397,7 @@ class QueryGeneratorBase(ABC):
394
397
  override this. Combined generators leave the base raise in place.
395
398
  """
396
399
  raise NotImplementedError(
397
- f"{self.platform.value} uses a combined schema query; "
398
- "call generate_schema_query instead of generate_schema_row_count_query"
400
+ f"{self.platform.value} uses a combined schema query; call generate_schema_query instead of generate_schema_row_count_query"
399
401
  )
400
402
 
401
403
  def generate_schema_details_query(self, table_context: TableContext) -> str:
@@ -405,8 +407,7 @@ class QueryGeneratorBase(ABC):
405
407
  override this. Combined generators leave the base raise in place.
406
408
  """
407
409
  raise NotImplementedError(
408
- f"{self.platform.value} uses a combined schema query; "
409
- "call generate_schema_query instead of generate_schema_details_query"
410
+ f"{self.platform.value} uses a combined schema query; call generate_schema_query instead of generate_schema_details_query"
410
411
  )
411
412
 
412
413
  def normalize_schema_details_result(
@@ -420,10 +421,7 @@ class QueryGeneratorBase(ABC):
420
421
  as a combined schema query (without ``ROW_COUNT``; the fetch helper
421
422
  attaches that). Combined generators leave the base raise in place.
422
423
  """
423
- raise NotImplementedError(
424
- f"{self.platform.value} uses a combined schema query; "
425
- "normalize_schema_details_result is not used"
426
- )
424
+ raise NotImplementedError(f"{self.platform.value} uses a combined schema query; normalize_schema_details_result is not used")
427
425
 
428
426
  def generate_metrics_query(self, table_context: TableContext) -> GeneratedMetricsQuery:
429
427
  """Generate a single wide metrics SELECT for a table.
@@ -645,7 +643,7 @@ class QueryGeneratorBase(ABC):
645
643
  return numeric_norm
646
644
  return None
647
645
 
648
- def _resolve_metrics_col_type(self, col, table_context: TableContext) -> str:
646
+ def _resolve_metrics_col_type(self, col: ColumnMetadata, table_context: TableContext) -> str:
649
647
  """Return the metrics YAML type key for a column (platforms may override)."""
650
648
  from snowflake.snowflake_data_validation.utils.vector_common import is_vector_base_type
651
649
 
@@ -952,13 +950,13 @@ class QueryGeneratorBase(ABC):
952
950
  if normalization is None and row.get(EXPLICIT_METRIC_NORMALIZATION_COLUMN_KEY):
953
951
  normalization = row[NORMALIZATION_COLUMN_KEY]
954
952
  if pd.notna(normalization) and normalization:
953
+ # A DECFLOAT aggregate keeps every digit as canonical text over the aggregate.
954
+ normalization = self._expand_decfloat_placeholder(normalization, col, METRIC_QUERY_PLACEHOLDER)
955
955
  if NUMERIC_FORMAT_MASK_PLACEHOLDER in normalization:
956
956
  mask = self._build_numeric_format_mask(self._resolve_numeric_scale(col))
957
957
  normalization = normalization.replace(NUMERIC_FORMAT_MASK_PLACEHOLDER, mask)
958
958
  if ICEBERG_FRACTION_DIGITS_PLACEHOLDER in normalization:
959
- normalization = normalization.replace(
960
- ICEBERG_FRACTION_DIGITS_PLACEHOLDER, str(iceberg_fraction_digits)
961
- )
959
+ normalization = normalization.replace(ICEBERG_FRACTION_DIGITS_PLACEHOLDER, str(iceberg_fraction_digits))
962
960
  metric_expr = self._wrap_metric_with_normalization(normalization, metric_expr)
963
961
  alias = f"c{measured_idx}_m{metric_idx}"
964
962
  select_exprs.append(f"{metric_expr} AS {alias}")
@@ -0,0 +1,66 @@
1
+ # Copyright 2026 Snowflake Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """Read a T-SQL FLOAT's IEEE-754 fields from its stored bits.
5
+
6
+ SQL Server and the Azure Synapse dedicated SQL pool share this spelling of the
7
+ ``sign|exponent|significand`` tuple that Snowflake FLOAT emits.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from snowflake.snowflake_data_validation.query.float_bit_normalization import (
13
+ IEEE754_BINARY64_FRACTION_BITS,
14
+ IEEE754_BINARY64_MIN_EXPONENT,
15
+ )
16
+
17
+
18
+ _BINARY64_EXPONENT_BIAS = 1023
19
+ _BINARY64_MAX_BIASED_EXPONENT = 2047
20
+ # Mask for the 11 exponent bits in the first two big-endian bytes (0x7FF0).
21
+ _BINARY64_EXPONENT_MASK_IN_HIGH_WORD = 0x7FF0
22
+ _BINARY64_EXPONENT_SHIFT_IN_HIGH_WORD = 16
23
+ _BINARY64_FRACTION_MASK = (1 << IEEE754_BINARY64_FRACTION_BITS) - 1
24
+ _BINARY64_IMPLICIT_BIT = 1 << IEEE754_BINARY64_FRACTION_BITS
25
+
26
+
27
+ def build_tsql_float_bit_canonical_expr(col_ref: str) -> str:
28
+ """Return the exact binary64 tuple for a SQL Server or Azure Synapse float.
29
+
30
+ Emits the same ``sign|exponent|significand`` strings as
31
+ ``build_binary64_canonical_expr``, but reads the fields from the stored
32
+ bits: ``CAST(float AS BINARY(8))`` is the big-endian IEEE-754 encoding.
33
+ The LOG/POWER exponent search the other dialects use repeats the column
34
+ about a hundred times, and T-SQL compiles every normalized column of a row
35
+ hash into one expression with a size limit ("An expression services limit
36
+ has been reached"), which a few dozen FLOAT columns exceed. Integer
37
+ literals above INT range are DECIMAL in T-SQL, so the 64-bit masks are
38
+ cast to BIGINT for the ``&`` operator.
39
+ """
40
+ # The inner cast keeps a REAL argument from encoding as four bytes.
41
+ bits = f"CAST(CAST({col_ref} AS FLOAT) AS BINARY(8))"
42
+ biased_exponent = (
43
+ f"((CAST(SUBSTRING({bits}, 1, 2) AS INT) & {_BINARY64_EXPONENT_MASK_IN_HIGH_WORD})"
44
+ f" / {_BINARY64_EXPONENT_SHIFT_IN_HIGH_WORD})"
45
+ )
46
+ fraction = f"(CAST({bits} AS BIGINT) & CAST({_BINARY64_FRACTION_MASK} AS BIGINT))"
47
+ # Subnormals have a zero biased exponent, a fixed -1022 exponent and no implicit bit.
48
+ exponent = (
49
+ f"CASE WHEN {biased_exponent} = 0 THEN {IEEE754_BINARY64_MIN_EXPONENT} "
50
+ f"ELSE {biased_exponent} - {_BINARY64_EXPONENT_BIAS} END"
51
+ )
52
+ significand = (
53
+ f"{fraction} + CASE WHEN {biased_exponent} = 0 THEN CAST(0 AS BIGINT) "
54
+ f"ELSE CAST({_BINARY64_IMPLICIT_BIT} AS BIGINT) END"
55
+ )
56
+ special_value = (
57
+ f"CASE WHEN {fraction} <> 0 THEN 'NAN' WHEN {col_ref} < 0 THEN '-INF' ELSE '+INF' END"
58
+ )
59
+ sign = f"CASE WHEN {col_ref} < 0 THEN '1' ELSE '0' END"
60
+ return (
61
+ f"CASE WHEN {col_ref} IS NULL THEN NULL "
62
+ f"WHEN {col_ref} = 0 THEN '0|0|0' "
63
+ f"WHEN {biased_exponent} = {_BINARY64_MAX_BIASED_EXPONENT} THEN {special_value} "
64
+ f"ELSE CONCAT({sign}, '|', CAST({exponent} AS VARCHAR(50)), '|', "
65
+ f"CAST({significand} AS VARCHAR(50))) END"
66
+ )
@@ -635,6 +635,36 @@ TIMESTAMP_AS_TEXT:
635
635
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
636
636
  metric_return_datatype: BIGINT
637
637
 
638
+ # Iceberg VARCHAR DATE (SNOW-4381535): MIN/MAX rendered as the UNLOAD footer's
639
+ # signed astronomical-year text. Kept in sync with DMO by test_redshift_consistency.py.
640
+ DATE_AS_TEXT:
641
+ min:
642
+ metric_query: MIN("{{ col_name }}")
643
+ metric_return_datatype: VARCHAR
644
+ metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR END)) || ''-'' || LPAD(EXTRACT(MONTH FROM {{ metric_query }})::VARCHAR, 2, ''0'') || ''-'' || LPAD(EXTRACT(DAY FROM {{ metric_query }})::VARCHAR, 2, ''0'')'
645
+ max:
646
+ metric_query: MAX("{{ col_name }}")
647
+ metric_return_datatype: VARCHAR
648
+ metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM {{ metric_query }})::INT < 0 THEN EXTRACT(YEAR FROM {{ metric_query }})::INT + 1 ELSE EXTRACT(YEAR FROM {{ metric_query }})::INT END))::VARCHAR END)) || ''-'' || LPAD(EXTRACT(MONTH FROM {{ metric_query }})::VARCHAR, 2, ''0'') || ''-'' || LPAD(EXTRACT(DAY FROM {{ metric_query }})::VARCHAR, 2, ''0'')'
649
+ count_null:
650
+ metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
651
+ metric_return_datatype: BIGINT
652
+
653
+ # Iceberg VARCHAR TIMESTAMPTZ (SNOW-4381535): MIN/MAX of the instant, rendered in
654
+ # UTC with the UNLOAD footer's signed year. Kept in sync with DMO by test_redshift_consistency.py.
655
+ TIMESTAMPTZ_AS_TEXT:
656
+ min:
657
+ metric_query: MIN("{{ col_name }}")
658
+ metric_return_datatype: VARCHAR
659
+ metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR END)) || TO_CHAR(({{ metric_query }} AT TIME ZONE ''UTC''), ''-MM-DD"T"HH24:MI:SS.US'') || ''000'' || ''+00:00'''
660
+ max:
661
+ metric_query: MAX("{{ col_name }}")
662
+ metric_return_datatype: VARCHAR
663
+ metric_normalization: '(CASE WHEN (CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END) < 0 THEN ''-'' ELSE '''' END || (CASE WHEN ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END)) < 1000 THEN LPAD(ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR, 4, ''0'') ELSE ABS((CASE WHEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT < 0 THEN EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT + 1 ELSE EXTRACT(YEAR FROM ({{ metric_query }} AT TIME ZONE ''UTC''))::INT END))::VARCHAR END)) || TO_CHAR(({{ metric_query }} AT TIME ZONE ''UTC''), ''-MM-DD"T"HH24:MI:SS.US'') || ''000'' || ''+00:00'''
664
+ count_null:
665
+ metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
666
+ metric_return_datatype: BIGINT
667
+
638
668
  TIMESTAMPTZ:
639
669
  min:
640
670
  metric_query: MIN("{{ col_name }}")