pointblank 0.7.2__tar.gz → 0.8.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 (261) hide show
  1. {pointblank-0.7.2 → pointblank-0.8.0}/.github/ISSUE_TEMPLATE/bug.md +2 -2
  2. {pointblank-0.7.2 → pointblank-0.8.0}/.github/ISSUE_TEMPLATE/feature.md +1 -1
  3. {pointblank-0.7.2 → pointblank-0.8.0}/.github/PULL_REQUEST_TEMPLATE.md +1 -1
  4. pointblank-0.8.0/.github/SECURITY.md +14 -0
  5. {pointblank-0.7.2 → pointblank-0.8.0}/.github/workflows/ci-tests.yaml +1 -1
  6. {pointblank-0.7.2 → pointblank-0.8.0}/CITATION.cff +3 -3
  7. {pointblank-0.7.2 → pointblank-0.8.0}/CONTRIBUTING.md +3 -3
  8. {pointblank-0.7.2 → pointblank-0.8.0}/PKG-INFO +8 -1
  9. {pointblank-0.7.2 → pointblank-0.8.0}/README.md +7 -0
  10. {pointblank-0.7.2 → pointblank-0.8.0}/docs/_quarto.yml +15 -8
  11. {pointblank-0.7.2 → pointblank-0.8.0}/docs/styles.css +1 -1
  12. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/actions.qmd +70 -7
  13. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/__init__.py +2 -0
  14. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_constants.py +11 -2
  15. pointblank-0.8.0/pointblank/_constants_translations.py +1225 -0
  16. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_interrogation.py +145 -3
  17. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_utils.py +1 -1
  18. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_utils_check_args.py +1 -0
  19. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/api-docs.txt +1516 -277
  20. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/draft.py +1 -1
  21. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/thresholds.py +24 -1
  22. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/validate.py +2506 -571
  23. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/PKG-INFO +8 -1
  24. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/SOURCES.txt +3 -1
  25. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +152 -77
  26. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_no_interrogation_validation_report_html_snap/no_interrogation_validation_report.html +104 -53
  27. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_no_steps_validation_report_html_snap/no_steps_validation_report.html +16 -16
  28. pointblank-0.8.0/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +310 -0
  29. pointblank-0.8.0/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +309 -0
  30. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_memtable_variable_names/selector_helper_functions_no_match.html +20 -11
  31. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pd_variable_names/selector_helper_functions_no_match.html +20 -11
  32. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pl_variable_names/selector_helper_functions_no_match.html +20 -11
  33. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_validate.py +1152 -81
  34. pointblank-0.7.2/.github/SECURITY.md +0 -14
  35. pointblank-0.7.2/pointblank/_constants_expect_fail.py +0 -594
  36. {pointblank-0.7.2 → pointblank-0.8.0}/.github/CODE_OF_CONDUCT.md +0 -0
  37. {pointblank-0.7.2 → pointblank-0.8.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  38. {pointblank-0.7.2 → pointblank-0.8.0}/.github/workflows/ci-docs.yaml +0 -0
  39. {pointblank-0.7.2 → pointblank-0.8.0}/.github/workflows/code-checks.yaml +0 -0
  40. {pointblank-0.7.2 → pointblank-0.8.0}/.gitignore +0 -0
  41. {pointblank-0.7.2 → pointblank-0.8.0}/.pre-commit-config.yaml +0 -0
  42. {pointblank-0.7.2 → pointblank-0.8.0}/.vscode/settings.json +0 -0
  43. {pointblank-0.7.2 → pointblank-0.8.0}/LICENSE +0 -0
  44. {pointblank-0.7.2 → pointblank-0.8.0}/Makefile +0 -0
  45. {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/game_revenue.csv +0 -0
  46. {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/nycflights.csv +0 -0
  47. {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/nycflights.ddb +0 -0
  48. {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/small_table.csv +0 -0
  49. {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/x-01-parquet.qmd +0 -0
  50. {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/x-02-duckdb.qmd +0 -0
  51. {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/x-03-sqlite.qmd +0 -0
  52. {pointblank-0.7.2 → pointblank-0.8.0}/docs/.gitignore +0 -0
  53. {pointblank-0.7.2 → pointblank-0.8.0}/docs/_extensions/machow/interlinks/.gitignore +0 -0
  54. {pointblank-0.7.2 → pointblank-0.8.0}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
  55. {pointblank-0.7.2 → pointblank-0.8.0}/docs/_extensions/machow/interlinks/interlinks.lua +0 -0
  56. {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/fav-logo.png +0 -0
  57. {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/pointblank-tabular-report.png +0 -0
  58. {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/pointblank_logo.svg +0 -0
  59. {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/validation-table-diagram.png +0 -0
  60. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/01-starter/index.qmd +0 -0
  61. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/02-advanced/index.qmd +0 -0
  62. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/03-data-extracts/index.qmd +0 -0
  63. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/04-sundered-data/index.qmd +0 -0
  64. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/05-step-report-column-check/index.qmd +0 -0
  65. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
  66. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
  67. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/check-row-column-counts/index.qmd +0 -0
  68. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/checks-for-missing/index.qmd +0 -0
  69. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
  70. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/column-selector-functions/index.qmd +0 -0
  71. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/comparisons-across-columns/index.qmd +0 -0
  72. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/data/game_revenue.parquet +0 -0
  73. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
  74. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
  75. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/expect-text-pattern/index.qmd +0 -0
  76. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/failure-thresholds/index.qmd +0 -0
  77. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/advanced_validation.png +0 -0
  78. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/data_extracts.png +0 -0
  79. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/starter_validation.png +0 -0
  80. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/step_report_column_schema.png +0 -0
  81. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/step_report_column_values.png +0 -0
  82. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/sundered_data.png +0 -0
  83. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/index.qmd +0 -0
  84. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/mutate-table-in-step/index.qmd +0 -0
  85. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/numeric-comparisons/index.qmd +0 -0
  86. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/schema-check/index.qmd +0 -0
  87. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/set-membership/index.qmd +0 -0
  88. {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/using-parquet-data/index.qmd +0 -0
  89. {pointblank-0.7.2 → pointblank-0.8.0}/docs/index.qmd +0 -0
  90. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/across.qmd +0 -0
  91. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/col-summary-tbl.qmd +0 -0
  92. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/columns.qmd +0 -0
  93. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/extracts.qmd +0 -0
  94. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/index.qmd +0 -0
  95. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/missing-vals-tbl.qmd +0 -0
  96. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/preprocessing.qmd +0 -0
  97. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/preview.qmd +0 -0
  98. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/sundering.qmd +0 -0
  99. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/thresholds.qmd +0 -0
  100. {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/types.qmd +0 -0
  101. {pointblank-0.7.2 → pointblank-0.8.0}/images/pointblank-tabular-report.png +0 -0
  102. {pointblank-0.7.2 → pointblank-0.8.0}/images/pointblank_logo.svg +0 -0
  103. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_constants_docs.py +0 -0
  104. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_typing.py +0 -0
  105. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_utils_html.py +0 -0
  106. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/assistant.py +0 -0
  107. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/column.py +0 -0
  108. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/game_revenue-duckdb.zip +0 -0
  109. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/game_revenue.zip +0 -0
  110. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/nycflights-duckdb.zip +0 -0
  111. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/nycflights.zip +0 -0
  112. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/polars-api-docs.txt +0 -0
  113. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/small_table-duckdb.zip +0 -0
  114. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/small_table.zip +0 -0
  115. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/datascan.py +0 -0
  116. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/schema.py +0 -0
  117. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/tf.py +0 -0
  118. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/dependency_links.txt +0 -0
  119. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/requires.txt +0 -0
  120. {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/top_level.txt +0 -0
  121. {pointblank-0.7.2 → pointblank-0.8.0}/pyproject.toml +0 -0
  122. {pointblank-0.7.2 → pointblank-0.8.0}/setup.cfg +0 -0
  123. {pointblank-0.7.2 → pointblank-0.8.0}/tests/__init__.py +0 -0
  124. {pointblank-0.7.2 → pointblank-0.8.0}/tests/manual_tests/schema_step_reports.qmd +0 -0
  125. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_datascan/test_col_summary_tbl_duckdb_snap/col_summary_html_duckdb.html +0 -0
  126. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_datascan/test_col_summary_tbl_pandas_snap/col_summary_html_pandas.html +0 -0
  127. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_datascan/test_col_summary_tbl_polars_snap/col_summary_html_polars.html +0 -0
  128. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_01/schema_step_report_01-0.txt +0 -0
  129. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_01_1/schema_step_report_01-1.txt +0 -0
  130. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_01_2/schema_step_report_01-2.txt +0 -0
  131. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_01_3/schema_step_report_01-3.txt +0 -0
  132. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_02/schema_step_report_02-0.txt +0 -0
  133. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_02_1/schema_step_report_02-1.txt +0 -0
  134. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_02_2/schema_step_report_02-2.txt +0 -0
  135. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_02_3/schema_step_report_02-3.txt +0 -0
  136. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_03/schema_step_report_03-0.txt +0 -0
  137. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_03_1/schema_step_report_03-1.txt +0 -0
  138. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_03_2/schema_step_report_03-2.txt +0 -0
  139. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_03_3/schema_step_report_03-3.txt +0 -0
  140. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_04/schema_step_report_04-0.txt +0 -0
  141. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_05/schema_step_report_05-0.txt +0 -0
  142. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_06/schema_step_report_06-0.txt +0 -0
  143. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_07/schema_step_report_07-0.txt +0 -0
  144. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_08/schema_step_report_08-0.txt +0 -0
  145. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_09/schema_step_report_09-0.txt +0 -0
  146. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_10/schema_step_report_10-0.txt +0 -0
  147. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_11/schema_step_report_11-0.txt +0 -0
  148. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_12/schema_step_report_12-0.txt +0 -0
  149. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_13/schema_step_report_13-0.txt +0 -0
  150. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_14/schema_step_report_14-0.txt +0 -0
  151. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_14_1/schema_step_report_14-1.txt +0 -0
  152. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_15/schema_step_report_15-0.txt +0 -0
  153. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_15_1/schema_step_report_15-1.txt +0 -0
  154. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_16/schema_step_report_16-0.txt +0 -0
  155. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_16_1/schema_step_report_16-1.txt +0 -0
  156. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_17/schema_step_report_17-0.txt +0 -0
  157. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_17_1/schema_step_report_17-1.txt +0 -0
  158. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_18/schema_step_report_18-0.txt +0 -0
  159. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_18_1/schema_step_report_18-1.txt +0 -0
  160. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_19/schema_step_report_19-0.txt +0 -0
  161. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_19_1/schema_step_report_19-1.txt +0 -0
  162. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_20/schema_step_report_20-0.txt +0 -0
  163. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_20_1/schema_step_report_20-1.txt +0 -0
  164. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_21/schema_step_report_21-0.txt +0 -0
  165. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_21_1/schema_step_report_21-1.txt +0 -0
  166. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_21_2/schema_step_report_21-2.txt +0 -0
  167. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_21_3/schema_step_report_21-3.txt +0 -0
  168. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_22/schema_step_report_22-0.txt +0 -0
  169. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_22_1/schema_step_report_22-1.txt +0 -0
  170. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_23/schema_step_report_23-0.txt +0 -0
  171. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_23_1/schema_step_report_23-1.txt +0 -0
  172. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_24/schema_step_report_24-0.txt +0 -0
  173. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_24_1/schema_step_report_24-1.txt +0 -0
  174. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_24_2/schema_step_report_24-2.txt +0 -0
  175. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_24_3/schema_step_report_24-3.txt +0 -0
  176. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_25/schema_step_report_25-0.txt +0 -0
  177. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_1/schema_step_report_25-1.txt +0 -0
  178. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_2/schema_step_report_25-2.txt +0 -0
  179. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_3/schema_step_report_25-3.txt +0 -0
  180. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_4/schema_step_report_25-4.txt +0 -0
  181. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_step_report_25_5/schema_step_report_25-5.txt +0 -0
  182. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
  183. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
  184. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
  185. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
  186. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
  187. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
  188. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
  189. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
  190. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
  191. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
  192. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
  193. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
  194. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
  195. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
  196. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
  197. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
  198. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
  199. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
  200. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
  201. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
  202. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
  203. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
  204. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
  205. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
  206. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
  207. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
  208. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
  209. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
  210. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
  211. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
  212. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
  213. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
  214. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
  215. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
  216. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
  217. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
  218. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
  219. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
  220. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
  221. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
  222. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
  223. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
  224. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
  225. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
  226. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
  227. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  228. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  229. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd/validation_report.json +0 -0
  230. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl/validation_report.json +0 -0
  231. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  232. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
  233. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_parquet/validation_report.json +0 -0
  234. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pd/validation_report.json +0 -0
  235. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pl/validation_report.json +0 -0
  236. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
  237. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_duckdb/validation_report.json +0 -0
  238. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_parquet/validation_report.json +0 -0
  239. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pd/validation_report.json +0 -0
  240. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pl/validation_report.json +0 -0
  241. {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_sqlite/validation_report.json +0 -0
  242. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
  243. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
  244. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
  245. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
  246. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz.ddb +0 -0
  247. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz.parquet +0 -0
  248. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz.sqlite +0 -0
  249. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
  250. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
  251. {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
  252. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test__interrogation.py +0 -0
  253. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test__utils.py +0 -0
  254. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test__utils_check_args.py +0 -0
  255. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_assistant.py +0 -0
  256. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_column.py +0 -0
  257. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_datascan.py +0 -0
  258. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_draft.py +0 -0
  259. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_schema.py +0 -0
  260. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_tf.py +0 -0
  261. {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_thresholds.py +0 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Bug
3
- about: Something is wrong with 'pointblank'.
3
+ about: Something is wrong with 'Pointblank'.
4
4
  title: ""
5
5
  labels: "Type: ☹︎ Bug"
6
6
  ---
@@ -28,7 +28,7 @@ What should have happened? Please be as specific as possible.
28
28
  ## Development environment
29
29
 
30
30
  - Operating System: [e.g., Linux, macOS, Windows]
31
- - pointblank Version: [e.g., 0.0.1]
31
+ - Pointblank Version: [e.g., 0.0.1]
32
32
 
33
33
  ## Additional context
34
34
 
@@ -7,7 +7,7 @@ labels: "Type: ★ Enhancement"
7
7
 
8
8
  ## Prework
9
9
 
10
- - [ ] Read and abide by the pointblank [code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) and [contributing guidelines](https://github.com/posit-dev/pointblank/blob/main/.github/CONTRIBUTING.md).
10
+ - [ ] Read and abide by the Pointblank [code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) and [contributing guidelines](https://github.com/posit-dev/pointblank/blob/main/.github/CONTRIBUTING.md).
11
11
  - [ ] Search for duplicates among the [existing issues](https://github.com/posit-dev/pointblank/issues) (both open and closed).
12
12
 
13
13
  ## Proposal
@@ -1,6 +1,6 @@
1
1
  # Summary
2
2
 
3
- Thank you for contributing to pointblank! To make this process easier for everyone, please explain the context and purpose of your contribution. Also, list the changes made to the existing code or documentation.
3
+ Thank you for contributing to Pointblank! To make this process easier for everyone, please explain the context and purpose of your contribution. Also, list the changes made to the existing code or documentation.
4
4
 
5
5
  # Related GitHub Issues and PRs
6
6
 
@@ -0,0 +1,14 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ The following provides information on the versions of Pointblank that are
6
+ currently being supported with security updates.
7
+
8
+ | Version | Supported |
9
+ | -------- | ------------------ |
10
+ | >= 0.7.3 | :white_check_mark: |
11
+
12
+ ## Reporting a Vulnerability
13
+
14
+ Please report any security vulnerabilities to rich@posit.co.
@@ -29,7 +29,7 @@ jobs:
29
29
  pip install -e '.[dev]'
30
30
  - name: Install test dependencies
31
31
  run: |
32
- pip install pytest pytest-cov pytest-snapshot pandas polars ibis-framework[duckdb,mysql,postgres,sqlite]>=9.5.0 chatlas shiny
32
+ pip install pytest pytest-cov pytest-snapshot pandas polars ibis-framework[duckdb,mysql,postgres,sqlite]>=9.5.0 chatlas requests shiny
33
33
  - name: pytest unit tests
34
34
  run: |
35
35
  make test
@@ -1,9 +1,9 @@
1
1
  cff-version: 1.2.0
2
- message: 'If you wish to cite the "pointblank" package use:'
2
+ message: 'If you wish to cite the "Pointblank" package use:'
3
3
  type: software
4
4
  license: MIT
5
- title: "pointblank: Find out if your data is what you think it is"
6
- version: 0.5.0
5
+ title: "Pointblank: Find out if your data is what you think it is"
6
+ version: 0.7.3
7
7
  abstract: Validate data in Polars and Pandas DataFrames and database tables.
8
8
  Validation pipelines can be made using easily-readable, consecutive validation
9
9
  steps. Upon execution of the validation plan, several reporting options are available.
@@ -1,6 +1,6 @@
1
1
  # Contributing Guidelines
2
2
 
3
- There are many ways to contribute to the ongoing development of the pointblank package. Some contributions can be rather easy to do (e.g., fixing typos, improving documentation, filing issues for feature requests or problems, etc.) whereas other contributions can require more time and patience (like answering questions and submitting pull requests with code changes). Just know that help provided in any capacity is very much appreciated.
3
+ There are many ways to contribute to the ongoing development of the Pointblank package. Some contributions can be rather easy to do (e.g., fixing typos, improving documentation, filing issues for feature requests or problems, etc.) whereas other contributions can require more time and patience (like answering questions and submitting pull requests with code changes). Just know that help provided in any capacity is very much appreciated.
4
4
 
5
5
  ## Filing Issues
6
6
 
@@ -10,7 +10,7 @@ If you believe you found a bug, minimal reproducible example (MRE) for your post
10
10
 
11
11
  One way to help is by simply answering questions. It's amazing how a little conversation could lead to better insights on a problem. Don't quite know the answer? That's okay too. We're all in this together.
12
12
 
13
- Where might you answer user questions? Some of the forums for Q&A on pointblank include the _Issues_ and _Discussion_ pages in the repo. Good etiquette is key during these interactions: be a good person to all who ask questions.
13
+ Where might you answer user questions? Some of the forums for Q&A on Pointblank include the _Issues_ and _Discussion_ pages in the repo. Good etiquette is key during these interactions: be a good person to all who ask questions.
14
14
 
15
15
  ### Making Pull Requests
16
16
 
@@ -19,7 +19,7 @@ Should you consider making a pull request (PR), please file an issue first and e
19
19
  Once there is consensus that a PR based on the issue would be helpful, adhering to the following process will make things proceed more quickly:
20
20
 
21
21
  - Create a separate Git branch for each PR
22
- - The pointblank package follows the [Style Guide for Python Code](https://peps.python.org/pep-0008/) so please adopt those guidelines in your submitted code as best as possible
22
+ - The Pointblank package follows the [Style Guide for Python Code](https://peps.python.org/pep-0008/) so please adopt those guidelines in your submitted code as best as possible
23
23
  - Comment your code, particularly in those hard-to-understand areas
24
24
  - Add test cases that cover the changes made in the PR; having tests for any new codepaths will help guard against regressions
25
25
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.7.2
3
+ Version: 0.8.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
@@ -177,6 +177,13 @@ You can install Pointblank using pip:
177
177
  pip install pointblank
178
178
  ```
179
179
 
180
+ You can also install [Pointblank from Conda-Forge](https://anaconda.org/conda-forge/pointblank) by
181
+ using:
182
+
183
+ ```bash
184
+ conda install conda-forge::pointblank
185
+ ```
186
+
180
187
  If you don't have Polars or Pandas installed, you'll need to install one of them to use Pointblank.
181
188
 
182
189
  ```bash
@@ -96,6 +96,13 @@ You can install Pointblank using pip:
96
96
  pip install pointblank
97
97
  ```
98
98
 
99
+ You can also install [Pointblank from Conda-Forge](https://anaconda.org/conda-forge/pointblank) by
100
+ using:
101
+
102
+ ```bash
103
+ conda install conda-forge::pointblank
104
+ ```
105
+
99
106
  If you don't have Polars or Pandas installed, you'll need to install one of them to use Pointblank.
100
107
 
101
108
  ```bash
@@ -171,19 +171,26 @@ quartodoc:
171
171
  The *Inspection and Assistance* group contains functions that are helpful for getting to
172
172
  grips on a new data table. Use the `DataScan` class to get a quick overview of the data,
173
173
  `preview()` to see the first and last few rows of a table, `col_summary_tbl()` for a
174
- column-level summary of a table, `missing_vals_tbl()` to see where there are missing values
175
- in a table, and `get_column_count()`/`get_row_count()` to get the number of columns and rows
176
- in a table. Several datasets included in the package can be accessed via the
177
- `load_dataset()` function. Finally, the `config()` utility lets us set global configuration
178
- parameters. Want to chat with an assistant? Use the `assistant()` function to get help with
179
- Pointblank.
174
+ column-level summary of a table, and `missing_vals_tbl()` to see where there are missing
175
+ values in a table. Several datasets included in the package can be accessed via the
176
+ `load_dataset()` function. On the assistance side, the `assistant()` function can be used to
177
+ get help with Pointblank.
180
178
  contents:
181
179
  - name: DataScan
182
180
  - name: preview
183
181
  - name: col_summary_tbl
184
182
  - name: missing_vals_tbl
183
+ - name: assistant
184
+ - name: load_dataset
185
+ - title: Utility Functions
186
+ desc: >
187
+ The *Utility Functions* group contains functions that are useful accessing metadata about
188
+ the target data. Use `get_column_count()` or `get_row_count()` to get the number of columns
189
+ or rows in a table. The `get_action_metadata()` function is useful when building custom
190
+ actions since it returns metadata about the validation step that's triggering the action.
191
+ Lastly, the `config()` utility lets us set global configuration parameters.
192
+ contents:
185
193
  - name: get_column_count
186
194
  - name: get_row_count
187
- - name: load_dataset
195
+ - name: get_action_metadata
188
196
  - name: config
189
- - name: assistant
@@ -9,7 +9,7 @@
9
9
  }
10
10
 
11
11
  body {
12
- background-color: #EBEEF7;
12
+ background-color: #F7F8FC;
13
13
  }
14
14
 
15
15
  p a {
@@ -70,7 +70,7 @@ considered optional. Put another way, you can set various thresholds and various
70
70
  and the interrogation phase will determine whether all the requirements are met for executing
71
71
  an action.
72
72
 
73
- ## Ways to Express Actions: Text or Custom Functions
73
+ ## Expressing Actions with a String
74
74
 
75
75
  There are a few options in how to define the actions:
76
76
 
@@ -99,10 +99,9 @@ Here's an example where we prepare a console message with a number of value plac
99
99
  (`action_str`) and use it globally at `Actions(critical=)`:
100
100
 
101
101
  ```{python}
102
-
103
102
  action_str = "[{LEVEL}: {TYPE}]: Step {step} has failed validation. ({time})"
104
103
 
105
- validation = (
104
+ validation_2 = (
106
105
  pb.Validate(
107
106
  data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
108
107
  thresholds=pb.Thresholds(warning=0.05, error=0.10, critical=0.15),
@@ -113,6 +112,8 @@ validation = (
113
112
  .col_vals_ge(columns="session_duration", value=15)
114
113
  .interrogate()
115
114
  )
115
+
116
+ validation_2
116
117
  ```
117
118
 
118
119
  What we get here are two messages in the console, corresponding to critical failures in steps 2 and
@@ -121,16 +122,19 @@ resulting text is capitalized (e.g., `"CRITICAL"`, `"COL_VALS_GT"`, etc.) and th
121
122
  capitalized the placeholder text itself. Have a look at the documentation article of
122
123
  [`Actions`](https://posit-dev.github.io/pointblank/reference/Actions.html) for more details on this.
123
124
 
125
+ ## Making Actions with Callables
126
+
124
127
  Aside from strings, any callable can be used as an action value. Here's an example where we use a
125
128
  custom function as part of an action:
126
129
 
127
130
  ```{python}
128
- def dq_issue():
131
+ def duration_issue():
129
132
  from datetime import datetime
130
133
 
131
134
  print(f"Data quality issue found ({datetime.now()}).")
132
135
 
133
- validation = (
136
+
137
+ validation_3 = (
134
138
  pb.Validate(
135
139
  data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
136
140
  thresholds=pb.Thresholds(warning=0.05, error=0.10, critical=0.15),
@@ -140,12 +144,12 @@ validation = (
140
144
  .col_vals_gt(
141
145
  columns="session_duration",
142
146
  value=15,
143
- actions=pb.Actions(warning=dq_issue),
147
+ actions=pb.Actions(warning=duration_issue),
144
148
  )
145
149
  .interrogate()
146
150
  )
147
151
 
148
- validation
152
+ validation_3
149
153
  ```
150
154
 
151
155
  In this case, the 'warning' action is set to call the user's `dq_issue()` function. This action is
@@ -159,3 +163,62 @@ applied to step 3. You are free to mix and match both threshold and action setti
159
163
  level (i.e., set in the [`Validate`](https://posit-dev.github.io/pointblank/reference/Validate.html)
160
164
  call) or at the step level. The key thing to be aware of is that step-level settings of thresholds
161
165
  and actions take precedence.
166
+
167
+ ## Using `get_action_metadata()` to Access Metadata When Building an Action Callable
168
+
169
+ To access information about the validation step where an action was triggered, we can call
170
+ [`get_action_metadata()`](https://posit-dev.github.io/pointblank/reference/get_action_metadata.html)
171
+ in the body of a function to be used within `Actions`. The dictionary that's returned by that
172
+ function allows us to make more generalized actions that could react accordingly to different
173
+ failure states.
174
+
175
+ In the following example, we'll make a function called `print_problem()` that prints information to
176
+ the console about the failure state for a validation step. In this case, the action will be applied
177
+ to any threshold level being exceeded (by using `Actions(default=print_problem)`). And only the most
178
+ severe level exceeded per step will execute `print_problem()` since `Actions(highest_only=True)` by
179
+ default.
180
+
181
+ ```{python}
182
+ def print_problem():
183
+ m = pb.get_action_metadata()
184
+ print(f"{m['level']} ({m['level_num']}) for Step {m['step']}: {m['failure_text']}")
185
+
186
+
187
+ validation = (
188
+ pb.Validate(
189
+ data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
190
+ thresholds=pb.Thresholds(warning=0.05, error=0.10, critical=0.15),
191
+ actions=pb.Actions(default=print_problem),
192
+ brief=True,
193
+ )
194
+ .col_vals_regex(columns="player_id", pattern=r"[A-Z]{12}\d{3}")
195
+ .col_vals_gt(columns="item_revenue", value=0.05)
196
+ .col_vals_gt(
197
+ columns="session_duration",
198
+ value=15,
199
+ )
200
+ .interrogate()
201
+ )
202
+
203
+ validation
204
+ ```
205
+
206
+ We end up seeing two messages printed for failures in Steps 2 and 3. And though those steps had more
207
+ than one threshold exceeded, only the most severe level in each yielded a console message.
208
+
209
+ Alse note that we set the action in `Validate(actions=)` so that the action would apply to all
210
+ validation steps where thresholds are exceeded. This obviated the need to set `actions=` at every
211
+ validation step (though you can do this as a local override, even setting `actions=None` to disable
212
+ globally set actions).
213
+
214
+ The metadata dictionary contains the following fields for a given validation step:
215
+
216
+ - `step`: The step number.
217
+ - `column`: The column name.
218
+ - `value`: The value being compared (only available in certain validation steps).
219
+ - `type`: The assertion type (e.g., `"col_vals_gt"`, etc.).
220
+ - `time`: The time the validation step was executed (in ISO format).
221
+ - `level`: The severity level (`"warning"`, `"error"`, or `"critical"`).
222
+ - `level_num`: The severity level as a numeric value (`30`, `40`, or `50`).
223
+ - `autobrief`: A localized and brief statement of the expectation for the step.
224
+ - `failure_text`: Localized text that explains how the validation step failed.
@@ -28,6 +28,7 @@ from pointblank.thresholds import Actions, Thresholds
28
28
  from pointblank.validate import (
29
29
  Validate,
30
30
  config,
31
+ get_action_metadata,
31
32
  get_column_count,
32
33
  get_row_count,
33
34
  load_dataset,
@@ -57,6 +58,7 @@ __all__ = [
57
58
  "config",
58
59
  "preview",
59
60
  "missing_vals_tbl",
61
+ "get_action_metadata",
60
62
  "get_column_count",
61
63
  "get_row_count",
62
64
  ]
@@ -13,8 +13,8 @@ COMPATIBLE_DTYPES = {
13
13
  "ne": ["numeric", "datetime"],
14
14
  "ge": ["numeric", "datetime"],
15
15
  "le": ["numeric", "datetime"],
16
- "between": ["numeric"],
17
- "outside": ["numeric"],
16
+ "between": ["numeric", "datetime"],
17
+ "outside": ["numeric", "datetime"],
18
18
  "in_set": ["numeric", "str"],
19
19
  "not_in_set": ["numeric", "str"],
20
20
  "regex": ["str"],
@@ -159,14 +159,21 @@ REPORTING_LANGUAGES = [
159
159
  "it",
160
160
  "es",
161
161
  "pt",
162
+ "ro",
162
163
  "tr",
163
164
  "zh-Hans",
164
165
  "zh-Hant",
166
+ "ja",
167
+ "ko",
165
168
  "ru",
169
+ "cs",
166
170
  "pl",
167
171
  "da",
168
172
  "sv",
173
+ "nb",
169
174
  "nl",
175
+ "fi",
176
+ "is",
170
177
  ]
171
178
 
172
179
  SEVERITY_LEVEL_COLORS = {
@@ -176,6 +183,8 @@ SEVERITY_LEVEL_COLORS = {
176
183
  "green": "#4CA64C",
177
184
  }
178
185
 
186
+ LOG_LEVELS_MAP = {"warning": 30, "error": 40, "critical": 50}
187
+
179
188
  CHECK_MARK_SPAN = "<span style='color: #4CA64C;'>&check;</span>"
180
189
  CROSS_MARK_SPAN = "<span style='color: #CF142B;'>&cross;</span>"
181
190