pointblank 0.12.1__tar.gz → 0.12.2__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 (401) hide show
  1. {pointblank-0.12.1 → pointblank-0.12.2}/PKG-INFO +1 -1
  2. {pointblank-0.12.1 → pointblank-0.12.2}/docs/_quarto.yml +1 -0
  3. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/yaml-reference.qmd +36 -1
  4. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/yaml-validation-workflows.qmd +130 -0
  5. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/api-docs.txt +49 -4
  6. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/validate.py +135 -0
  7. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/yaml.py +62 -5
  8. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank.egg-info/PKG-INFO +1 -1
  9. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_validate.py +433 -11
  10. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_yaml.py +656 -1
  11. {pointblank-0.12.1 → pointblank-0.12.2}/.github/CODE_OF_CONDUCT.md +0 -0
  12. {pointblank-0.12.1 → pointblank-0.12.2}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  13. {pointblank-0.12.1 → pointblank-0.12.2}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  14. {pointblank-0.12.1 → pointblank-0.12.2}/.github/ISSUE_TEMPLATE/question.md +0 -0
  15. {pointblank-0.12.1 → pointblank-0.12.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  16. {pointblank-0.12.1 → pointblank-0.12.2}/.github/SECURITY.md +0 -0
  17. {pointblank-0.12.1 → pointblank-0.12.2}/.github/workflows/ci-docs.yaml +0 -0
  18. {pointblank-0.12.1 → pointblank-0.12.2}/.github/workflows/ci-tests.yaml +0 -0
  19. {pointblank-0.12.1 → pointblank-0.12.2}/.github/workflows/code-checks.yaml +0 -0
  20. {pointblank-0.12.1 → pointblank-0.12.2}/.gitignore +0 -0
  21. {pointblank-0.12.1 → pointblank-0.12.2}/.pre-commit-config.yaml +0 -0
  22. {pointblank-0.12.1 → pointblank-0.12.2}/.vscode/settings.json +0 -0
  23. {pointblank-0.12.1 → pointblank-0.12.2}/CITATION.cff +0 -0
  24. {pointblank-0.12.1 → pointblank-0.12.2}/CONTRIBUTING.md +0 -0
  25. {pointblank-0.12.1 → pointblank-0.12.2}/LICENSE +0 -0
  26. {pointblank-0.12.1 → pointblank-0.12.2}/Makefile +0 -0
  27. {pointblank-0.12.1 → pointblank-0.12.2}/README.md +0 -0
  28. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/game_revenue.csv +0 -0
  29. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/global_sales.csv +0 -0
  30. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/global_sales_dataset.qmd +0 -0
  31. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/nycflights.csv +0 -0
  32. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/small_table.csv +0 -0
  33. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/worldcities.csv +0 -0
  34. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/x-01-parquet.qmd +0 -0
  35. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/x-02-duckdb.qmd +0 -0
  36. {pointblank-0.12.1 → pointblank-0.12.2}/data_raw/x-03-sqlite.qmd +0 -0
  37. {pointblank-0.12.1 → pointblank-0.12.2}/docs/.gitignore +0 -0
  38. {pointblank-0.12.1 → pointblank-0.12.2}/docs/_extensions/machow/interlinks/.gitignore +0 -0
  39. {pointblank-0.12.1 → pointblank-0.12.2}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
  40. {pointblank-0.12.1 → pointblank-0.12.2}/docs/_extensions/machow/interlinks/interlinks.lua +0 -0
  41. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/fav-logo.png +0 -0
  42. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-info-worldcities-csv.png +0 -0
  43. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-info-worldcities-github-csv.png +0 -0
  44. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-make-template.png +0 -0
  45. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-missing-worldcities-csv.png +0 -0
  46. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-preview-game_revenue-all-columns.png +0 -0
  47. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-preview-game_revenue-column-names.png +0 -0
  48. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-preview-game_revenue-column-range.png +0 -0
  49. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-preview-worldcities-csv-no-row-numbers.png +0 -0
  50. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-preview-worldcities-csv.png +0 -0
  51. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-run-worldcities_validation-extracts.png +0 -0
  52. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-run-worldcities_validation-fail-on-warning.png +0 -0
  53. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-run-worldcities_validation-output.png +0 -0
  54. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-run-worldcities_validation.png +0 -0
  55. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-scan-worldcities-csv.png +0 -0
  56. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-exit-code.png +0 -0
  57. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-multi-check.png +0 -0
  58. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-rows-complete-worldcities-csv.png +0 -0
  59. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-rows-distinct-worldcities-csv.png +0 -0
  60. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-show-extract.png +0 -0
  61. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-worldcities-gt-0-population.png +0 -0
  62. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-worldcities-not-null-city_name.png +0 -0
  63. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pb-validate-write-extract.png +0 -0
  64. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.de.png +0 -0
  65. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.es.png +0 -0
  66. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.fr.png +0 -0
  67. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.it.png +0 -0
  68. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.ja.png +0 -0
  69. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.ko.png +0 -0
  70. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.nl.png +0 -0
  71. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.png +0 -0
  72. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.pt-BR.png +0 -0
  73. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-sales-data.zh-CN.png +0 -0
  74. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-step-report.png +0 -0
  75. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank-tabular-report.png +0 -0
  76. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/pointblank_logo.svg +0 -0
  77. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/posit-logo-black.svg +0 -0
  78. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/validation-table-diagram.png +0 -0
  79. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/validation-test-units.png +0 -0
  80. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/.gitignore +0 -0
  81. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-cicd-workflows.gif +0 -0
  82. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-cicd-workflows.tape +0 -0
  83. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-complete-workflow.gif +0 -0
  84. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-complete-workflow.tape +0 -0
  85. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-data-exploration.gif +0 -0
  86. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-data-exploration.tape +0 -0
  87. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-essential-validations.gif +0 -0
  88. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-essential-validations.tape +0 -0
  89. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-getting-started.gif +0 -0
  90. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-getting-started.tape +0 -0
  91. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-using-polars.gif +0 -0
  92. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/cli-using-polars.tape +0 -0
  93. {pointblank-0.12.1 → pointblank-0.12.2}/docs/assets/vhs/validation.py +0 -0
  94. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/all-about-actions/index.qmd +0 -0
  95. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/index.qmd +0 -0
  96. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/intro-pointblank/index.qmd +0 -0
  97. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/intro-pointblank/pointblank-localized.png +0 -0
  98. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/intro-pointblank/step_report.png +0 -0
  99. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/intro-pointblank/validation-table-diagram.png +0 -0
  100. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/intro-pointblank/validation-test-units.png +0 -0
  101. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/lets-workshop-together/index.qmd +0 -0
  102. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/advanced-in-sidebar.png +0 -0
  103. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/breadth-and-depth.png +0 -0
  104. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/explanation-of-visual.png +0 -0
  105. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/index.qmd +0 -0
  106. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/links-in-guide.png +0 -0
  107. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/segments.png +0 -0
  108. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/step-report.png +0 -0
  109. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/overhauled-user-guide/validation-three-things.png +0 -0
  110. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/pointblank_blog_logo.png +0 -0
  111. {pointblank-0.12.1 → pointblank-0.12.2}/docs/blog/validation-libs-2025/index.qmd +0 -0
  112. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/01-starter/index.qmd +0 -0
  113. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/02-advanced/index.qmd +0 -0
  114. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/03-data-extracts/index.qmd +0 -0
  115. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/04-sundered-data/index.qmd +0 -0
  116. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/05-step-report-column-check/index.qmd +0 -0
  117. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
  118. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/07-validation-with-actions/index.qmd +0 -0
  119. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/08-validation-with-final-actions/index.qmd +0 -0
  120. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
  121. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/check-for-freshness/index.qmd +0 -0
  122. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/check-row-column-counts/index.qmd +0 -0
  123. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/checks-for-missing/index.qmd +0 -0
  124. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/cli-interactive/index.qmd +0 -0
  125. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
  126. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/column-selector-functions/index.qmd +0 -0
  127. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/comparisons-across-columns/index.qmd +0 -0
  128. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/custom-validation-specially/index.qmd +0 -0
  129. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/data/game_revenue.parquet +0 -0
  130. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
  131. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
  132. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/expect-text-pattern/index.qmd +0 -0
  133. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/failure-thresholds/index.qmd +0 -0
  134. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/advanced_validation.png +0 -0
  135. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/data_extracts.png +0 -0
  136. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/starter_validation.png +0 -0
  137. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/step_report_column_schema.png +0 -0
  138. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/step_report_column_values.png +0 -0
  139. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/sundered_data.png +0 -0
  140. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/validation_with_actions.png +0 -0
  141. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/img/validation_with_final_actions.png +0 -0
  142. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/index.qmd +0 -0
  143. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/mutate-table-in-step/index.qmd +0 -0
  144. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/numeric-comparisons/index.qmd +0 -0
  145. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/schema-check/index.qmd +0 -0
  146. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/set-membership/index.qmd +0 -0
  147. {pointblank-0.12.1 → pointblank-0.12.2}/docs/demos/using-parquet-data/index.qmd +0 -0
  148. {pointblank-0.12.1 → pointblank-0.12.2}/docs/index.qmd +0 -0
  149. {pointblank-0.12.1 → pointblank-0.12.2}/docs/scripts/post-render.py +0 -0
  150. {pointblank-0.12.1 → pointblank-0.12.2}/docs/styles.css +0 -0
  151. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/actions.qmd +0 -0
  152. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/assertions.qmd +0 -0
  153. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/briefs.qmd +0 -0
  154. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/cli-data-inspection.qmd +0 -0
  155. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/cli-data-validation.qmd +0 -0
  156. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/cli-reference.qmd +0 -0
  157. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/col-summary-tbl.qmd +0 -0
  158. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/column-selection-patterns.qmd +0 -0
  159. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/draft-validation.qmd +0 -0
  160. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/expressions.qmd +0 -0
  161. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/extracts.qmd +0 -0
  162. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/index.qmd +0 -0
  163. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/installation.qmd +0 -0
  164. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/langs.qmd +0 -0
  165. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/missing-vals-tbl.qmd +0 -0
  166. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/preprocessing.qmd +0 -0
  167. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/preview.qmd +0 -0
  168. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/schema-validation.qmd +0 -0
  169. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/segmentation.qmd +0 -0
  170. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/step-reports.qmd +0 -0
  171. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/sundering.qmd +0 -0
  172. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/thresholds.qmd +0 -0
  173. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/validation-methods.qmd +0 -0
  174. {pointblank-0.12.1 → pointblank-0.12.2}/docs/user-guide/validation-overview.qmd +0 -0
  175. {pointblank-0.12.1 → pointblank-0.12.2}/images/pointblank-tabular-report.png +0 -0
  176. {pointblank-0.12.1 → pointblank-0.12.2}/images/pointblank_logo.svg +0 -0
  177. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/__init__.py +0 -0
  178. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_constants.py +0 -0
  179. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_constants_docs.py +0 -0
  180. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_constants_translations.py +0 -0
  181. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_datascan_utils.py +0 -0
  182. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_interrogation.py +0 -0
  183. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_typing.py +0 -0
  184. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_utils.py +0 -0
  185. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_utils_check_args.py +0 -0
  186. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/_utils_html.py +0 -0
  187. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/actions.py +0 -0
  188. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/assistant.py +0 -0
  189. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/cli.py +0 -0
  190. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/column.py +0 -0
  191. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/compare.py +0 -0
  192. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/game_revenue-duckdb.zip +0 -0
  193. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/game_revenue.zip +0 -0
  194. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/global_sales-duckdb.zip +0 -0
  195. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/global_sales.zip +0 -0
  196. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/nycflights-duckdb.zip +0 -0
  197. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/nycflights.zip +0 -0
  198. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/polars-api-docs.txt +0 -0
  199. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/small_table-duckdb.zip +0 -0
  200. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/data/small_table.zip +0 -0
  201. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/datascan.py +0 -0
  202. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/draft.py +0 -0
  203. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/scan_profile.py +0 -0
  204. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/scan_profile_stats.py +0 -0
  205. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/schema.py +0 -0
  206. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/segments.py +0 -0
  207. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/tf.py +0 -0
  208. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank/thresholds.py +0 -0
  209. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank.egg-info/SOURCES.txt +0 -0
  210. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank.egg-info/dependency_links.txt +0 -0
  211. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank.egg-info/entry_points.txt +0 -0
  212. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank.egg-info/requires.txt +0 -0
  213. {pointblank-0.12.1 → pointblank-0.12.2}/pointblank.egg-info/top_level.txt +0 -0
  214. {pointblank-0.12.1 → pointblank-0.12.2}/pyproject.toml +0 -0
  215. {pointblank-0.12.1 → pointblank-0.12.2}/setup.cfg +0 -0
  216. {pointblank-0.12.1 → pointblank-0.12.2}/tests/__init__.py +0 -0
  217. {pointblank-0.12.1 → pointblank-0.12.2}/tests/manual_tests/schema_step_reports.qmd +0 -0
  218. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_datascan/test_col_summary_tbl_duckdb_snap/col_summary_html_duckdb.html +0 -0
  219. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_datascan/test_col_summary_tbl_pandas_snap/col_summary_html_pandas.html +0 -0
  220. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_datascan/test_col_summary_tbl_polars_snap/col_summary_html_polars.html +0 -0
  221. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +0 -0
  222. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_01/schema_step_report_01-0.txt +0 -0
  223. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_01_1/schema_step_report_01-1.txt +0 -0
  224. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_01_2/schema_step_report_01-2.txt +0 -0
  225. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_01_3/schema_step_report_01-3.txt +0 -0
  226. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_02/schema_step_report_02-0.txt +0 -0
  227. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_02_1/schema_step_report_02-1.txt +0 -0
  228. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_02_2/schema_step_report_02-2.txt +0 -0
  229. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_02_3/schema_step_report_02-3.txt +0 -0
  230. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_03/schema_step_report_03-0.txt +0 -0
  231. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_03_1/schema_step_report_03-1.txt +0 -0
  232. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_03_2/schema_step_report_03-2.txt +0 -0
  233. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_03_3/schema_step_report_03-3.txt +0 -0
  234. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_04/schema_step_report_04-0.txt +0 -0
  235. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_05/schema_step_report_05-0.txt +0 -0
  236. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_06/schema_step_report_06-0.txt +0 -0
  237. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_07/schema_step_report_07-0.txt +0 -0
  238. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_08/schema_step_report_08-0.txt +0 -0
  239. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_09/schema_step_report_09-0.txt +0 -0
  240. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_10/schema_step_report_10-0.txt +0 -0
  241. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_11/schema_step_report_11-0.txt +0 -0
  242. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_12/schema_step_report_12-0.txt +0 -0
  243. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_13/schema_step_report_13-0.txt +0 -0
  244. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_14/schema_step_report_14-0.txt +0 -0
  245. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_14_1/schema_step_report_14-1.txt +0 -0
  246. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_15/schema_step_report_15-0.txt +0 -0
  247. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_15_1/schema_step_report_15-1.txt +0 -0
  248. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_16/schema_step_report_16-0.txt +0 -0
  249. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_16_1/schema_step_report_16-1.txt +0 -0
  250. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_17/schema_step_report_17-0.txt +0 -0
  251. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_17_1/schema_step_report_17-1.txt +0 -0
  252. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_18/schema_step_report_18-0.txt +0 -0
  253. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_18_1/schema_step_report_18-1.txt +0 -0
  254. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_19/schema_step_report_19-0.txt +0 -0
  255. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_19_1/schema_step_report_19-1.txt +0 -0
  256. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_20/schema_step_report_20-0.txt +0 -0
  257. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_20_1/schema_step_report_20-1.txt +0 -0
  258. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_21/schema_step_report_21-0.txt +0 -0
  259. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_21_1/schema_step_report_21-1.txt +0 -0
  260. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_21_2/schema_step_report_21-2.txt +0 -0
  261. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_21_3/schema_step_report_21-3.txt +0 -0
  262. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_22/schema_step_report_22-0.txt +0 -0
  263. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_22_1/schema_step_report_22-1.txt +0 -0
  264. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_23/schema_step_report_23-0.txt +0 -0
  265. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_23_1/schema_step_report_23-1.txt +0 -0
  266. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_24/schema_step_report_24-0.txt +0 -0
  267. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_24_1/schema_step_report_24-1.txt +0 -0
  268. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_24_2/schema_step_report_24-2.txt +0 -0
  269. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_24_3/schema_step_report_24-3.txt +0 -0
  270. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_25/schema_step_report_25-0.txt +0 -0
  271. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_25_1/schema_step_report_25-1.txt +0 -0
  272. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_25_2/schema_step_report_25-2.txt +0 -0
  273. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_25_3/schema_step_report_25-3.txt +0 -0
  274. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_25_4/schema_step_report_25-4.txt +0 -0
  275. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_step_report_25_5/schema_step_report_25-5.txt +0 -0
  276. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
  277. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
  278. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
  279. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
  280. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
  281. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
  282. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
  283. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
  284. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
  285. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
  286. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
  287. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
  288. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
  289. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
  290. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
  291. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
  292. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
  293. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
  294. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
  295. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
  296. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
  297. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
  298. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
  299. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
  300. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
  301. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
  302. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
  303. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
  304. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
  305. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
  306. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
  307. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
  308. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
  309. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
  310. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
  311. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
  312. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
  313. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
  314. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
  315. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
  316. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
  317. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
  318. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
  319. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
  320. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
  321. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_no_interrogation_validation_report_html_snap/no_interrogation_validation_report.html +0 -0
  322. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_no_steps_validation_report_html_snap/no_steps_validation_report.html +0 -0
  323. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +0 -0
  324. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +0 -0
  325. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  326. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  327. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd/validation_report.json +0 -0
  328. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl/validation_report.json +0 -0
  329. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pyspark/validation_report.json +0 -0
  330. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  331. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  332. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  333. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pd/validation_report.json +0 -0
  334. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pl/validation_report.json +0 -0
  335. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pyspark/validation_report.json +0 -0
  336. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  337. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_segments_html/duckdb/validation_report_segments.html +0 -0
  338. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_segments_html/pandas/validation_report_segments.html +0 -0
  339. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_segments_html/polars/validation_report_segments.html +0 -0
  340. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/polars/validation_report_segments_with_pre.html +0 -0
  341. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/validation_report_segments_with_pre.html +0 -0
  342. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_duckdb/validation_report.json +0 -0
  343. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_parquet/validation_report.json +0 -0
  344. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pd/validation_report.json +0 -0
  345. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pl/validation_report.json +0 -0
  346. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pyspark/validation_report.json +0 -0
  347. {pointblank-0.12.1 → pointblank-0.12.2}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_sqlite/validation_report.json +0 -0
  348. {pointblank-0.12.1 → pointblank-0.12.2}/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
  349. {pointblank-0.12.1 → pointblank-0.12.2}/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
  350. {pointblank-0.12.1 → pointblank-0.12.2}/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
  351. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/parquet_data/data_a.parquet +0 -0
  352. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/parquet_data/data_b.parquet +0 -0
  353. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/parquet_data/subdir/nested_data.parquet +0 -0
  354. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_sales/status=cancelled/0.parquet +0 -0
  355. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_sales/status=delivered/0.parquet +0 -0
  356. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_sales/status=pending/0.parquet +0 -0
  357. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_sales/status=returned/0.parquet +0 -0
  358. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_sales/status=shipped/0.parquet +0 -0
  359. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_small_table/f=high/0.parquet +0 -0
  360. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_small_table/f=low/0.parquet +0 -0
  361. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/partitioned_small_table/f=mid/0.parquet +0 -0
  362. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/taxi_part_01.parquet +0 -0
  363. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/taxi_part_02.parquet +0 -0
  364. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/taxi_part_03.parquet +0 -0
  365. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/taxi_sample.parquet +0 -0
  366. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
  367. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
  368. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
  369. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
  370. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_xyz.ddb +0 -0
  371. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_xyz.parquet +0 -0
  372. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_xyz.sqlite +0 -0
  373. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
  374. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
  375. {pointblank-0.12.1 → pointblank-0.12.2}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
  376. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test__interrogation.py +0 -0
  377. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test__utils.py +0 -0
  378. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test__utils_check_args.py +0 -0
  379. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_actions.py +0 -0
  380. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_assistant.py +0 -0
  381. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_cli.py +0 -0
  382. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_column.py +0 -0
  383. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_compare.py +0 -0
  384. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_datascan.py +0 -0
  385. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_draft.py +0 -0
  386. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_meta.py +0 -0
  387. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_schema.py +0 -0
  388. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_segments.py +0 -0
  389. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_tf.py +0 -0
  390. {pointblank-0.12.1 → pointblank-0.12.2}/tests/test_thresholds.py +0 -0
  391. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.ar.md +0 -0
  392. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.de.md +0 -0
  393. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.es.md +0 -0
  394. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.fr.md +0 -0
  395. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.hi.md +0 -0
  396. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.it.md +0 -0
  397. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.ja.md +0 -0
  398. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.ko.md +0 -0
  399. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.nl.md +0 -0
  400. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.pt-BR.md +0 -0
  401. {pointblank-0.12.1 → pointblank-0.12.2}/translations/README.zh-CN.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.12.1
3
+ Version: 0.12.2
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
@@ -194,6 +194,7 @@ quartodoc:
194
194
  can split the data based on the validation results (with `get_sundered_data()`).
195
195
  contents:
196
196
  - name: Validate.interrogate
197
+ - name: Validate.set_tbl
197
198
  - name: Validate.get_tabular_report
198
199
  - name: Validate.get_step_report
199
200
  - name: Validate.get_json_report
@@ -56,6 +56,40 @@ tbl:
56
56
  pl.scan_csv("data.csv").filter(pl.col("date") >= "2024-01-01")
57
57
  ```
58
58
 
59
+ #### Using Templates with `set_tbl=`
60
+
61
+ For reusable validation templates that will always use a custom data source via the `set_tbl=`
62
+ parameter in `yaml_interrogate()`, the `tbl` field is still required but its value doesn't matter
63
+ since it will be overridden. Recommended approaches:
64
+
65
+ ```yaml
66
+ # Option 1: Use a valid dataset name (gets overridden anyway)
67
+ tbl: small_table # Will be ignored when `set_tbl=` is used
68
+
69
+ # Option 2: Use YAML null (clearest semantic intent)
70
+ tbl: null # Indicates table will be provided via `set_tbl=`
71
+ ```
72
+
73
+ When using `yaml_interrogate()` with `set_tbl=`, the validation template becomes fully reusable:
74
+
75
+ ```python
76
+ # Define reusable template
77
+ template = """
78
+ tbl: null # Will be overridden
79
+ tbl_name: "Sales Validation"
80
+ steps:
81
+ - col_exists:
82
+ columns: [customer_id, revenue, region]
83
+ - col_vals_gt:
84
+ columns: [revenue]
85
+ value: 0
86
+ """
87
+
88
+ # Apply to different datasets
89
+ q1_result = pb.yaml_interrogate(template, set_tbl=q1_data)
90
+ q2_result = pb.yaml_interrogate(template, set_tbl=q2_data)
91
+ ```
92
+
59
93
  ### DataFrame Library (`df_library`)
60
94
 
61
95
  The `df_library` key controls which DataFrame library is used to load data sources. This parameter
@@ -117,7 +151,7 @@ thresholds:
117
151
  critical: 0.15 # 15% failure rate triggers critical
118
152
  ```
119
153
 
120
- - values: numbers between 0 and 1 (percentages) or integers (row counts)
154
+ - values: numbers between `0` and `1` (percentages) or integers (row counts)
121
155
  - levels: `warning`, `error`, `critical`
122
156
 
123
157
  ### Global Actions
@@ -477,6 +511,7 @@ For Pandas DataFrames (when using `df_library: pandas`):
477
511
  ```yaml
478
512
  - specially:
479
513
  expr: "lambda df: df.assign(is_valid=df['a'] + df['d'] > 0)"
514
+ ```
480
515
 
481
516
  ## Column Selection Patterns
482
517
 
@@ -167,6 +167,136 @@ tbl:
167
167
  )
168
168
  ```
169
169
 
170
+ ## Reusable Templates with `set_tbl=`
171
+
172
+ One of the most powerful features of YAML validation workflows is the ability to create reusable
173
+ templates that can be applied to different datasets. Using the `set_tbl=` parameter with
174
+ `yaml_interrogate()`, you can define validation logic once and apply it to multiple data sources.
175
+
176
+ ### Creating Validation Templates
177
+
178
+ When creating templates for use with `set_tbl=`, the `tbl` field is still required but its value
179
+ will be overridden. The recommended approach is to use `tbl: null`:
180
+
181
+ ```yaml
182
+ tbl: null
183
+ tbl_name: "Sales Data Validation Template"
184
+ label: "Standard validation checks for sales data"
185
+ steps:
186
+ - col_exists:
187
+ columns: [customer_id, revenue, region, date]
188
+ - col_vals_not_null:
189
+ columns: [customer_id, revenue]
190
+ - col_vals_gt:
191
+ columns: [revenue]
192
+ value: 0
193
+ - col_vals_in_set:
194
+ columns: [region]
195
+ set: [North, South, East, West]
196
+ ```
197
+
198
+ ### Applying Templates to Multiple Datasets
199
+
200
+ Here's a practical example showing how to apply the same validation template to multiple quarterly
201
+ datasets, demonstrating the power of reusable YAML configurations:
202
+
203
+ ```{python}
204
+ import pointblank as pb
205
+ import polars as pl
206
+
207
+ # Define the template once
208
+ sales_template = """
209
+ tbl: null # Will be overridden
210
+ tbl_name: "Sales Data Validation"
211
+ label: "Standard sales validation checks"
212
+ thresholds:
213
+ warning: 0.05
214
+ error: 0.1
215
+ steps:
216
+ - col_exists:
217
+ columns: [customer_id, revenue, region]
218
+ - col_vals_not_null:
219
+ columns: [customer_id, revenue]
220
+ - col_vals_gt:
221
+ columns: [revenue]
222
+ value: 0
223
+ - col_vals_in_set:
224
+ columns: [region]
225
+ set: [North, South, East, West]
226
+ """
227
+
228
+ # Create different datasets
229
+ q1_data = pl.DataFrame({
230
+ "customer_id": [1, 2, 3, 4],
231
+ "revenue": [100, 200, 150, 300],
232
+ "region": ["North", "South", "East", "West"]
233
+ })
234
+
235
+ q2_data = pl.DataFrame({
236
+ "customer_id": [5, 6, 7, 8],
237
+ "revenue": [250, 180, 220, 350],
238
+ "region": ["South", "North", "West", "East"]
239
+ })
240
+
241
+ # Apply the same template to both datasets
242
+ q1_result = pb.yaml_interrogate(sales_template, set_tbl=q1_data)
243
+ q2_result = pb.yaml_interrogate(sales_template, set_tbl=q2_data)
244
+
245
+ print(f"Q1 validation: {all(v.all_passed for v in q1_result.validation_info)}")
246
+ print(f"Q2 validation: {all(v.all_passed for v in q2_result.validation_info)}")
247
+ ```
248
+
249
+ ### Template Best Practices
250
+
251
+ 1. **Use `tbl: null`**: this clearly indicates the template expects a data source to be provided
252
+ 2. **Include comprehensive metadata**: use `tbl_name`, `label`, and `brief` to make results
253
+ self-documenting
254
+ 3. **Set appropriate thresholds**: define warning/error levels that make sense for your use case
255
+ 4. **Version control templates**: store templates in your repository alongside your data processing
256
+ code
257
+ 5. **Test with sample data**: validate your templates work with representative datasets
258
+
259
+ ### Common Template Patterns
260
+
261
+ For API response validation, you can ensure that responses have the expected structure and valid
262
+ status codes:
263
+
264
+ ```yaml
265
+ tbl: null
266
+ tbl_name: "API Response Validation"
267
+ brief: "Standard checks for API response data"
268
+ steps:
269
+ - col_exists:
270
+ columns: [user_id, status, timestamp]
271
+ - col_vals_in_set:
272
+ columns: [status]
273
+ set: [success, error, pending]
274
+ - col_vals_not_null:
275
+ columns: [user_id, timestamp]
276
+ ```
277
+
278
+ For file upload validation, you can check file sizes and formats to ensure they meet your
279
+ requirements:
280
+
281
+ ```yaml
282
+ tbl: null
283
+ tbl_name: "File Upload Validation"
284
+ steps:
285
+ - col_vals_gt:
286
+ columns: [file_size]
287
+ value: 0
288
+ - col_vals_lt:
289
+ columns: [file_size]
290
+ value: 10485760 # 10MB limit
291
+ - col_vals_in_set:
292
+ columns: [file_type]
293
+ set: [csv, json, xlsx, parquet]
294
+ ```
295
+
296
+ This template approach is particularly valuable in data pipelines, ETL processes, and automated
297
+ testing scenarios where you need to apply consistent validation logic across multiple similar
298
+ datasets.
299
+
170
300
  ## Validation Steps
171
301
 
172
302
  YAML supports all of Pointblank's validation methods. Here are some common patterns:
@@ -9798,7 +9798,7 @@ validation workflows. The `yaml_interrogate()` function can be used to run a val
9798
9798
  YAML strings or files. The `validate_yaml()` function checks if the YAML configuration
9799
9799
  passes its own validity checks.
9800
9800
 
9801
- yaml_interrogate(yaml: 'Union[str, Path]') -> 'Validate'
9801
+ yaml_interrogate(yaml: 'Union[str, Path]', set_tbl: 'Union[FrameT, Any, None]' = None) -> 'Validate'
9802
9802
  Execute a YAML-based validation workflow.
9803
9803
 
9804
9804
  This is the main entry point for YAML-based validation workflows. It takes YAML configuration
@@ -9813,13 +9813,20 @@ Execute a YAML-based validation workflow.
9813
9813
  yaml
9814
9814
  YAML configuration as string or file path. Can be: (1) a YAML string containing the
9815
9815
  validation configuration, or (2) a Path object or string path to a YAML file.
9816
+ set_tbl
9817
+ An optional table to override the table specified in the YAML configuration. This allows you
9818
+ to apply a YAML-defined validation workflow to a different table than what's specified in
9819
+ the configuration. If provided, this table will replace the table defined in the YAML's
9820
+ `tbl` field before executing the validation workflow. This can be any supported table type
9821
+ including DataFrame objects, Ibis table objects, CSV file paths, Parquet file paths, GitHub
9822
+ URLs, or database connection strings.
9816
9823
 
9817
9824
  Returns
9818
9825
  -------
9819
9826
  Validate
9820
- An instance of the `Validate` class that has been configured based on the YAML input.
9821
- This object contains the results of the validation steps defined in the YAML configuration.
9822
- It includes metadata like table name, label, language, and thresholds if specified.
9827
+ An instance of the `Validate` class that has been configured based on the YAML input. This
9828
+ object contains the results of the validation steps defined in the YAML configuration. It
9829
+ includes metadata like table name, label, language, and thresholds if specified.
9823
9830
 
9824
9831
  Raises
9825
9832
  ------
@@ -9918,6 +9925,44 @@ Execute a YAML-based validation workflow.
9918
9925
  This approach is particularly useful for storing validation configurations as part of your data
9919
9926
  pipeline or version control system, allowing you to maintain validation rules alongside your
9920
9927
  code.
9928
+
9929
+ ### Using `set_tbl=` to Override the Table
9930
+
9931
+ The `set_tbl=` parameter allows you to override the table specified in the YAML configuration.
9932
+ This is useful when you have a template validation workflow but want to apply it to different
9933
+ tables:
9934
+
9935
+ ```python
9936
+ import polars as pl
9937
+
9938
+ # Create a test table with similar structure to small_table
9939
+ test_table = pl.DataFrame({
9940
+ "date": ["2023-01-01", "2023-01-02", "2023-01-03"],
9941
+ "a": [1, 2, 3],
9942
+ "b": ["1-abc-123", "2-def-456", "3-ghi-789"],
9943
+ "d": [150, 200, 250]
9944
+ })
9945
+
9946
+ # Use the same YAML config but apply it to our test table
9947
+ yaml_config = '''
9948
+ tbl: small_table # This will be overridden
9949
+ tbl_name: Test Table # This name will be used
9950
+ steps:
9951
+ - col_exists:
9952
+ columns: [date, a, b, d]
9953
+ - col_vals_gt:
9954
+ columns: [d]
9955
+ value: 100
9956
+ '''
9957
+
9958
+ # Execute with table override
9959
+ result = pb.yaml_interrogate(yaml_config, set_tbl=test_table)
9960
+ print(f"Validation applied to: {result.tbl_name}")
9961
+ result
9962
+ ```
9963
+
9964
+ This feature makes YAML configurations more reusable and flexible, allowing you to define
9965
+ validation logic once and apply it to multiple similar tables.
9921
9966
 
9922
9967
 
9923
9968
  validate_yaml(yaml: 'Union[str, Path]') -> 'None'
@@ -3758,6 +3758,141 @@ class Validate:
3758
3758
 
3759
3759
  self.validation_info = []
3760
3760
 
3761
+ def set_tbl(
3762
+ self,
3763
+ tbl: FrameT | Any,
3764
+ tbl_name: str | None = None,
3765
+ label: str | None = None,
3766
+ ) -> Validate:
3767
+ """
3768
+ Set or replace the table associated with the Validate object.
3769
+
3770
+ This method allows you to replace the table associated with a Validate object with a
3771
+ different (but presumably similar) table. This is useful when you want to apply the same
3772
+ validation plan to multiple tables or when you have a validation workflow defined but want
3773
+ to swap in a different data source.
3774
+
3775
+ Parameters
3776
+ ----------
3777
+ tbl
3778
+ The table to replace the existing table with. This can be any supported table type
3779
+ including DataFrame objects, Ibis table objects, CSV file paths, Parquet file paths,
3780
+ GitHub URLs, or database connection strings. The same table type constraints apply as in
3781
+ the `Validate` constructor.
3782
+ tbl_name
3783
+ An optional name to assign to the new input table object. If no value is provided, the
3784
+ existing table name will be retained.
3785
+ label
3786
+ An optional label for the validation plan. If no value is provided, the existing label
3787
+ will be retained.
3788
+
3789
+ Returns
3790
+ -------
3791
+ Validate
3792
+ A new `Validate` object with the replacement table.
3793
+
3794
+ When to Use
3795
+ -----------
3796
+ The `set_tbl()` method is particularly useful in scenarios where you have:
3797
+
3798
+ - multiple similar tables that need the same validation checks
3799
+ - a template validation workflow that should be applied to different data sources
3800
+ - YAML-defined validations where you want to override the table specified in the YAML
3801
+
3802
+ The `set_tbl()` method creates a copy of the validation object with the new table, so the
3803
+ original validation object remains unchanged. This allows you to reuse validation plans
3804
+ across multiple tables without interference.
3805
+
3806
+ Examples
3807
+ --------
3808
+ ```{python}
3809
+ #| echo: false
3810
+ #| output: false
3811
+ import pointblank as pb
3812
+ pb.config(report_incl_header=False, report_incl_footer=False, preview_incl_header=False)
3813
+ ```
3814
+ We will first create two similar tables for our future validation plans.
3815
+
3816
+ ```{python}
3817
+ import pointblank as pb
3818
+ import polars as pl
3819
+
3820
+ # Create two similar tables
3821
+ table_1 = pl.DataFrame({
3822
+ "x": [1, 2, 3, 4, 5],
3823
+ "y": [5, 4, 3, 2, 1],
3824
+ "z": ["a", "b", "c", "d", "e"]
3825
+ })
3826
+
3827
+ table_2 = pl.DataFrame({
3828
+ "x": [2, 4, 6, 8, 10],
3829
+ "y": [10, 8, 6, 4, 2],
3830
+ "z": ["f", "g", "h", "i", "j"]
3831
+ })
3832
+ ```
3833
+
3834
+ Create a validation plan with the first table.
3835
+
3836
+ ```{python}
3837
+ validation_table_1 = (
3838
+ pb.Validate(
3839
+ data=table_1,
3840
+ tbl_name="Table 1",
3841
+ label="Validation applied to the first table"
3842
+ )
3843
+ .col_vals_gt(columns="x", value=0)
3844
+ .col_vals_lt(columns="y", value=10)
3845
+ )
3846
+ ```
3847
+
3848
+ Now apply the same validation plan to the second table.
3849
+
3850
+ ```{python}
3851
+ validation_table_2 = (
3852
+ validation_table_1
3853
+ .set_tbl(
3854
+ tbl=table_2,
3855
+ tbl_name="Table 2",
3856
+ label="Validation applied to the second table"
3857
+ )
3858
+ )
3859
+ ```
3860
+
3861
+ Here is the interrogation of the first table:
3862
+
3863
+ ```{python}
3864
+ validation_table_1.interrogate()
3865
+ ```
3866
+
3867
+ And the second table:
3868
+
3869
+ ```{python}
3870
+ validation_table_2.interrogate()
3871
+ ```
3872
+ """
3873
+ from copy import deepcopy
3874
+
3875
+ # Create a deep copy of the current Validate object
3876
+ new_validate = deepcopy(self)
3877
+
3878
+ # Process the new table through the centralized data processing pipeline
3879
+ new_validate.data = _process_data(tbl)
3880
+
3881
+ # Update table name if provided, otherwise keep existing
3882
+ if tbl_name is not None:
3883
+ new_validate.tbl_name = tbl_name
3884
+
3885
+ # Update label if provided, otherwise keep existing
3886
+ if label is not None:
3887
+ new_validate.label = label
3888
+
3889
+ # Reset interrogation state since we have a new table, but preserve validation steps
3890
+ new_validate.time_start = None
3891
+ new_validate.time_end = None
3892
+ # Note: We keep validation_info as it contains the defined validation steps
3893
+
3894
+ return new_validate
3895
+
3761
3896
  def _repr_html_(self) -> str:
3762
3897
  return self.get_tabular_report()._repr_html_() # pragma: no cover
3763
3898
 
@@ -4,6 +4,7 @@ from pathlib import Path
4
4
  from typing import Any, Union
5
5
 
6
6
  import yaml
7
+ from narwhals.typing import FrameT
7
8
 
8
9
  from pointblank._utils import _is_lib_present
9
10
  from pointblank.thresholds import Actions
@@ -749,7 +750,7 @@ class YAMLValidator:
749
750
  return validation
750
751
 
751
752
 
752
- def yaml_interrogate(yaml: Union[str, Path]) -> Validate:
753
+ def yaml_interrogate(yaml: Union[str, Path], set_tbl: Union[FrameT, Any, None] = None) -> Validate:
753
754
  """Execute a YAML-based validation workflow.
754
755
 
755
756
  This is the main entry point for YAML-based validation workflows. It takes YAML configuration
@@ -764,13 +765,20 @@ def yaml_interrogate(yaml: Union[str, Path]) -> Validate:
764
765
  yaml
765
766
  YAML configuration as string or file path. Can be: (1) a YAML string containing the
766
767
  validation configuration, or (2) a Path object or string path to a YAML file.
768
+ set_tbl
769
+ An optional table to override the table specified in the YAML configuration. This allows you
770
+ to apply a YAML-defined validation workflow to a different table than what's specified in
771
+ the configuration. If provided, this table will replace the table defined in the YAML's
772
+ `tbl` field before executing the validation workflow. This can be any supported table type
773
+ including DataFrame objects, Ibis table objects, CSV file paths, Parquet file paths, GitHub
774
+ URLs, or database connection strings.
767
775
 
768
776
  Returns
769
777
  -------
770
778
  Validate
771
- An instance of the `Validate` class that has been configured based on the YAML input.
772
- This object contains the results of the validation steps defined in the YAML configuration.
773
- It includes metadata like table name, label, language, and thresholds if specified.
779
+ An instance of the `Validate` class that has been configured based on the YAML input. This
780
+ object contains the results of the validation steps defined in the YAML configuration. It
781
+ includes metadata like table name, label, language, and thresholds if specified.
774
782
 
775
783
  Raises
776
784
  ------
@@ -875,10 +883,59 @@ def yaml_interrogate(yaml: Union[str, Path]) -> Validate:
875
883
  This approach is particularly useful for storing validation configurations as part of your data
876
884
  pipeline or version control system, allowing you to maintain validation rules alongside your
877
885
  code.
886
+
887
+ ### Using `set_tbl=` to Override the Table
888
+
889
+ The `set_tbl=` parameter allows you to override the table specified in the YAML configuration.
890
+ This is useful when you have a template validation workflow but want to apply it to different
891
+ tables:
892
+
893
+ ```{python}
894
+ import polars as pl
895
+
896
+ # Create a test table with similar structure to small_table
897
+ test_table = pl.DataFrame({
898
+ "date": ["2023-01-01", "2023-01-02", "2023-01-03"],
899
+ "a": [1, 2, 3],
900
+ "b": ["1-abc-123", "2-def-456", "3-ghi-789"],
901
+ "d": [150, 200, 250]
902
+ })
903
+
904
+ # Use the same YAML config but apply it to our test table
905
+ yaml_config = '''
906
+ tbl: small_table # This will be overridden
907
+ tbl_name: Test Table # This name will be used
908
+ steps:
909
+ - col_exists:
910
+ columns: [date, a, b, d]
911
+ - col_vals_gt:
912
+ columns: [d]
913
+ value: 100
914
+ '''
915
+
916
+ # Execute with table override
917
+ result = pb.yaml_interrogate(yaml_config, set_tbl=test_table)
918
+ print(f"Validation applied to: {result.tbl_name}")
919
+ result
920
+ ```
921
+
922
+ This feature makes YAML configurations more reusable and flexible, allowing you to define
923
+ validation logic once and apply it to multiple similar tables.
878
924
  """
879
925
  validator = YAMLValidator()
880
926
  config = validator.load_config(yaml)
881
- return validator.execute_workflow(config)
927
+
928
+ # If `set_tbl=` is provided, we need to build the validation workflow and then use `set_tbl()`
929
+ if set_tbl is not None:
930
+ # First build the validation object without interrogation
931
+ validation = validator.build_validation(config)
932
+ # Then replace the table using set_tbl method
933
+ validation = validation.set_tbl(tbl=set_tbl)
934
+ # Finally interrogate with the new table
935
+ return validation.interrogate()
936
+ else:
937
+ # Standard execution without table override (includes interrogation)
938
+ return validator.execute_workflow(config)
882
939
 
883
940
 
884
941
  def load_yaml_config(file_path: Union[str, Path]) -> dict:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.12.1
3
+ Version: 0.12.2
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