pointblank 0.9.6__tar.gz → 0.11.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. {pointblank-0.9.6 → pointblank-0.11.0}/.github/workflows/ci-docs.yaml +5 -1
  2. {pointblank-0.9.6 → pointblank-0.11.0}/.github/workflows/ci-tests.yaml +2 -6
  3. {pointblank-0.9.6 → pointblank-0.11.0}/.gitignore +3 -0
  4. {pointblank-0.9.6 → pointblank-0.11.0}/Makefile +1 -1
  5. {pointblank-0.9.6 → pointblank-0.11.0}/PKG-INFO +49 -3
  6. {pointblank-0.9.6 → pointblank-0.11.0}/README.md +45 -1
  7. {pointblank-0.9.6 → pointblank-0.11.0}/docs/_extensions/machow/interlinks/interlinks.lua +183 -26
  8. {pointblank-0.9.6 → pointblank-0.11.0}/docs/_quarto.yml +12 -0
  9. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank_logo.svg +160 -12
  10. pointblank-0.11.0/docs/assets/posit-logo-black.svg +1 -0
  11. pointblank-0.11.0/docs/assets/vhs/cli-cicd-workflows.gif +0 -0
  12. pointblank-0.11.0/docs/assets/vhs/cli-cicd-workflows.tape +51 -0
  13. pointblank-0.11.0/docs/assets/vhs/cli-complete-workflow.gif +0 -0
  14. pointblank-0.11.0/docs/assets/vhs/cli-complete-workflow.tape +59 -0
  15. pointblank-0.11.0/docs/assets/vhs/cli-data-exploration.gif +0 -0
  16. pointblank-0.11.0/docs/assets/vhs/cli-data-exploration.tape +43 -0
  17. pointblank-0.11.0/docs/assets/vhs/cli-essential-validations.gif +0 -0
  18. pointblank-0.11.0/docs/assets/vhs/cli-essential-validations.tape +43 -0
  19. pointblank-0.11.0/docs/assets/vhs/cli-getting-started.gif +0 -0
  20. pointblank-0.11.0/docs/assets/vhs/cli-getting-started.tape +43 -0
  21. pointblank-0.11.0/docs/blog/lets-workshop-together/index.qmd +35 -0
  22. pointblank-0.11.0/docs/blog/validation-libs-2025/index.qmd +726 -0
  23. pointblank-0.11.0/docs/demos/07-validation-with-actions/index.qmd +115 -0
  24. pointblank-0.11.0/docs/demos/08-validation-with-final-actions/index.qmd +113 -0
  25. pointblank-0.11.0/docs/demos/check-for-freshness/index.qmd +87 -0
  26. pointblank-0.11.0/docs/demos/cli-interactive/index.qmd +141 -0
  27. pointblank-0.11.0/docs/demos/custom-validation-specially/index.qmd +93 -0
  28. pointblank-0.11.0/docs/demos/img/validation_with_actions.png +0 -0
  29. pointblank-0.11.0/docs/demos/img/validation_with_final_actions.png +0 -0
  30. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/index.qmd +29 -0
  31. {pointblank-0.9.6 → pointblank-0.11.0}/docs/index.qmd +64 -0
  32. pointblank-0.11.0/docs/scripts/post-render.py +365 -0
  33. {pointblank-0.9.6 → pointblank-0.11.0}/docs/styles.css +63 -25
  34. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/actions.qmd +33 -57
  35. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/assertions.qmd +32 -49
  36. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/briefs.qmd +56 -77
  37. pointblank-0.11.0/docs/user-guide/cli.qmd +229 -0
  38. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/col-summary-tbl.qmd +9 -11
  39. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/column-selection-patterns.qmd +31 -47
  40. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/draft-validation.qmd +43 -70
  41. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/expressions.qmd +19 -23
  42. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/extracts.qmd +61 -67
  43. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/index.qmd +10 -14
  44. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/installation.qmd +30 -2
  45. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/missing-vals-tbl.qmd +7 -10
  46. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/preprocessing.qmd +27 -12
  47. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/preview.qmd +13 -20
  48. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/schema-validation.qmd +49 -53
  49. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/segmentation.qmd +32 -26
  50. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/step-reports.qmd +30 -34
  51. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/sundering.qmd +40 -47
  52. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/thresholds.qmd +3 -4
  53. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/validation-methods.qmd +48 -76
  54. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/validation-overview.qmd +4 -8
  55. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/__init__.py +4 -0
  56. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_constants.py +4 -0
  57. pointblank-0.11.0/pointblank/_datascan_utils.py +65 -0
  58. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_utils.py +126 -0
  59. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_utils_html.py +40 -0
  60. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/assistant.py +1 -3
  61. pointblank-0.11.0/pointblank/cli.py +2737 -0
  62. pointblank-0.11.0/pointblank/compare.py +27 -0
  63. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/api-docs.txt +518 -125
  64. pointblank-0.11.0/pointblank/datascan.py +570 -0
  65. pointblank-0.11.0/pointblank/scan_profile.py +321 -0
  66. pointblank-0.11.0/pointblank/scan_profile_stats.py +180 -0
  67. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/schema.py +14 -3
  68. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/validate.py +1425 -202
  69. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank.egg-info/PKG-INFO +49 -3
  70. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank.egg-info/SOURCES.txt +46 -0
  71. pointblank-0.11.0/pointblank.egg-info/entry_points.txt +2 -0
  72. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank.egg-info/requires.txt +3 -1
  73. {pointblank-0.9.6 → pointblank-0.11.0}/pyproject.toml +17 -5
  74. pointblank-0.11.0/tests/tbl_files/parquet_data/data_a.parquet +0 -0
  75. pointblank-0.11.0/tests/tbl_files/parquet_data/data_b.parquet +0 -0
  76. pointblank-0.11.0/tests/tbl_files/parquet_data/subdir/nested_data.parquet +0 -0
  77. pointblank-0.11.0/tests/tbl_files/partitioned_sales/status=cancelled/0.parquet +0 -0
  78. pointblank-0.11.0/tests/tbl_files/partitioned_sales/status=delivered/0.parquet +0 -0
  79. pointblank-0.11.0/tests/tbl_files/partitioned_sales/status=pending/0.parquet +0 -0
  80. pointblank-0.11.0/tests/tbl_files/partitioned_sales/status=returned/0.parquet +0 -0
  81. pointblank-0.11.0/tests/tbl_files/partitioned_sales/status=shipped/0.parquet +0 -0
  82. pointblank-0.11.0/tests/tbl_files/partitioned_small_table/f=high/0.parquet +0 -0
  83. pointblank-0.11.0/tests/tbl_files/partitioned_small_table/f=low/0.parquet +0 -0
  84. pointblank-0.11.0/tests/tbl_files/partitioned_small_table/f=mid/0.parquet +0 -0
  85. pointblank-0.11.0/tests/tbl_files/taxi_part_01.parquet +0 -0
  86. pointblank-0.11.0/tests/tbl_files/taxi_part_02.parquet +0 -0
  87. pointblank-0.11.0/tests/tbl_files/taxi_part_03.parquet +0 -0
  88. pointblank-0.11.0/tests/tbl_files/taxi_sample.parquet +0 -0
  89. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test__utils.py +19 -0
  90. pointblank-0.11.0/tests/test_cli.py +1764 -0
  91. pointblank-0.11.0/tests/test_compare.py +15 -0
  92. pointblank-0.11.0/tests/test_datascan.py +289 -0
  93. pointblank-0.11.0/tests/test_meta.py +31 -0
  94. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_schema.py +35 -15
  95. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_validate.py +2900 -119
  96. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.ar.md +43 -0
  97. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.de.md +43 -0
  98. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.es.md +43 -0
  99. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.fr.md +43 -0
  100. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.hi.md +43 -0
  101. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.it.md +43 -0
  102. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.ja.md +43 -0
  103. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.ko.md +43 -0
  104. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.nl.md +44 -1
  105. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.pt-BR.md +43 -0
  106. {pointblank-0.9.6 → pointblank-0.11.0}/translations/README.zh-CN.md +43 -0
  107. pointblank-0.9.6/pointblank/datascan.py +0 -1211
  108. pointblank-0.9.6/tests/test_datascan.py +0 -251
  109. {pointblank-0.9.6 → pointblank-0.11.0}/.github/CODE_OF_CONDUCT.md +0 -0
  110. {pointblank-0.9.6 → pointblank-0.11.0}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  111. {pointblank-0.9.6 → pointblank-0.11.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  112. {pointblank-0.9.6 → pointblank-0.11.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  113. {pointblank-0.9.6 → pointblank-0.11.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  114. {pointblank-0.9.6 → pointblank-0.11.0}/.github/SECURITY.md +0 -0
  115. {pointblank-0.9.6 → pointblank-0.11.0}/.github/workflows/code-checks.yaml +0 -0
  116. {pointblank-0.9.6 → pointblank-0.11.0}/.pre-commit-config.yaml +0 -0
  117. {pointblank-0.9.6 → pointblank-0.11.0}/.vscode/settings.json +0 -0
  118. {pointblank-0.9.6 → pointblank-0.11.0}/CITATION.cff +0 -0
  119. {pointblank-0.9.6 → pointblank-0.11.0}/CONTRIBUTING.md +0 -0
  120. {pointblank-0.9.6 → pointblank-0.11.0}/LICENSE +0 -0
  121. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/game_revenue.csv +0 -0
  122. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/global_sales.csv +0 -0
  123. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/global_sales_dataset.qmd +0 -0
  124. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/nycflights.csv +0 -0
  125. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/small_table.csv +0 -0
  126. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/x-01-parquet.qmd +0 -0
  127. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/x-02-duckdb.qmd +0 -0
  128. {pointblank-0.9.6 → pointblank-0.11.0}/data_raw/x-03-sqlite.qmd +0 -0
  129. {pointblank-0.9.6 → pointblank-0.11.0}/docs/.gitignore +0 -0
  130. {pointblank-0.9.6 → pointblank-0.11.0}/docs/_extensions/machow/interlinks/.gitignore +0 -0
  131. {pointblank-0.9.6 → pointblank-0.11.0}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
  132. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/fav-logo.png +0 -0
  133. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.de.png +0 -0
  134. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.es.png +0 -0
  135. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.fr.png +0 -0
  136. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.it.png +0 -0
  137. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.ja.png +0 -0
  138. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.ko.png +0 -0
  139. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.nl.png +0 -0
  140. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.png +0 -0
  141. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.pt-BR.png +0 -0
  142. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-sales-data.zh-CN.png +0 -0
  143. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-step-report.png +0 -0
  144. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/pointblank-tabular-report.png +0 -0
  145. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/validation-table-diagram.png +0 -0
  146. {pointblank-0.9.6 → pointblank-0.11.0}/docs/assets/validation-test-units.png +0 -0
  147. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/all-about-actions/index.qmd +0 -0
  148. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/index.qmd +0 -0
  149. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/intro-pointblank/index.qmd +0 -0
  150. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/intro-pointblank/pointblank-localized.png +0 -0
  151. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/intro-pointblank/step_report.png +0 -0
  152. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/intro-pointblank/validation-table-diagram.png +0 -0
  153. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/intro-pointblank/validation-test-units.png +0 -0
  154. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/advanced-in-sidebar.png +0 -0
  155. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/breadth-and-depth.png +0 -0
  156. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/explanation-of-visual.png +0 -0
  157. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/index.qmd +0 -0
  158. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/links-in-guide.png +0 -0
  159. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/segments.png +0 -0
  160. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/step-report.png +0 -0
  161. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/overhauled-user-guide/validation-three-things.png +0 -0
  162. {pointblank-0.9.6 → pointblank-0.11.0}/docs/blog/pointblank_blog_logo.png +0 -0
  163. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/01-starter/index.qmd +0 -0
  164. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/02-advanced/index.qmd +0 -0
  165. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/03-data-extracts/index.qmd +0 -0
  166. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/04-sundered-data/index.qmd +0 -0
  167. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/05-step-report-column-check/index.qmd +0 -0
  168. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
  169. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
  170. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/check-row-column-counts/index.qmd +0 -0
  171. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/checks-for-missing/index.qmd +0 -0
  172. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
  173. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/column-selector-functions/index.qmd +0 -0
  174. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/comparisons-across-columns/index.qmd +0 -0
  175. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/data/game_revenue.parquet +0 -0
  176. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
  177. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
  178. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/expect-text-pattern/index.qmd +0 -0
  179. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/failure-thresholds/index.qmd +0 -0
  180. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/img/advanced_validation.png +0 -0
  181. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/img/data_extracts.png +0 -0
  182. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/img/starter_validation.png +0 -0
  183. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/img/step_report_column_schema.png +0 -0
  184. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/img/step_report_column_values.png +0 -0
  185. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/img/sundered_data.png +0 -0
  186. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/mutate-table-in-step/index.qmd +0 -0
  187. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/numeric-comparisons/index.qmd +0 -0
  188. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/schema-check/index.qmd +0 -0
  189. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/set-membership/index.qmd +0 -0
  190. {pointblank-0.9.6 → pointblank-0.11.0}/docs/demos/using-parquet-data/index.qmd +0 -0
  191. {pointblank-0.9.6 → pointblank-0.11.0}/docs/user-guide/langs.qmd +0 -0
  192. {pointblank-0.9.6 → pointblank-0.11.0}/images/pointblank-tabular-report.png +0 -0
  193. {pointblank-0.9.6 → pointblank-0.11.0}/images/pointblank_logo.svg +0 -0
  194. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_constants_docs.py +0 -0
  195. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_constants_translations.py +0 -0
  196. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_interrogation.py +0 -0
  197. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_typing.py +0 -0
  198. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/_utils_check_args.py +0 -0
  199. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/actions.py +0 -0
  200. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/column.py +0 -0
  201. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/game_revenue-duckdb.zip +0 -0
  202. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/game_revenue.zip +0 -0
  203. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/global_sales-duckdb.zip +0 -0
  204. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/global_sales.zip +0 -0
  205. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/nycflights-duckdb.zip +0 -0
  206. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/nycflights.zip +0 -0
  207. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/polars-api-docs.txt +0 -0
  208. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/small_table-duckdb.zip +0 -0
  209. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/data/small_table.zip +0 -0
  210. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/draft.py +0 -0
  211. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/tf.py +0 -0
  212. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank/thresholds.py +0 -0
  213. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank.egg-info/dependency_links.txt +0 -0
  214. {pointblank-0.9.6 → pointblank-0.11.0}/pointblank.egg-info/top_level.txt +0 -0
  215. {pointblank-0.9.6 → pointblank-0.11.0}/setup.cfg +0 -0
  216. {pointblank-0.9.6 → pointblank-0.11.0}/tests/__init__.py +0 -0
  217. {pointblank-0.9.6 → pointblank-0.11.0}/tests/manual_tests/schema_step_reports.qmd +0 -0
  218. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_datascan/test_col_summary_tbl_duckdb_snap/col_summary_html_duckdb.html +0 -0
  219. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_datascan/test_col_summary_tbl_pandas_snap/col_summary_html_pandas.html +0 -0
  220. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_datascan/test_col_summary_tbl_polars_snap/col_summary_html_polars.html +0 -0
  221. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +0 -0
  222. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_01/schema_step_report_01-0.txt +0 -0
  223. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_01_1/schema_step_report_01-1.txt +0 -0
  224. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_01_2/schema_step_report_01-2.txt +0 -0
  225. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_01_3/schema_step_report_01-3.txt +0 -0
  226. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_02/schema_step_report_02-0.txt +0 -0
  227. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_02_1/schema_step_report_02-1.txt +0 -0
  228. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_02_2/schema_step_report_02-2.txt +0 -0
  229. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_02_3/schema_step_report_02-3.txt +0 -0
  230. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_03/schema_step_report_03-0.txt +0 -0
  231. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_03_1/schema_step_report_03-1.txt +0 -0
  232. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_03_2/schema_step_report_03-2.txt +0 -0
  233. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_03_3/schema_step_report_03-3.txt +0 -0
  234. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_04/schema_step_report_04-0.txt +0 -0
  235. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_05/schema_step_report_05-0.txt +0 -0
  236. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_06/schema_step_report_06-0.txt +0 -0
  237. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_07/schema_step_report_07-0.txt +0 -0
  238. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_08/schema_step_report_08-0.txt +0 -0
  239. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_09/schema_step_report_09-0.txt +0 -0
  240. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_10/schema_step_report_10-0.txt +0 -0
  241. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_11/schema_step_report_11-0.txt +0 -0
  242. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_12/schema_step_report_12-0.txt +0 -0
  243. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_13/schema_step_report_13-0.txt +0 -0
  244. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_14/schema_step_report_14-0.txt +0 -0
  245. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_14_1/schema_step_report_14-1.txt +0 -0
  246. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_15/schema_step_report_15-0.txt +0 -0
  247. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_15_1/schema_step_report_15-1.txt +0 -0
  248. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_16/schema_step_report_16-0.txt +0 -0
  249. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_16_1/schema_step_report_16-1.txt +0 -0
  250. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_17/schema_step_report_17-0.txt +0 -0
  251. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_17_1/schema_step_report_17-1.txt +0 -0
  252. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_18/schema_step_report_18-0.txt +0 -0
  253. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_18_1/schema_step_report_18-1.txt +0 -0
  254. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_19/schema_step_report_19-0.txt +0 -0
  255. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_19_1/schema_step_report_19-1.txt +0 -0
  256. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_20/schema_step_report_20-0.txt +0 -0
  257. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_20_1/schema_step_report_20-1.txt +0 -0
  258. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_21/schema_step_report_21-0.txt +0 -0
  259. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_21_1/schema_step_report_21-1.txt +0 -0
  260. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_21_2/schema_step_report_21-2.txt +0 -0
  261. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_21_3/schema_step_report_21-3.txt +0 -0
  262. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_22/schema_step_report_22-0.txt +0 -0
  263. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_22_1/schema_step_report_22-1.txt +0 -0
  264. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_23/schema_step_report_23-0.txt +0 -0
  265. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_23_1/schema_step_report_23-1.txt +0 -0
  266. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_24/schema_step_report_24-0.txt +0 -0
  267. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_24_1/schema_step_report_24-1.txt +0 -0
  268. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_24_2/schema_step_report_24-2.txt +0 -0
  269. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_24_3/schema_step_report_24-3.txt +0 -0
  270. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_25/schema_step_report_25-0.txt +0 -0
  271. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_1/schema_step_report_25-1.txt +0 -0
  272. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_2/schema_step_report_25-2.txt +0 -0
  273. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_3/schema_step_report_25-3.txt +0 -0
  274. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_4/schema_step_report_25-4.txt +0 -0
  275. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_5/schema_step_report_25-5.txt +0 -0
  276. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
  277. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
  278. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
  279. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
  280. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
  281. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
  282. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
  283. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
  284. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
  285. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
  286. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
  287. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
  288. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
  289. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
  290. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
  291. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
  292. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
  293. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
  294. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
  295. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
  296. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
  297. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
  298. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
  299. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
  300. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
  301. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
  302. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
  303. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
  304. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
  305. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
  306. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
  307. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
  308. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
  309. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
  310. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
  311. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
  312. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
  313. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
  314. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
  315. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
  316. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
  317. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
  318. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
  319. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
  320. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
  321. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_no_interrogation_validation_report_html_snap/no_interrogation_validation_report.html +0 -0
  322. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_no_steps_validation_report_html_snap/no_steps_validation_report.html +0 -0
  323. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +0 -0
  324. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +0 -0
  325. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  326. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  327. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd/validation_report.json +0 -0
  328. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl/validation_report.json +0 -0
  329. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  330. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  331. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  332. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pd/validation_report.json +0 -0
  333. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pl/validation_report.json +0 -0
  334. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  335. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_segments_html/duckdb/validation_report_segments.html +0 -0
  336. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_segments_html/pandas/validation_report_segments.html +0 -0
  337. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_segments_html/polars/validation_report_segments.html +0 -0
  338. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/polars/validation_report_segments_with_pre.html +0 -0
  339. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/validation_report_segments_with_pre.html +0 -0
  340. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_duckdb/validation_report.json +0 -0
  341. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_parquet/validation_report.json +0 -0
  342. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pd/validation_report.json +0 -0
  343. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pl/validation_report.json +0 -0
  344. {pointblank-0.9.6 → pointblank-0.11.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_sqlite/validation_report.json +0 -0
  345. {pointblank-0.9.6 → pointblank-0.11.0}/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
  346. {pointblank-0.9.6 → pointblank-0.11.0}/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
  347. {pointblank-0.9.6 → pointblank-0.11.0}/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
  348. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
  349. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
  350. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
  351. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
  352. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_xyz.ddb +0 -0
  353. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_xyz.parquet +0 -0
  354. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_xyz.sqlite +0 -0
  355. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
  356. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
  357. {pointblank-0.9.6 → pointblank-0.11.0}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
  358. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test__interrogation.py +0 -0
  359. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test__utils_check_args.py +0 -0
  360. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_actions.py +0 -0
  361. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_assistant.py +0 -0
  362. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_column.py +0 -0
  363. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_draft.py +0 -0
  364. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_tf.py +0 -0
  365. {pointblank-0.9.6 → pointblank-0.11.0}/tests/test_thresholds.py +0 -0
@@ -14,13 +14,17 @@ jobs:
14
14
  - uses: actions/checkout@v4
15
15
  - uses: actions/setup-python@v5
16
16
  with:
17
- python-version: "3.10"
17
+ python-version: "3.11"
18
18
  - name: Install dependencies
19
19
  run: |
20
20
  python -m pip install -e .
21
21
  python -m pip install ".[docs]"
22
22
  python -m pip install ibis-framework[duckdb]
23
23
  python -m pip install pins
24
+ python -m pip install pandera
25
+ python -m pip install patito
26
+ python -m pip install validoopsie
27
+ python -m pip install dataframely
24
28
  - name: Set up Quarto
25
29
  uses: quarto-dev/quarto-actions/setup@v2
26
30
  - name: Build docs
@@ -24,12 +24,8 @@ jobs:
24
24
  uses: actions/setup-python@v5
25
25
  with:
26
26
  python-version: ${{ matrix.python-version }}
27
- - name: Install dependencies
28
- run: |
29
- pip install -e '.[dev]'
30
- - name: Install test dependencies
31
- run: |
32
- pip install pytest pytest-rerunfailures pytest-randomly pytest-xdist pytest-cov pytest-snapshot pandas polars ibis-framework[duckdb,mysql,postgres,sqlite]>=9.5.0 chatlas requests shiny
27
+ - name: Install uv
28
+ uses: astral-sh/setup-uv@v5
33
29
  - name: pytest unit tests
34
30
  run: |
35
31
  make test
@@ -130,3 +130,6 @@ benchmark/results/
130
130
  benchmark/reports/
131
131
  benchmark/data/*.csv.gz
132
132
  benchmark/data/*.json
133
+ .swp
134
+
135
+ uv.lock
@@ -2,7 +2,7 @@
2
2
 
3
3
  .PHONY: test
4
4
  test:
5
- @pytest \
5
+ @uv run pytest \
6
6
  --cov=pointblank \
7
7
  --cov-report=term-missing \
8
8
  --randomly-seed 123 \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.9.6
3
+ Version: 0.11.0
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
@@ -43,9 +43,11 @@ License-File: LICENSE
43
43
  Requires-Dist: commonmark>=0.9.1
44
44
  Requires-Dist: importlib-metadata
45
45
  Requires-Dist: great_tables>=0.17.0
46
- Requires-Dist: narwhals>=1.24.1
46
+ Requires-Dist: narwhals>=1.41.0
47
47
  Requires-Dist: typing_extensions>=3.10.0.0
48
48
  Requires-Dist: requests>=2.31.0
49
+ Requires-Dist: click>=8.0.0
50
+ Requires-Dist: rich>=13.0.0
49
51
  Provides-Extra: pd
50
52
  Requires-Dist: pandas>=2.2.3; extra == "pd"
51
53
  Provides-Extra: pl
@@ -84,7 +86,7 @@ Dynamic: license-file
84
86
 
85
87
  <div align="center">
86
88
 
87
- <a href="https://posit-dev.github.io/pointblank/"><img src="https://posit-dev.github.io/pointblank/assets/pointblank_logo.svg" width="75%"/></a>
89
+ <a href="https://posit-dev.github.io/pointblank/"><img src="https://posit-dev.github.io/pointblank/assets/pointblank_logo.svg" width="85%"/></a>
88
90
 
89
91
  _Data validation made beautiful and powerful_
90
92
 
@@ -98,6 +100,7 @@ _Data validation made beautiful and powerful_
98
100
  [![Codecov branch](https://img.shields.io/codecov/c/github/posit-dev/pointblank/main.svg)](https://codecov.io/gh/posit-dev/pointblank)
99
101
  [![Repo Status](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
100
102
  [![Documentation](https://img.shields.io/badge/docs-project_website-blue.svg)](https://posit-dev.github.io/pointblank/)
103
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/posit-dev/pointblank)
101
104
 
102
105
  [![Contributors](https://img.shields.io/github/contributors/posit-dev/pointblank)](https://github.com/posit-dev/pointblank/graphs/contributors)
103
106
  [![Discord](https://img.shields.io/discord/1345877328982446110?color=%237289da&label=Discord)](https://discord.com/invite/YH7CybCNCQ)
@@ -232,6 +235,49 @@ validation.get_step_report(i=3).show("browser") # Get failing records from step
232
235
 
233
236
  <br>
234
237
 
238
+ ## Command Line Interface (CLI)
239
+
240
+ Pointblank includes a powerful CLI utility called `pb` that lets you run data validation workflows directly from the command line. Perfect for CI/CD pipelines, scheduled data quality checks, or quick validation tasks.
241
+
242
+ <div align="center">
243
+ <img src="https://posit-dev.github.io/pointblank/assets/vhs/cli-complete-workflow.gif" width="800px">
244
+ </div>
245
+
246
+ **Explore Your Data**
247
+
248
+ ```bash
249
+ # Get a quick preview of your data
250
+ pb preview small_table
251
+
252
+ # Check for missing values
253
+ pb missing small_table
254
+
255
+ # Generate column summaries
256
+ pb scan small_table
257
+ ```
258
+
259
+ **Run Essential Validations**
260
+
261
+ ```bash
262
+ # Check for duplicate rows
263
+ pb validate-simple small_table --check rows-distinct
264
+
265
+ # Verify no null values
266
+ pb validate-simple small_table --check col-vals-not-null --column a
267
+
268
+ # Extract failing data for debugging
269
+ pb validate-simple small_table --check col-vals-gt --column a --value 5 --show-extract
270
+ ```
271
+
272
+ **Integrate with CI/CD**
273
+
274
+ ```bash
275
+ # Use exit codes for automation (0 = pass, 1 = fail)
276
+ pb validate-simple small_table --check rows-distinct && echo "✅ Quality checks passed"
277
+ ```
278
+
279
+ Learn more in our [CLI documentation](https://posit-dev.github.io/pointblank/user-guide/cli.html).
280
+
235
281
  ## Features That Set Pointblank Apart
236
282
 
237
283
  - **Complete validation workflow** - From data access to validation to reporting in a single pipeline
@@ -1,6 +1,6 @@
1
1
  <div align="center">
2
2
 
3
- <a href="https://posit-dev.github.io/pointblank/"><img src="https://posit-dev.github.io/pointblank/assets/pointblank_logo.svg" width="75%"/></a>
3
+ <a href="https://posit-dev.github.io/pointblank/"><img src="https://posit-dev.github.io/pointblank/assets/pointblank_logo.svg" width="85%"/></a>
4
4
 
5
5
  _Data validation made beautiful and powerful_
6
6
 
@@ -14,6 +14,7 @@ _Data validation made beautiful and powerful_
14
14
  [![Codecov branch](https://img.shields.io/codecov/c/github/posit-dev/pointblank/main.svg)](https://codecov.io/gh/posit-dev/pointblank)
15
15
  [![Repo Status](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
16
16
  [![Documentation](https://img.shields.io/badge/docs-project_website-blue.svg)](https://posit-dev.github.io/pointblank/)
17
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/posit-dev/pointblank)
17
18
 
18
19
  [![Contributors](https://img.shields.io/github/contributors/posit-dev/pointblank)](https://github.com/posit-dev/pointblank/graphs/contributors)
19
20
  [![Discord](https://img.shields.io/discord/1345877328982446110?color=%237289da&label=Discord)](https://discord.com/invite/YH7CybCNCQ)
@@ -148,6 +149,49 @@ validation.get_step_report(i=3).show("browser") # Get failing records from step
148
149
 
149
150
  <br>
150
151
 
152
+ ## Command Line Interface (CLI)
153
+
154
+ Pointblank includes a powerful CLI utility called `pb` that lets you run data validation workflows directly from the command line. Perfect for CI/CD pipelines, scheduled data quality checks, or quick validation tasks.
155
+
156
+ <div align="center">
157
+ <img src="https://posit-dev.github.io/pointblank/assets/vhs/cli-complete-workflow.gif" width="800px">
158
+ </div>
159
+
160
+ **Explore Your Data**
161
+
162
+ ```bash
163
+ # Get a quick preview of your data
164
+ pb preview small_table
165
+
166
+ # Check for missing values
167
+ pb missing small_table
168
+
169
+ # Generate column summaries
170
+ pb scan small_table
171
+ ```
172
+
173
+ **Run Essential Validations**
174
+
175
+ ```bash
176
+ # Check for duplicate rows
177
+ pb validate-simple small_table --check rows-distinct
178
+
179
+ # Verify no null values
180
+ pb validate-simple small_table --check col-vals-not-null --column a
181
+
182
+ # Extract failing data for debugging
183
+ pb validate-simple small_table --check col-vals-gt --column a --value 5 --show-extract
184
+ ```
185
+
186
+ **Integrate with CI/CD**
187
+
188
+ ```bash
189
+ # Use exit codes for automation (0 = pass, 1 = fail)
190
+ pb validate-simple small_table --check rows-distinct && echo "✅ Quality checks passed"
191
+ ```
192
+
193
+ Learn more in our [CLI documentation](https://posit-dev.github.io/pointblank/user-guide/cli.html).
194
+
151
195
  ## Features That Set Pointblank Apart
152
196
 
153
197
  - **Complete validation workflow** - From data access to validation to reporting in a single pipeline
@@ -1,3 +1,13 @@
1
+ local inventory = {} -- sphinx inventories
2
+ local autolink -- set in Meta
3
+ local autolink_ignore_token = "qd-no-link"
4
+
5
+ local function _debug_log(text, debug)
6
+ if debug then
7
+ quarto.log.warning(text)
8
+ end
9
+ end
10
+
1
11
  local function read_inv_text(filename)
2
12
  -- read file
3
13
  local file = io.open(filename, "r")
@@ -11,16 +21,16 @@ local function read_inv_text(filename)
11
21
  local project = str:match("# Project: (%S+)")
12
22
  local version = str:match("# Version: (%S+)")
13
23
 
14
- local data = {project = project, version = version, items = {}}
24
+ local data = { project = project, version = version, items = {} }
15
25
 
16
26
  local ptn_data =
17
27
  "^" ..
18
- "(.-)%s+" .. -- name
19
- "([%S:]-):" .. -- domain
20
- "([%S]+)%s+" .. -- role
21
- "(%-?%d+)%s+" .. -- priority
22
- "(%S*)%s+" .. -- uri
23
- "(.-)\r?$" -- dispname
28
+ "(.-)%s+" .. -- name
29
+ "([%S:]-):" .. -- domain
30
+ "([%S]+)%s+" .. -- role
31
+ "(%-?%d+)%s+" .. -- priority
32
+ "(%S*)%s+" .. -- uri
33
+ "(.-)\r?$" -- dispname
24
34
 
25
35
 
26
36
  -- Iterate through each line in the file content
@@ -48,7 +58,6 @@ local function read_inv_text(filename)
48
58
  end
49
59
 
50
60
  local function read_json(filename)
51
-
52
61
  local file = io.open(filename, "r")
53
62
  if file == nil then
54
63
  return nil
@@ -66,7 +75,6 @@ local function read_inv_text_or_json(base_name)
66
75
  -- TODO: refactors so we don't just close the file immediately
67
76
  io.close(file)
68
77
  json = read_inv_text(base_name .. ".txt")
69
-
70
78
  else
71
79
  json = read_json(base_name .. ".json")
72
80
  end
@@ -74,10 +82,8 @@ local function read_inv_text_or_json(base_name)
74
82
  return json
75
83
  end
76
84
 
77
- local inventory = {}
78
-
79
- local function lookup(search_object)
80
-
85
+ -- each inventory has entries: project, version, items
86
+ local function lookup(search_object, debug)
81
87
  local results = {}
82
88
  for _, inv in ipairs(inventory) do
83
89
  for _, item in ipairs(inv.items) do
@@ -98,7 +104,7 @@ local function lookup(search_object)
98
104
  goto continue
99
105
  else
100
106
  if search_object.domain or item.domain == "py" then
101
- table.insert(results, item)
107
+ table.insert(results, item)
102
108
  end
103
109
 
104
110
  goto continue
@@ -112,23 +118,24 @@ local function lookup(search_object)
112
118
  return results[1]
113
119
  end
114
120
  if #results > 1 then
115
- quarto.log.warning("Found multiple matches for " .. search_object.name .. ", using the first match.")
121
+ _debug_log("Found multiple matches for " .. search_object.name .. ", using the first match.", debug)
116
122
  return results[1]
117
123
  end
118
124
  if #results == 0 then
119
- quarto.log.warning("Found no matches for object:\n", search_object)
125
+ _debug_log("Found no matches for object:\n", debug)
126
+ _debug_log(search_object, debug)
120
127
  end
121
128
 
122
129
  return nil
123
130
  end
124
131
 
125
- local function mysplit (inputstr, sep)
132
+ local function mysplit(inputstr, sep)
126
133
  if sep == nil then
127
- sep = "%s"
134
+ sep = "%s"
128
135
  end
129
- local t={}
130
- for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
131
- table.insert(t, str)
136
+ local t = {}
137
+ for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do
138
+ table.insert(t, str)
132
139
  end
133
140
  return t
134
141
  end
@@ -140,7 +147,84 @@ local function normalize_role(role)
140
147
  return role
141
148
  end
142
149
 
143
- local function build_search_object(str)
150
+ local function copy_replace(original, key, new_value)
151
+ -- First create a copy of the table
152
+ local copy = {}
153
+ for k, v in pairs(original) do
154
+ copy[k] = v
155
+ end
156
+
157
+ -- Then replace the specific value
158
+ copy[key] = new_value
159
+
160
+ return copy
161
+ end
162
+
163
+ local function contains(list, value)
164
+ -- check if list contains a value
165
+ for i, v in ipairs(list) do
166
+ if v == value then
167
+ return true
168
+ end
169
+ end
170
+ return false
171
+ end
172
+
173
+ local function flatten_alias_list(list)
174
+ -- flatten a list of lists into a single list,
175
+ -- where each entry has the form {key, subvalue}}
176
+ -- e.g.
177
+ -- input: {key1 = {subval1, subval2}, key2 = subval3}
178
+ -- output: {{key1, subval1}, {key1, subval2}, {key2, subval3}}
179
+ local flat = {}
180
+ for key, sublist in pairs(list) do
181
+ if type(sublist) == "table" then
182
+ for _, subvalue in ipairs(sublist) do
183
+ table.insert(flat, { key, subvalue })
184
+ end
185
+ else
186
+ table.insert(flat, { key, sublist })
187
+ end
188
+ end
189
+ return flat
190
+ end
191
+
192
+ local function prepend_aliases(flat_aliases)
193
+ -- if str up to first period starts with an alias, then
194
+ -- replace it with the full name.
195
+ -- For example, suppose we have the alias quartodoc -> qd
196
+ -- e.g. qd.Auto -> quartodoc.Auto
197
+ -- e.g. qda.Auto -> qda.Auto
198
+
199
+ local new_inv = {}
200
+ new_inv["project"] = "aliases"
201
+ new_inv["version"] = "0.0.9999" -- I have not begun to think about version...
202
+ new_inv["items"] = {}
203
+
204
+ for _, name_pair in pairs(flat_aliases) do
205
+ local full = name_pair[1]
206
+ local alias = name_pair[2]
207
+ for _, inv in ipairs(inventory) do
208
+ for _, item in ipairs(inv.items) do
209
+ if string.sub(item.name, 1, string.len(full) + 1) == (full .. ".") then
210
+ -- replace full .. "." with alias .. "."
211
+ local prefix
212
+ if not alias or pandoc.utils.stringify(alias) == "" then
213
+ prefix = ""
214
+ else
215
+ -- TODO: ensure alias doesn't end with period
216
+ prefix = pandoc.utils.stringify(alias) .. "."
217
+ end
218
+ local new_name = prefix .. string.sub(item.name, string.len(full) + 2)
219
+ table.insert(new_inv.items, copy_replace(item, "name", new_name))
220
+ end
221
+ end
222
+ end
223
+ end
224
+ table.insert(inventory, new_inv)
225
+ end
226
+
227
+ local function build_search_object(str, debug)
144
228
  local starts_with_colon = str:sub(1, 1) == ":"
145
229
  local search = {}
146
230
  if starts_with_colon then
@@ -163,7 +247,7 @@ local function build_search_object(str)
163
247
  search.role = normalize_role(t[3])
164
248
  search.name = t[4]:match("%%60(.*)%%60")
165
249
  else
166
- quarto.log.warning("couldn't parse this link: " .. str)
250
+ _debug_log("couldn't parse this link: " .. str, debug)
167
251
  return {}
168
252
  end
169
253
  else
@@ -171,7 +255,7 @@ local function build_search_object(str)
171
255
  end
172
256
 
173
257
  if search.name == nil then
174
- quarto.log.warning("couldn't parse this link: " .. str)
258
+ _debug_log("couldn't parse this link: " .. str, debug)
175
259
  return {}
176
260
  end
177
261
 
@@ -220,7 +304,60 @@ function Link(link)
220
304
  return link
221
305
  end
222
306
 
223
- local function fixup_json(json, prefix)
307
+ function Code(code)
308
+ if (not autolink) or contains(code.classes, autolink_ignore_token) then
309
+ return code
310
+ end
311
+
312
+ -- allow text for lookup to be simple function call
313
+ -- and also support shortened syntax (~~ prefix)
314
+ -- e.g. my_func() -> my_func
315
+ -- e.g. a.b.call() -> a.b.call
316
+ -- e.g. ~~my_func() -> my_func
317
+ local text
318
+
319
+ -- detect and remove shortening syntax (~~ prefix)
320
+ local is_shortened = code.text:sub(1, 2) == "~~"
321
+ local is_short_dot = code.text:sub(1, 3) == "~~."
322
+ local unprefixed = code.text:gsub("^~~%.?", "")
323
+ if unprefixed:match("%(%s*%)") then
324
+ text = unprefixed:gsub("%(%s*%)", "")
325
+ else
326
+ text = unprefixed
327
+ end
328
+
329
+
330
+ -- return code.attr
331
+ local search = build_search_object("%60" .. text .. "%60")
332
+ local item = lookup(search)
333
+
334
+ -- determine replacement, used if no link text specified ----
335
+ if item == nil then
336
+ code.text = unprefixed
337
+ return code
338
+ end
339
+
340
+ -- shorten text if shortening syntax used
341
+ if is_shortened then
342
+ -- keep text after last period (.)
343
+ local split = mysplit(unprefixed, ".")
344
+ if #split > 0 then
345
+ local new_name = split[#split]
346
+ if is_short_dot then
347
+ -- if shortened with dot, keep the dot
348
+ new_name = "." .. new_name
349
+ end
350
+ code.text = new_name
351
+ else
352
+ code.text = unprefixed
353
+ end
354
+ end
355
+
356
+
357
+ return pandoc.Link(code, item.uri:gsub("%$$", search.name))
358
+ end
359
+
360
+ local function fixup_json(json, prefix, attach)
224
361
  for _, item in ipairs(json.items) do
225
362
  item.uri = prefix .. item.uri
226
363
  end
@@ -232,6 +369,23 @@ return {
232
369
  Meta = function(meta)
233
370
  local json
234
371
  local prefix
372
+ local aliases
373
+
374
+ -- set globals from config
375
+ if meta.interlinks and meta.interlinks.autolink then
376
+ autolink = true
377
+ else
378
+ autolink = false
379
+ end
380
+
381
+ local aliases
382
+ if meta.interlinks and meta.interlinks.aliases then
383
+ aliases = meta.interlinks.aliases
384
+ else
385
+ aliases = {}
386
+ end
387
+
388
+ -- process sources
235
389
  if meta.interlinks and meta.interlinks.sources then
236
390
  for k, v in pairs(meta.interlinks.sources) do
237
391
  local base_name = quarto.project.offset .. "/_inv/" .. k .. "_objects"
@@ -246,9 +400,12 @@ return {
246
400
  if json ~= nil then
247
401
  fixup_json(json, "/")
248
402
  end
403
+
404
+ prepend_aliases(flatten_alias_list(aliases))
249
405
  end
250
406
  },
251
407
  {
252
- Link = Link
408
+ Link = Link,
409
+ Code = Code
253
410
  }
254
411
  }
@@ -1,5 +1,8 @@
1
1
  project:
2
2
  type: website
3
+ post-render: scripts/post-render.py
4
+ resources:
5
+ - "assets/**"
3
6
 
4
7
  format:
5
8
  html:
@@ -19,6 +22,9 @@ filters:
19
22
 
20
23
  interlinks:
21
24
  fast: true
25
+ autolink: true
26
+ aliases:
27
+ pointblank: [null, pb]
22
28
  sources:
23
29
  numpy:
24
30
  url: https://numpy.org/doc/stable/
@@ -57,6 +63,7 @@ website:
57
63
  contents:
58
64
  - user-guide/index.qmd
59
65
  - user-guide/installation.qmd
66
+ - user-guide/cli.qmd
60
67
  - section: "Validation Plan"
61
68
  contents:
62
69
  - user-guide/validation-overview.qmd
@@ -83,6 +90,9 @@ website:
83
90
  - user-guide/preview.qmd
84
91
  - user-guide/col-summary-tbl.qmd
85
92
  - user-guide/missing-vals-tbl.qmd
93
+ page-footer:
94
+ left: 'Proudly supported by <a href="https://www.posit.co/" class="no-icon"><img src="/assets/posit-logo-black.svg" alt="Posit" width="80" style="padding-left: 3px;vertical-align:text-top;"></a>'
95
+ right: "&copy; 2024&ndash;2025 Posit Software, PBC."
86
96
 
87
97
  html-table-processing: none
88
98
 
@@ -203,6 +213,8 @@ quartodoc:
203
213
  - name: missing_vals_tbl
204
214
  - name: assistant
205
215
  - name: load_dataset
216
+ - name: get_data_path
217
+ - name: connect_to_table
206
218
  - title: Utility Functions
207
219
  desc: >
208
220
  The *Utility Functions* group contains functions that are useful accessing metadata about