pointblank 0.8.4__tar.gz → 0.8.5__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 (268) hide show
  1. {pointblank-0.8.4 → pointblank-0.8.5}/PKG-INFO +1 -1
  2. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_constants_translations.py +162 -0
  3. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/validate.py +181 -2
  4. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank.egg-info/PKG-INFO +1 -1
  5. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +2 -2
  6. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_validate.py +17 -18
  7. {pointblank-0.8.4 → pointblank-0.8.5}/.github/CODE_OF_CONDUCT.md +0 -0
  8. {pointblank-0.8.4 → pointblank-0.8.5}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  9. {pointblank-0.8.4 → pointblank-0.8.5}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  10. {pointblank-0.8.4 → pointblank-0.8.5}/.github/ISSUE_TEMPLATE/question.md +0 -0
  11. {pointblank-0.8.4 → pointblank-0.8.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  12. {pointblank-0.8.4 → pointblank-0.8.5}/.github/SECURITY.md +0 -0
  13. {pointblank-0.8.4 → pointblank-0.8.5}/.github/workflows/ci-docs.yaml +0 -0
  14. {pointblank-0.8.4 → pointblank-0.8.5}/.github/workflows/ci-tests.yaml +0 -0
  15. {pointblank-0.8.4 → pointblank-0.8.5}/.github/workflows/code-checks.yaml +0 -0
  16. {pointblank-0.8.4 → pointblank-0.8.5}/.gitignore +0 -0
  17. {pointblank-0.8.4 → pointblank-0.8.5}/.pre-commit-config.yaml +0 -0
  18. {pointblank-0.8.4 → pointblank-0.8.5}/.vscode/settings.json +0 -0
  19. {pointblank-0.8.4 → pointblank-0.8.5}/CITATION.cff +0 -0
  20. {pointblank-0.8.4 → pointblank-0.8.5}/CONTRIBUTING.md +0 -0
  21. {pointblank-0.8.4 → pointblank-0.8.5}/LICENSE +0 -0
  22. {pointblank-0.8.4 → pointblank-0.8.5}/Makefile +0 -0
  23. {pointblank-0.8.4 → pointblank-0.8.5}/README.md +0 -0
  24. {pointblank-0.8.4 → pointblank-0.8.5}/data_raw/game_revenue.csv +0 -0
  25. {pointblank-0.8.4 → pointblank-0.8.5}/data_raw/nycflights.csv +0 -0
  26. {pointblank-0.8.4 → pointblank-0.8.5}/data_raw/nycflights.ddb +0 -0
  27. {pointblank-0.8.4 → pointblank-0.8.5}/data_raw/small_table.csv +0 -0
  28. {pointblank-0.8.4 → pointblank-0.8.5}/data_raw/x-01-parquet.qmd +0 -0
  29. {pointblank-0.8.4 → pointblank-0.8.5}/data_raw/x-02-duckdb.qmd +0 -0
  30. {pointblank-0.8.4 → pointblank-0.8.5}/data_raw/x-03-sqlite.qmd +0 -0
  31. {pointblank-0.8.4 → pointblank-0.8.5}/docs/.gitignore +0 -0
  32. {pointblank-0.8.4 → pointblank-0.8.5}/docs/_extensions/machow/interlinks/.gitignore +0 -0
  33. {pointblank-0.8.4 → pointblank-0.8.5}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
  34. {pointblank-0.8.4 → pointblank-0.8.5}/docs/_extensions/machow/interlinks/interlinks.lua +0 -0
  35. {pointblank-0.8.4 → pointblank-0.8.5}/docs/_quarto.yml +0 -0
  36. {pointblank-0.8.4 → pointblank-0.8.5}/docs/assets/fav-logo.png +0 -0
  37. {pointblank-0.8.4 → pointblank-0.8.5}/docs/assets/pointblank-tabular-report.png +0 -0
  38. {pointblank-0.8.4 → pointblank-0.8.5}/docs/assets/pointblank_logo.svg +0 -0
  39. {pointblank-0.8.4 → pointblank-0.8.5}/docs/assets/validation-table-diagram.png +0 -0
  40. {pointblank-0.8.4 → pointblank-0.8.5}/docs/blog/index.qmd +0 -0
  41. {pointblank-0.8.4 → pointblank-0.8.5}/docs/blog/intro-pointblank/index.qmd +0 -0
  42. {pointblank-0.8.4 → pointblank-0.8.5}/docs/blog/intro-pointblank/pointblank-localized.png +0 -0
  43. {pointblank-0.8.4 → pointblank-0.8.5}/docs/blog/intro-pointblank/step_report.png +0 -0
  44. {pointblank-0.8.4 → pointblank-0.8.5}/docs/blog/intro-pointblank/validation-table-diagram.png +0 -0
  45. {pointblank-0.8.4 → pointblank-0.8.5}/docs/blog/intro-pointblank/validation-test-units.png +0 -0
  46. {pointblank-0.8.4 → pointblank-0.8.5}/docs/blog/pointblank_blog_logo.png +0 -0
  47. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/01-starter/index.qmd +0 -0
  48. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/02-advanced/index.qmd +0 -0
  49. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/03-data-extracts/index.qmd +0 -0
  50. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/04-sundered-data/index.qmd +0 -0
  51. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/05-step-report-column-check/index.qmd +0 -0
  52. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
  53. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
  54. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/check-row-column-counts/index.qmd +0 -0
  55. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/checks-for-missing/index.qmd +0 -0
  56. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
  57. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/column-selector-functions/index.qmd +0 -0
  58. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/comparisons-across-columns/index.qmd +0 -0
  59. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/data/game_revenue.parquet +0 -0
  60. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
  61. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
  62. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/expect-text-pattern/index.qmd +0 -0
  63. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/failure-thresholds/index.qmd +0 -0
  64. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/img/advanced_validation.png +0 -0
  65. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/img/data_extracts.png +0 -0
  66. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/img/starter_validation.png +0 -0
  67. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/img/step_report_column_schema.png +0 -0
  68. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/img/step_report_column_values.png +0 -0
  69. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/img/sundered_data.png +0 -0
  70. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/index.qmd +0 -0
  71. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/mutate-table-in-step/index.qmd +0 -0
  72. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/numeric-comparisons/index.qmd +0 -0
  73. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/schema-check/index.qmd +0 -0
  74. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/set-membership/index.qmd +0 -0
  75. {pointblank-0.8.4 → pointblank-0.8.5}/docs/demos/using-parquet-data/index.qmd +0 -0
  76. {pointblank-0.8.4 → pointblank-0.8.5}/docs/index.qmd +0 -0
  77. {pointblank-0.8.4 → pointblank-0.8.5}/docs/styles.css +0 -0
  78. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/across.qmd +0 -0
  79. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/actions.qmd +0 -0
  80. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/col-summary-tbl.qmd +0 -0
  81. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/columns.qmd +0 -0
  82. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/extracts.qmd +0 -0
  83. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/index.qmd +0 -0
  84. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/missing-vals-tbl.qmd +0 -0
  85. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/preprocessing.qmd +0 -0
  86. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/preview.qmd +0 -0
  87. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/sundering.qmd +0 -0
  88. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/thresholds.qmd +0 -0
  89. {pointblank-0.8.4 → pointblank-0.8.5}/docs/user-guide/types.qmd +0 -0
  90. {pointblank-0.8.4 → pointblank-0.8.5}/images/pointblank-tabular-report.png +0 -0
  91. {pointblank-0.8.4 → pointblank-0.8.5}/images/pointblank_logo.svg +0 -0
  92. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/__init__.py +0 -0
  93. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_constants.py +0 -0
  94. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_constants_docs.py +0 -0
  95. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_interrogation.py +0 -0
  96. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_typing.py +0 -0
  97. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_utils.py +0 -0
  98. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_utils_check_args.py +0 -0
  99. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/_utils_html.py +0 -0
  100. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/actions.py +0 -0
  101. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/assistant.py +0 -0
  102. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/column.py +0 -0
  103. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/api-docs.txt +0 -0
  104. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/game_revenue-duckdb.zip +0 -0
  105. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/game_revenue.zip +0 -0
  106. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/nycflights-duckdb.zip +0 -0
  107. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/nycflights.zip +0 -0
  108. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/polars-api-docs.txt +0 -0
  109. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/small_table-duckdb.zip +0 -0
  110. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/data/small_table.zip +0 -0
  111. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/datascan.py +0 -0
  112. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/draft.py +0 -0
  113. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/schema.py +0 -0
  114. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/tf.py +0 -0
  115. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank/thresholds.py +0 -0
  116. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank.egg-info/SOURCES.txt +0 -0
  117. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank.egg-info/dependency_links.txt +0 -0
  118. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank.egg-info/requires.txt +0 -0
  119. {pointblank-0.8.4 → pointblank-0.8.5}/pointblank.egg-info/top_level.txt +0 -0
  120. {pointblank-0.8.4 → pointblank-0.8.5}/pyproject.toml +0 -0
  121. {pointblank-0.8.4 → pointblank-0.8.5}/setup.cfg +0 -0
  122. {pointblank-0.8.4 → pointblank-0.8.5}/tests/__init__.py +0 -0
  123. {pointblank-0.8.4 → pointblank-0.8.5}/tests/manual_tests/schema_step_reports.qmd +0 -0
  124. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_datascan/test_col_summary_tbl_duckdb_snap/col_summary_html_duckdb.html +0 -0
  125. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_datascan/test_col_summary_tbl_pandas_snap/col_summary_html_pandas.html +0 -0
  126. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_datascan/test_col_summary_tbl_polars_snap/col_summary_html_polars.html +0 -0
  127. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_01/schema_step_report_01-0.txt +0 -0
  128. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_01_1/schema_step_report_01-1.txt +0 -0
  129. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_01_2/schema_step_report_01-2.txt +0 -0
  130. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_01_3/schema_step_report_01-3.txt +0 -0
  131. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_02/schema_step_report_02-0.txt +0 -0
  132. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_02_1/schema_step_report_02-1.txt +0 -0
  133. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_02_2/schema_step_report_02-2.txt +0 -0
  134. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_02_3/schema_step_report_02-3.txt +0 -0
  135. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_03/schema_step_report_03-0.txt +0 -0
  136. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_03_1/schema_step_report_03-1.txt +0 -0
  137. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_03_2/schema_step_report_03-2.txt +0 -0
  138. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_03_3/schema_step_report_03-3.txt +0 -0
  139. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_04/schema_step_report_04-0.txt +0 -0
  140. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_05/schema_step_report_05-0.txt +0 -0
  141. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_06/schema_step_report_06-0.txt +0 -0
  142. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_07/schema_step_report_07-0.txt +0 -0
  143. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_08/schema_step_report_08-0.txt +0 -0
  144. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_09/schema_step_report_09-0.txt +0 -0
  145. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_10/schema_step_report_10-0.txt +0 -0
  146. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_11/schema_step_report_11-0.txt +0 -0
  147. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_12/schema_step_report_12-0.txt +0 -0
  148. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_13/schema_step_report_13-0.txt +0 -0
  149. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_14/schema_step_report_14-0.txt +0 -0
  150. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_14_1/schema_step_report_14-1.txt +0 -0
  151. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_15/schema_step_report_15-0.txt +0 -0
  152. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_15_1/schema_step_report_15-1.txt +0 -0
  153. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_16/schema_step_report_16-0.txt +0 -0
  154. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_16_1/schema_step_report_16-1.txt +0 -0
  155. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_17/schema_step_report_17-0.txt +0 -0
  156. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_17_1/schema_step_report_17-1.txt +0 -0
  157. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_18/schema_step_report_18-0.txt +0 -0
  158. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_18_1/schema_step_report_18-1.txt +0 -0
  159. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_19/schema_step_report_19-0.txt +0 -0
  160. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_19_1/schema_step_report_19-1.txt +0 -0
  161. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_20/schema_step_report_20-0.txt +0 -0
  162. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_20_1/schema_step_report_20-1.txt +0 -0
  163. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_21/schema_step_report_21-0.txt +0 -0
  164. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_21_1/schema_step_report_21-1.txt +0 -0
  165. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_21_2/schema_step_report_21-2.txt +0 -0
  166. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_21_3/schema_step_report_21-3.txt +0 -0
  167. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_22/schema_step_report_22-0.txt +0 -0
  168. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_22_1/schema_step_report_22-1.txt +0 -0
  169. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_23/schema_step_report_23-0.txt +0 -0
  170. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_23_1/schema_step_report_23-1.txt +0 -0
  171. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_24/schema_step_report_24-0.txt +0 -0
  172. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_24_1/schema_step_report_24-1.txt +0 -0
  173. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_24_2/schema_step_report_24-2.txt +0 -0
  174. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_24_3/schema_step_report_24-3.txt +0 -0
  175. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_25/schema_step_report_25-0.txt +0 -0
  176. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_25_1/schema_step_report_25-1.txt +0 -0
  177. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_25_2/schema_step_report_25-2.txt +0 -0
  178. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_25_3/schema_step_report_25-3.txt +0 -0
  179. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_25_4/schema_step_report_25-4.txt +0 -0
  180. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_step_report_25_5/schema_step_report_25-5.txt +0 -0
  181. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
  182. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
  183. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
  184. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
  185. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
  186. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
  187. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
  188. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
  189. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
  190. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
  191. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
  192. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
  193. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
  194. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
  195. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
  196. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
  197. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
  198. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
  199. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
  200. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
  201. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
  202. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
  203. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
  204. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
  205. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
  206. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
  207. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
  208. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
  209. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
  210. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
  211. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
  212. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
  213. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
  214. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
  215. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
  216. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
  217. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
  218. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
  219. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
  220. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
  221. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
  222. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
  223. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
  224. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
  225. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
  226. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_no_interrogation_validation_report_html_snap/no_interrogation_validation_report.html +0 -0
  227. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_no_steps_validation_report_html_snap/no_steps_validation_report.html +0 -0
  228. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +0 -0
  229. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +0 -0
  230. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  231. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  232. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd/validation_report.json +0 -0
  233. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl/validation_report.json +0 -0
  234. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  235. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  236. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  237. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pd/validation_report.json +0 -0
  238. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pl/validation_report.json +0 -0
  239. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  240. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_duckdb/validation_report.json +0 -0
  241. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_parquet/validation_report.json +0 -0
  242. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pd/validation_report.json +0 -0
  243. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pl/validation_report.json +0 -0
  244. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_sqlite/validation_report.json +0 -0
  245. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_memtable_variable_names/selector_helper_functions_no_match.html +0 -0
  246. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pd_variable_names/selector_helper_functions_no_match.html +0 -0
  247. {pointblank-0.8.4 → pointblank-0.8.5}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pl_variable_names/selector_helper_functions_no_match.html +0 -0
  248. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
  249. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
  250. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
  251. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
  252. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_xyz.ddb +0 -0
  253. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_xyz.parquet +0 -0
  254. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_xyz.sqlite +0 -0
  255. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
  256. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
  257. {pointblank-0.8.4 → pointblank-0.8.5}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
  258. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test__interrogation.py +0 -0
  259. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test__utils.py +0 -0
  260. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test__utils_check_args.py +0 -0
  261. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_actions.py +0 -0
  262. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_assistant.py +0 -0
  263. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_column.py +0 -0
  264. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_datascan.py +0 -0
  265. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_draft.py +0 -0
  266. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_schema.py +0 -0
  267. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_tf.py +0 -0
  268. {pointblank-0.8.4 → pointblank-0.8.5}/tests/test_thresholds.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.8.4
3
+ Version: 0.8.5
4
4
  Summary: Find out if your data is what you think it is.
5
5
  Author-email: Richard Iannone <riannone@me.com>
6
6
  License: MIT License
@@ -1627,6 +1627,60 @@ STEP_REPORT_TEXT = {
1627
1627
  "hi": "{column} Null नहीं है",
1628
1628
  "el": "{column} δεν είναι Null",
1629
1629
  },
1630
+ "rows_distinct_all": {
1631
+ "en": "All rows are distinct",
1632
+ "fr": "Toutes les lignes sont distinctes",
1633
+ "de": "Alle Zeilen sind eindeutig",
1634
+ "it": "Tutte le righe sono distinte",
1635
+ "es": "Todas las filas son distintas",
1636
+ "pt": "Todas as linhas são distintas",
1637
+ "ro": "Toate rândurile sunt distincte",
1638
+ "tr": "Tüm satırlar benzersizdir",
1639
+ "zh-Hans": "所有行都是不同的",
1640
+ "zh-Hant": "所有行都是不同的",
1641
+ "ja": "すべての行が一意です",
1642
+ "ko": "모든 행이 고유합니다",
1643
+ "vi": "Tất cả các hàng đều khác nhau",
1644
+ "ru": "Все строки уникальны",
1645
+ "cs": "Všechny řádky jsou jedinečné",
1646
+ "pl": "Wszystkie wiersze są unikalne",
1647
+ "da": "Alle rækker er unikke",
1648
+ "sv": "Alla rader är distinkta",
1649
+ "nb": "Alle rader er unike",
1650
+ "nl": "Alle rijen zijn uniek",
1651
+ "fi": "Kaikki rivit ovat erillisiä",
1652
+ "is": "Allar raðir eru einstakar",
1653
+ "ar": "جميع الصفوف متميزة",
1654
+ "hi": "सभी पंक्तियां अलग-अलग हैं",
1655
+ "el": "Όλες οι γραμμές είναι διακριτές",
1656
+ },
1657
+ "rows_distinct_subset": {
1658
+ "en": "Rows are distinct across a subset of columns",
1659
+ "fr": "Les lignes sont distinctes sur un sous-ensemble de colonnes",
1660
+ "de": "Zeilen sind in einer Teilmenge von Spalten eindeutig",
1661
+ "it": "Le righe sono distinte in un sottoinsieme di colonne",
1662
+ "es": "Las filas son distintas en un subconjunto de columnas",
1663
+ "pt": "As linhas são distintas em um subconjunto de colunas",
1664
+ "ro": "Rândurile sunt distincte într-un subset de coloane",
1665
+ "tr": "Satırlar, sütunların bir alt kümesinde benzersizdir",
1666
+ "zh-Hans": "行在列的子集中是不同的",
1667
+ "zh-Hant": "行在列的子集中是不同的",
1668
+ "ja": "行は列のサブセット間で一意です",
1669
+ "ko": "행이 열의 하위 집합에서 고유합니다",
1670
+ "vi": "Các hàng là khác biệt trong một tập con của các cột",
1671
+ "ru": "Строки уникальны в подмножестве столбцов",
1672
+ "cs": "Řádky jsou jedinečné napříč podmnožinou sloupců",
1673
+ "pl": "Wiersze są unikalne w podzbiorze kolumn",
1674
+ "da": "Rækker er unikke på tværs af en delmængde af kolonner",
1675
+ "sv": "Rader är distinkta över en delmängd av kolumner",
1676
+ "nb": "Rader er unike på tvers av en delmengde av kolonner",
1677
+ "nl": "Rijen zijn uniek over een subset van kolommen",
1678
+ "fi": "Rivit ovat erillisiä sarakkeiden osajoukossa",
1679
+ "is": "Raðir eru einstakar í undirsafni dálka",
1680
+ "ar": "الصفوف متميزة عبر مجموعة فرعية من الأعمدة",
1681
+ "hi": "पंक्तियां स्तंभों के एक उपसमूह में अलग-अलग हैं",
1682
+ "el": "Οι γραμμές είναι διακριτές σε ένα υποσύνολο στηλών",
1683
+ },
1630
1684
  "report_for_step_i": {
1631
1685
  "en": "Report for Validation Step {i}",
1632
1686
  "fr": "Rapport pour l'étape de validation {i}",
@@ -1816,6 +1870,87 @@ STEP_REPORT_TEXT = {
1816
1870
  "hi": "(<span style='color: #B22222;'>लाल रंग में</span> परीक्षण इकाई विफलताओं के साथ)",
1817
1871
  "el": "(ΜΕ <span style='color: #B22222;'>ΑΠΟΤΥΧΙΕΣ ΜΟΝΑΔΩΝ ΔΟΚΙΜΗΣ ΜΕ ΚΟΚΚΙΝΟ</span>)",
1818
1872
  },
1873
+ "extract_text_first_rows_distinct": {
1874
+ "en": "<div>EXTRACT OF FIRST <strong>{extract_length_resolved}</strong> ROWS:</div>",
1875
+ "fr": "<div>EXTRAIT DES PREMIÈRES <strong>{extract_length_resolved}</strong> LIGNES:</div>",
1876
+ "de": "<div>AUSZUG DER ERSTEN <strong>{extract_length_resolved}</strong> ZEILEN:</div>",
1877
+ "it": "<div>ESTRATTO DELLE PRIME <strong>{extract_length_resolved}</strong> RIGHE:</div>",
1878
+ "es": "<div>EXTRACTO DE LAS PRIMERAS <strong>{extract_length_resolved}</strong> FILAS:</div>",
1879
+ "pt": "<div>EXTRATO DAS PRIMEIRAS <strong>{extract_length_resolved}</strong> LINHAS:</div>",
1880
+ "ro": "<div>EXTRAS DIN PRIMELE <strong>{extract_length_resolved}</strong> RÂNDURI:</div>",
1881
+ "tr": "<div>İLK <strong>{extract_length_resolved}</strong> SATIRIN ÇIKARIMI:</div>",
1882
+ "zh-Hans": "<div>前 <strong>{extract_length_resolved}</strong> 行提取数据:</div>",
1883
+ "zh-Hant": "<div>前 <strong>{extract_length_resolved}</strong> 行提取資料:</div>",
1884
+ "ja": "<div>最初の <strong>{extract_length_resolved}</strong> 行の抽出:</div>",
1885
+ "ko": "<div>첫 <strong>{extract_length_resolved}</strong>행 추출:</div>",
1886
+ "vi": "<div>TRÍCH XUẤT <strong>{extract_length_resolved}</strong> HÀNG ĐẦU TIÊN:</div>",
1887
+ "ru": "<div>ВЫДЕРЖКА ПЕРВЫХ <strong>{extract_length_resolved}</strong> СТРОК:</div>",
1888
+ "cs": "<div>VÝPIS PRVNÍCH <strong>{extract_length_resolved}</strong> ŘÁDKŮ:</div>",
1889
+ "pl": "<div>WYCIĄG Z PIERWSZYCH <strong>{extract_length_resolved}</strong> WIERSZY:</div>",
1890
+ "da": "<div>UDDRAG AF FØRSTE <strong>{extract_length_resolved}</strong> RÆKKER:</div>",
1891
+ "sv": "<div>UTDRAG AV FÖRSTA <strong>{extract_length_resolved}</strong> RADERNA:</div>",
1892
+ "nb": "<div>UTDRAG AV FØRSTE <strong>{extract_length_resolved}</strong> RADER:</div>",
1893
+ "nl": "<div>EXTRACT VAN EERSTE <strong>{extract_length_resolved}</strong> RIJEN:</div>",
1894
+ "fi": "<div>OTE ENSIMMÄISISTÄ <strong>{extract_length_resolved}</strong> RIVISTÄ:</div>",
1895
+ "is": "<div>ÚTDRÁTTUR AF FYRSTU <strong>{extract_length_resolved}</strong> RÖÐUM:</div>",
1896
+ "ar": "<div>مقتطف من أول <strong>{extract_length_resolved}</strong> صفوف:</div>",
1897
+ "hi": "<div>पहली <strong>{extract_length_resolved}</strong> पंक्तियों का निष्कर्ष:</div>",
1898
+ "el": "<div>ΕΞΑΓΩΓΗ ΤΩΝ ΠΡΩΤΩΝ <strong>{extract_length_resolved}</strong> ΓΡΑΜΜΩΝ:</div>",
1899
+ },
1900
+ "extract_text_all_rows_distinct": {
1901
+ "en": "<div>EXTRACT OF ALL <strong>{extract_length_resolved}</strong> ROWS:</div>",
1902
+ "fr": "<div>EXTRAIT DE TOUTES LES <strong>{extract_length_resolved}</strong> LIGNES:</div>",
1903
+ "de": "<div>AUSZUG ALLER <strong>{extract_length_resolved}</strong> ZEILEN:</div>",
1904
+ "it": "<div>ESTRATTO DI TUTTE LE <strong>{extract_length_resolved}</strong> RIGHE:</div>",
1905
+ "es": "<div>EXTRACTO DE TODAS LAS <strong>{extract_length_resolved}</strong> FILAS:</div>",
1906
+ "pt": "<div>EXTRATO DE TODAS AS <strong>{extract_length_resolved}</strong> LINHAS:</div>",
1907
+ "ro": "<div>EXTRAS DIN TOATE CELE <strong>{extract_length_resolved}</strong> RÂNDURI:</div>",
1908
+ "tr": "<div>TÜM <strong>{extract_length_resolved}</strong> SATIRIN ÇIKARIMI:</div>",
1909
+ "zh-Hans": "<div>所有 <strong>{extract_length_resolved}</strong> 行提取数据:</div>",
1910
+ "zh-Hant": "<div>所有 <strong>{extract_length_resolved}</strong> 行提取資料:</div>",
1911
+ "ja": "<div>すべての <strong>{extract_length_resolved}</strong> 行の抽出:</div>",
1912
+ "ko": "<div>모든 <strong>{extract_length_resolved}</strong>행 추출:</div>",
1913
+ "vi": "<div>TRÍCH XUẤT TẤT CẢ <strong>{extract_length_resolved}</strong> HÀNG:</div>",
1914
+ "ru": "<div>ВЫДЕРЖКА ВСЕХ <strong>{extract_length_resolved}</strong> СТРОК:</div>",
1915
+ "cs": "<div>VÝPIS VŠECH <strong>{extract_length_resolved}</strong> ŘÁDKŮ:</div>",
1916
+ "pl": "<div>WYCIĄG ZE WSZYSTKICH <strong>{extract_length_resolved}</strong> WIERSZY:</div>",
1917
+ "da": "<div>UDDRAG AF ALLE <strong>{extract_length_resolved}</strong> RÆKKER:</div>",
1918
+ "sv": "<div>UTDRAG AV ALLA <strong>{extract_length_resolved}</strong> RADERNA:</div>",
1919
+ "nb": "<div>UTDRAG AV ALLE <strong>{extract_length_resolved}</strong> RADER:</div>",
1920
+ "nl": "<div>EXTRACT VAN ALLE <strong>{extract_length_resolved}</strong> RIJEN:</div>",
1921
+ "fi": "<div>OTE KAIKISTA <strong>{extract_length_resolved}</strong> RIVISTÄ:</div>",
1922
+ "is": "<div>ÚTDRÁTTUR AF ÖLLUM <strong>{extract_length_resolved}</strong> RÖÐUM:</div>",
1923
+ "ar": "<div>مقتطف من جميع <strong>{extract_length_resolved}</strong> صفوف:</div>",
1924
+ "hi": "<div>सभी <strong>{extract_length_resolved}</strong> पंक्तियों का निष्कर्ष:</div>",
1925
+ "el": "<div>ΕΞΑΓΩΓΗ ΟΛΩΝ ΤΩΝ <strong>{extract_length_resolved}</strong> ΓΡΑΜΜΩΝ:</div>",
1926
+ },
1927
+ "failure_rate_summary_rows_distinct": {
1928
+ "en": "{failure_rate} TEST UNIT FAILURES",
1929
+ "fr": "{failure_rate} ÉCHECS D'UNITÉS DE TEST",
1930
+ "de": "{failure_rate} TESTEINHEITENFEHLER",
1931
+ "it": "{failure_rate} FALLIMENTI DI UNITÀ DI TEST",
1932
+ "es": "{failure_rate} FALLOS DE UNIDAD DE PRUEBA",
1933
+ "pt": "{failure_rate} FALHAS DE UNIDADE DE TESTE",
1934
+ "ro": "{failure_rate} EȘECURI ALE UNITĂȚILOR DE TEST",
1935
+ "tr": "{failure_rate} TEST BİRİMİ HATALARI",
1936
+ "zh-Hans": "{failure_rate} 个测试单元失败",
1937
+ "zh-Hant": "{failure_rate} 個測試單元失敗",
1938
+ "ja": "{failure_rate} テストユニットの失敗",
1939
+ "ko": "{failure_rate} 테스트 단위 실패",
1940
+ "vi": "{failure_rate} LỖI ĐƠN VỊ KIỂM TRA",
1941
+ "ru": "{failure_rate} СБОЕВ ТЕСТОВЫХ ЕДИНИЦ",
1942
+ "cs": "{failure_rate} SELHÁNÍ TESTOVACÍCH JEDNOTEK",
1943
+ "pl": "{failure_rate} NIEPOWODZEŃ JEDNOSTEK TESTOWYCH",
1944
+ "da": "{failure_rate} TEST ENHED FEJL",
1945
+ "sv": "{failure_rate} TESTENHETSFEL",
1946
+ "nb": "{failure_rate} TESTENHETSFEIL",
1947
+ "nl": "{failure_rate} TESTEENHEID FOUTEN",
1948
+ "fi": "{failure_rate} TESTIYKSIKÖN VIRHEITÄ",
1949
+ "is": "{failure_rate} PRÓFUNAREININGAR VILLUR",
1950
+ "ar": "{failure_rate} فشل وحدات الاختبار",
1951
+ "hi": "{failure_rate} परीक्षण इकाई विफलताएँ",
1952
+ "el": "{failure_rate} ΑΠΟΤΥΧΙΕΣ ΜΟΝΑΔΩΝ ΔΟΚΙΜΗΣ",
1953
+ },
1819
1954
  "success_statement": {
1820
1955
  "en": "<strong>{n}</strong> TEST UNITS <em>ALL PASSED</em> IN COLUMN <strong>{column_position}</strong>",
1821
1956
  "fr": "<strong>{n}</strong> UNITÉS DE TEST <em>TOUTES RÉUSSIES</em> DANS LA COLONNE <strong>{column_position}</strong>",
@@ -1843,6 +1978,33 @@ STEP_REPORT_TEXT = {
1843
1978
  "hi": "कॉलम <strong>{column_position}</strong> में <strong>{n}</strong> परीक्षण इकाइयाँ <em>सभी सफल</em>",
1844
1979
  "el": "<strong>{n}</strong> ΜΟΝΑΔΕΣ ΔΟΚΙΜΗΣ <em>ΟΛΕΣ ΕΠΙΤΥΧΕΙΣ</em> ΣΤΗ ΣΤΗΛΗ <strong>{column_position}</strong>",
1845
1980
  },
1981
+ "success_statement_no_column": {
1982
+ "en": "<strong>{n}</strong> TEST UNITS <em>ALL PASSED</em>",
1983
+ "fr": "<strong>{n}</strong> UNITÉS DE TEST <em>TOUTES RÉUSSIES</em>",
1984
+ "de": "<strong>{n}</strong> TESTEINHEITEN <em>ALLE BESTANDEN</em>",
1985
+ "it": "<strong>{n}</strong> UNITÀ DI TEST <em>TUTTE SUPERATE</em>",
1986
+ "es": "<strong>{n}</strong> UNIDADES DE PRUEBA <em>TODAS APROBADAS</em>",
1987
+ "pt": "<strong>{n}</strong> UNIDADES DE TESTE <em>TODAS APROVADAS</em>",
1988
+ "ro": "<strong>{n}</strong> UNITĂȚI DE TEST <em>TOATE TRECUTE</em>",
1989
+ "tr": "<strong>{n}</strong> TEST BİRİMİNİN <em>TÜMÜ GEÇTİ</em>",
1990
+ "zh-Hans": "<strong>{n}</strong> 个测试单元<em>全部通过</em>",
1991
+ "zh-Hant": "<strong>{n}</strong> 個測試單元<em>全部通過</em>",
1992
+ "ja": "<strong>{n}</strong> のテストユニットが<em>すべて合格</em>",
1993
+ "ko": "<strong>{n}</strong> 테스트 단위 <em>모두 통과</em>",
1994
+ "vi": "<strong>{n}</strong> ĐƠN VỊ KIỂM TRA <em>ĐỀU ĐẠT</em>",
1995
+ "ru": "<strong>{n}</strong> ТЕСТОВЫХ ЕДИНИЦ <em>ВСЕ ПРОШЛИ</em>",
1996
+ "cs": "<strong>{n}</strong> TESTOVACÍCH JEDNOTEK <em>VŠECHNY PROŠLY</em>",
1997
+ "pl": "<strong>{n}</strong> JEDNOSTEK TESTOWYCH <em>WSZYSTKIE ZALICZONE</em>",
1998
+ "da": "<strong>{n}</strong> TEST ENHEDER <em>ALLE BESTÅET</em>",
1999
+ "sv": "<strong>{n}</strong> TESTENHETER <em>ALLA GODKÄNDA</em>",
2000
+ "nb": "<strong>{n}</strong> TESTENHETER <em>ALLE BESTÅTT</em>",
2001
+ "nl": "<strong>{n}</strong> TESTEENHEDEN <em>ALLEMAAL GESLAAGD</em>",
2002
+ "fi": "<strong>{n}</strong> TESTIYKSIKKÖÄ <em>KAIKKI LÄPÄISTY</em>",
2003
+ "is": "<strong>{n}</strong> PRÓFUNAREININGAR <em>ALLAR STAÐIST</em>",
2004
+ "ar": "<strong>{n}</strong> وحدات اختبار <em>جميعها نجحت</em>",
2005
+ "hi": "<strong>{n}</strong> परीक्षण इकाइयाँ <em>सभी सफल</em>",
2006
+ "el": "<strong>{n}</strong> ΜΟΝΑΔΕΣ ΔΟΚΙΜΗΣ <em>ΟΛΕΣ ΕΠΙΤΥΧΕΙΣ</em>",
2007
+ },
1846
2008
  "preview_statement": {
1847
2009
  "en": "<div>PREVIEW OF TARGET TABLE:</div>",
1848
2010
  "fr": "<div>APERÇU DE LA TABLE CIBLE :</div>",
@@ -7012,7 +7012,7 @@ class Validate:
7012
7012
  # TODO: Add support for extraction of rows for Ibis backends
7013
7013
  if (
7014
7014
  collect_extracts
7015
- and assertion_type in ROW_BASED_VALIDATION_TYPES
7015
+ and assertion_type in ROW_BASED_VALIDATION_TYPES + ["rows_distinct"]
7016
7016
  and tbl_type not in IBIS_BACKENDS
7017
7017
  ):
7018
7018
  # Add row numbers to the results table
@@ -7038,6 +7038,32 @@ class Validate:
7038
7038
  if len(validation_extract_nw) > extract_limit:
7039
7039
  validation_extract_nw = validation_extract_nw.head(extract_limit)
7040
7040
 
7041
+ # If a 'rows_distinct' validation step, then the extract should have the
7042
+ # duplicate rows arranged together
7043
+ if assertion_type == "rows_distinct":
7044
+ # Get the list of column names in the extract, excluding the `_row_num_` column
7045
+ column_names = validation_extract_nw.columns
7046
+ column_names.remove("_row_num_")
7047
+
7048
+ # Only include the columns that were defined in `rows_distinct(columns_subset=)`
7049
+ # (stored here in `column`), if supplied
7050
+ if column is not None:
7051
+ column_names = column
7052
+ column_names_subset = ["_row_num_"] + column
7053
+ validation_extract_nw = validation_extract_nw.select(column_names_subset)
7054
+
7055
+ validation_extract_nw = (
7056
+ validation_extract_nw.with_columns(
7057
+ group_min_row=nw.min("_row_num_").over(*column_names)
7058
+ )
7059
+ # First sort by the columns to group duplicates and by row numbers
7060
+ # within groups; this type of sorting will preserve the original order in a
7061
+ # single operation
7062
+ .sort(by=["group_min_row"] + column_names + ["_row_num_"])
7063
+ .drop("group_min_row")
7064
+ )
7065
+
7066
+ # Ensure that the extract is set to its native format
7041
7067
  validation.extract = nw.to_native(validation_extract_nw)
7042
7068
 
7043
7069
  # Get the end time for this step
@@ -7976,6 +8002,7 @@ class Validate:
7976
8002
  - [`col_vals_null()`](`pointblank.Validate.col_vals_null`)
7977
8003
  - [`col_vals_not_null()`](`pointblank.Validate.col_vals_not_null`)
7978
8004
  - [`col_vals_regex()`](`pointblank.Validate.col_vals_regex`)
8005
+ - [`rows_distinct()`](`pointblank.Validate.rows_distinct`)
7979
8006
 
7980
8007
  An extracted row means that a test unit failed for that row in the validation step. The
7981
8008
  extracted rows are a subset of the original table and are useful for further analysis or for
@@ -9330,6 +9357,24 @@ class Validate:
9330
9357
  lang=lang,
9331
9358
  )
9332
9359
 
9360
+ elif assertion_type == "rows_distinct":
9361
+ extract = self.get_data_extracts(i=i, frame=True)
9362
+
9363
+ step_report = _step_report_rows_distinct(
9364
+ i=i,
9365
+ column=column,
9366
+ column_position=column_position,
9367
+ columns_subset=columns_subset,
9368
+ n=n,
9369
+ n_failed=n_failed,
9370
+ all_passed=all_passed,
9371
+ extract=extract,
9372
+ tbl_preview=tbl_preview,
9373
+ header=header,
9374
+ limit=limit,
9375
+ lang=lang,
9376
+ )
9377
+
9333
9378
  elif assertion_type == "col_schema_match":
9334
9379
  # Get the parameters for column-schema matching
9335
9380
  values_dict = validation_step["values"]
@@ -10672,7 +10717,7 @@ def _step_report_row_based(
10672
10717
  header: str,
10673
10718
  limit: int | None,
10674
10719
  lang: str,
10675
- ):
10720
+ ) -> GT:
10676
10721
  # Get the length of the extracted data for the step
10677
10722
  extract_length = get_row_count(extract)
10678
10723
 
@@ -10889,6 +10934,140 @@ def _step_report_row_based(
10889
10934
  return step_report
10890
10935
 
10891
10936
 
10937
+ def _step_report_rows_distinct(
10938
+ i: int,
10939
+ column: list[str],
10940
+ column_position: list[int],
10941
+ columns_subset: list[str] | None,
10942
+ n: int,
10943
+ n_failed: int,
10944
+ all_passed: bool,
10945
+ extract: any,
10946
+ tbl_preview: GT,
10947
+ header: str,
10948
+ limit: int | None,
10949
+ lang: str,
10950
+ ) -> GT:
10951
+ # Get the length of the extracted data for the step
10952
+ extract_length = get_row_count(extract)
10953
+
10954
+ # Determine whether the `lang` value represents a right-to-left language
10955
+ is_rtl_lang = lang in RTL_LANGUAGES
10956
+ direction_rtl = " direction: rtl;" if is_rtl_lang else ""
10957
+
10958
+ if column is None:
10959
+ text = STEP_REPORT_TEXT["rows_distinct_all"][lang].format(column=column)
10960
+ else:
10961
+ columns_list = ", ".join(column)
10962
+ text = STEP_REPORT_TEXT["rows_distinct_subset"][lang].format(columns_subset=columns_list)
10963
+
10964
+ if all_passed:
10965
+ step_report = tbl_preview
10966
+
10967
+ if header is None:
10968
+ return step_report
10969
+
10970
+ title = STEP_REPORT_TEXT["report_for_step_i"][lang].format(i=i) + " " + CHECK_MARK_SPAN
10971
+
10972
+ success_stmt = STEP_REPORT_TEXT["success_statement_no_column"][lang].format(
10973
+ n=n,
10974
+ column_position=column_position,
10975
+ )
10976
+ preview_stmt = STEP_REPORT_TEXT["preview_statement"][lang]
10977
+
10978
+ details = (
10979
+ f"<div style='font-size: 13.6px; {direction_rtl}'>"
10980
+ "<div style='padding-top: 7px;'>"
10981
+ f"{text}"
10982
+ "</div>"
10983
+ "<div style='padding-top: 7px;'>"
10984
+ f"{success_stmt}"
10985
+ "</div>"
10986
+ f"{preview_stmt}"
10987
+ "</div>"
10988
+ )
10989
+
10990
+ # Generate the default template text for the header when `":default:"` is used
10991
+ if header == ":default:":
10992
+ header = "{title}{details}"
10993
+
10994
+ # Use commonmark to convert the header text to HTML
10995
+ header = commonmark.commonmark(header)
10996
+
10997
+ # Place any templated text in the header
10998
+ header = header.format(title=title, details=details)
10999
+
11000
+ # Create the header with `header` string
11001
+ step_report = step_report.tab_header(title=md(header))
11002
+
11003
+ else:
11004
+ if limit is None:
11005
+ limit = extract_length
11006
+
11007
+ # Create a preview of the extracted data
11008
+ step_report = _generate_display_table(
11009
+ data=extract,
11010
+ columns_subset=columns_subset,
11011
+ n_head=limit,
11012
+ n_tail=0,
11013
+ limit=limit,
11014
+ min_tbl_width=600,
11015
+ incl_header=False,
11016
+ mark_missing_values=False,
11017
+ )
11018
+
11019
+ title = STEP_REPORT_TEXT["report_for_step_i"][lang].format(i=i)
11020
+ failure_rate_metrics = f"<strong>{n_failed}</strong> / <strong>{n}</strong>"
11021
+
11022
+ failure_rate_stmt = STEP_REPORT_TEXT["failure_rate_summary_rows_distinct"][lang].format(
11023
+ failure_rate=failure_rate_metrics,
11024
+ column_position=column_position,
11025
+ )
11026
+
11027
+ if limit < extract_length: # pragma: no cover
11028
+ extract_length_resolved = limit
11029
+ extract_text = STEP_REPORT_TEXT["extract_text_first_rows_distinct"][lang].format(
11030
+ extract_length_resolved=extract_length_resolved
11031
+ )
11032
+
11033
+ else:
11034
+ extract_length_resolved = extract_length
11035
+ extract_text = STEP_REPORT_TEXT["extract_text_all_rows_distinct"][lang].format(
11036
+ extract_length_resolved=extract_length_resolved
11037
+ )
11038
+
11039
+ details = (
11040
+ f"<div style='font-size: 13.6px; {direction_rtl}'>"
11041
+ "<div style='padding-top: 7px;'>"
11042
+ f"{text}"
11043
+ "</div>"
11044
+ "<div style='padding-top: 7px;'>"
11045
+ f"{failure_rate_stmt}"
11046
+ "</div>"
11047
+ f"{extract_text}"
11048
+ "</div>"
11049
+ )
11050
+
11051
+ # If `header` is None then don't add a header and just return the step report
11052
+ if header is None:
11053
+ return step_report
11054
+
11055
+ # Generate the default template text for the header when `":default:"` is used
11056
+ if header == ":default:":
11057
+ header = "{title}{details}"
11058
+
11059
+ # Use commonmark to convert the header text to HTML
11060
+ header = commonmark.commonmark(header)
11061
+
11062
+ # Place any templated text in the header
11063
+ header = header.format(title=title, details=details)
11064
+
11065
+ # Create the header with `header` string
11066
+ step_report = step_report.tab_header(title=md(header))
11067
+
11068
+ return step_report
11069
+
11070
+
10892
11071
  def _step_report_schema_in_order(
10893
11072
  step: int, schema_info: dict, header: str, lang: str, debug_return_df: bool = False
10894
11073
  ) -> GT | any:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.8.4
3
+ Version: 0.8.5
4
4
  Summary: Find out if your data is what you think it is.
5
5
  Author-email: Richard Iannone <riannone@me.com>
6
6
  License: MIT License
@@ -1078,7 +1078,7 @@
1078
1078
  <td style="height: 40px; background-color: #FCFCFC; border-left: 1px solid #D3D3D3;" class="gt_row gt_center"><span style="color: #AAAAAA;">&#9679;</span></td>
1079
1079
  <td style="height: 40px; background-color: #FCFCFC;" class="gt_row gt_center"><span style="color: #EBBC14;">&cir;</span></td>
1080
1080
  <td style="height: 40px; background-color: #FCFCFC; border-right: 1px solid #D3D3D3;" class="gt_row gt_center"><span style="color: #FF3300;">&cir;</span></td>
1081
- <td style="height: 40px;" class="gt_row gt_center">—</td>
1081
+ <td style="height: 40px;" class="gt_row gt_center"><a href="data:text/csv;base64,X3Jvd19udW1fLGRhdGVfdGltZSxkYXRlLGEsYixjLGQsZSxmCjksMjAxNi0wMS0yMFQwNDozMDowMC4wMDAwMDAsMjAxNi0wMS0yMCwzLDUtYmNlLTY0Miw5LDgzNy45MyxmYWxzZSxoaWdoCjEwLDIwMTYtMDEtMjBUMDQ6MzA6MDAuMDAwMDAwLDIwMTYtMDEtMjAsMyw1LWJjZS02NDIsOSw4MzcuOTMsZmFsc2UsaGlnaAo=" download="extract_0023.csv"><button style="background-color: #67C2DC; color: #FFFFFF; border: none; padding: 5px; font-weight: bold; cursor: pointer; border-radius: 4px;">CSV</button></a></td>
1082
1082
  </tr>
1083
1083
  <tr>
1084
1084
  <td style="height: 40px; background-color: #AAAAAA; color: transparent;font-size: 0px;" class="gt_row gt_left">#AAAAAA</td>
@@ -1123,7 +1123,7 @@
1123
1123
  <td style="height: 40px; background-color: #FCFCFC; border-left: 1px solid #D3D3D3;" class="gt_row gt_center"><span style="color: #AAAAAA;">&#9679;</span></td>
1124
1124
  <td style="height: 40px; background-color: #FCFCFC;" class="gt_row gt_center"><span style="color: #EBBC14;">&cir;</span></td>
1125
1125
  <td style="height: 40px; background-color: #FCFCFC; border-right: 1px solid #D3D3D3;" class="gt_row gt_center"><span style="color: #FF3300;">&cir;</span></td>
1126
- <td style="height: 40px;" class="gt_row gt_center">—</td>
1126
+ <td style="height: 40px;" class="gt_row gt_center"><a href="data:text/csv;base64,X3Jvd19udW1fLGEsYixjCjksMyw1LWJjZS02NDIsOQoxMCwzLDUtYmNlLTY0Miw5Cg==" download="extract_0024.csv"><button style="background-color: #67C2DC; color: #FFFFFF; border: none; padding: 5px; font-weight: bold; cursor: pointer; border-radius: 4px;">CSV</button></a></td>
1127
1127
  </tr>
1128
1128
  <tr>
1129
1129
  <td style="height: 40px; background-color: #4CA64C; color: transparent;font-size: 0px;" class="gt_row gt_left">#4CA64C</td>
@@ -6059,25 +6059,31 @@ def test_get_data_extracts(tbl_missing_pd):
6059
6059
  Validate(tbl_missing_pd)
6060
6060
  .col_vals_gt(columns="x", value=1)
6061
6061
  .col_vals_lt(columns="y", value=10)
6062
+ .rows_distinct(columns_subset=["z"])
6062
6063
  .interrogate()
6063
6064
  )
6064
6065
 
6065
6066
  extracts_all = validation.get_data_extracts()
6066
6067
  extracts_1 = validation.get_data_extracts(i=1)
6067
6068
  extracts_2 = validation.get_data_extracts(i=2)
6069
+ extracts_3 = validation.get_data_extracts(i=3)
6068
6070
 
6069
6071
  assert isinstance(extracts_all, dict)
6070
6072
  assert isinstance(extracts_1, dict)
6071
6073
  assert isinstance(extracts_2, dict)
6072
- assert len(extracts_all) == 2
6074
+ assert isinstance(extracts_3, dict)
6075
+ assert len(extracts_all) == 3
6073
6076
  assert len(extracts_1) == 1
6074
6077
  assert len(extracts_2) == 1
6078
+ assert len(extracts_3) == 1
6075
6079
 
6076
6080
  extracts_1_df = validation.get_data_extracts(i=1, frame=True)
6077
6081
  extracts_2_df = validation.get_data_extracts(i=2, frame=True)
6082
+ extracts_3_df = validation.get_data_extracts(i=3, frame=True)
6078
6083
 
6079
6084
  assert isinstance(extracts_1_df, pd.DataFrame)
6080
6085
  assert isinstance(extracts_2_df, pd.DataFrame)
6086
+ assert isinstance(extracts_3_df, pd.DataFrame)
6081
6087
 
6082
6088
 
6083
6089
  @pytest.mark.parametrize("tbl_fixture", TBL_LIST)
@@ -6919,31 +6925,35 @@ def test_get_step_report_no_fail(tbl_type):
6919
6925
  .col_schema_match(schema=Schema(columns=[("a", "Int64")]), complete=True, in_order=False)
6920
6926
  .col_schema_match(schema=Schema(columns=[("a", "Int64")]), complete=False, in_order=True)
6921
6927
  .col_schema_match(schema=Schema(columns=[("a", "Int64")]), complete=False, in_order=False)
6928
+ .rows_distinct()
6929
+ .rows_distinct(columns_subset=["a", "b", "c"])
6930
+ .rows_distinct(pre=lambda x: x.head(4))
6931
+ .rows_distinct(columns_subset=["a", "b"], pre=lambda x: x.head(4))
6922
6932
  .interrogate()
6923
6933
  )
6924
6934
 
6925
6935
  # Test every step report and ensure it's a GT object
6926
- for i in range(1, 18):
6936
+ for i in range(1, 23):
6927
6937
  assert isinstance(validation.get_step_report(i=i), GT.GT)
6928
6938
 
6929
6939
  # Test with a fixed limit of `2`
6930
- for i in range(1, 18):
6940
+ for i in range(1, 23):
6931
6941
  assert isinstance(validation.get_step_report(i=i, limit=2), GT.GT)
6932
6942
 
6933
6943
  # Test with `limit=None`
6934
- for i in range(1, 18):
6944
+ for i in range(1, 23):
6935
6945
  assert isinstance(validation.get_step_report(i=i, limit=None), GT.GT)
6936
6946
 
6937
6947
  # Test with a custom header using static text
6938
- for i in range(1, 18):
6948
+ for i in range(1, 23):
6939
6949
  assert isinstance(validation.get_step_report(i=i, header="Custom header"), GT.GT)
6940
6950
 
6941
6951
  # Test with a custom header using templating elements
6942
- for i in range(1, 18):
6952
+ for i in range(1, 23):
6943
6953
  assert isinstance(validation.get_step_report(i=i, header="Title {title} {details}"), GT.GT)
6944
6954
 
6945
6955
  # Test with header removal
6946
- for i in range(1, 18):
6956
+ for i in range(1, 23):
6947
6957
  assert isinstance(validation.get_step_report(i=i, header=None), GT.GT)
6948
6958
 
6949
6959
  #
@@ -7025,17 +7035,6 @@ def test_get_step_report_inactive_step():
7025
7035
  assert validation.get_step_report(i=1) == "This validation step is inactive."
7026
7036
 
7027
7037
 
7028
- def test_get_step_report_non_supported_steps():
7029
- small_table = load_dataset(dataset="small_table", tbl_type="pandas")
7030
-
7031
- validation = (
7032
- Validate(small_table).rows_distinct().rows_distinct(columns_subset=["a", "b"]).interrogate()
7033
- )
7034
-
7035
- assert validation.get_step_report(i=1) is None
7036
- assert validation.get_step_report(i=2) is None
7037
-
7038
-
7039
7038
  @pytest.mark.parametrize(
7040
7039
  "schema",
7041
7040
  [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes