pointblank 0.8.7__tar.gz → 0.9.1__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.
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/workflows/ci-tests.yaml +1 -1
- {pointblank-0.8.7 → pointblank-0.9.1}/Makefile +8 -3
- {pointblank-0.8.7 → pointblank-0.9.1}/PKG-INFO +6 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/README.md +5 -1
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/_quarto.yml +4 -1
- pointblank-0.9.1/docs/assets/pointblank-sales-data.de.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.es.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.fr.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.it.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.ja.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.ko.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.nl.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.pt-BR.png +0 -0
- pointblank-0.9.1/docs/assets/pointblank-sales-data.zh-CN.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/02-advanced/index.qmd +0 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/styles.css +11 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/user-guide/actions.qmd +221 -7
- pointblank-0.9.1/docs/user-guide/briefs.qmd +330 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/user-guide/col-summary-tbl.qmd +1 -0
- pointblank-0.9.1/docs/user-guide/columns.qmd +356 -0
- pointblank-0.9.1/docs/user-guide/extracts.qmd +334 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/user-guide/index.qmd +5 -1
- pointblank-0.9.1/docs/user-guide/langs.qmd +39 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/user-guide/missing-vals-tbl.qmd +3 -0
- pointblank-0.9.1/docs/user-guide/preprocessing.qmd +282 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/user-guide/preview.qmd +4 -0
- pointblank-0.9.1/docs/user-guide/segmentation.qmd +273 -0
- pointblank-0.9.1/docs/user-guide/step-reports.qmd +371 -0
- pointblank-0.9.1/docs/user-guide/sundering.qmd +301 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/user-guide/thresholds.qmd +8 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/user-guide/types.qmd +59 -14
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/_constants.py +26 -10
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/_constants_translations.py +162 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/_interrogation.py +117 -0
- pointblank-0.9.1/pointblank/_typing.py +26 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/_utils.py +1 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/api-docs.txt +1022 -52
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/datascan.py +4 -4
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/draft.py +1 -1
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/thresholds.py +10 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/validate.py +1462 -55
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank.egg-info/PKG-INFO +6 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank.egg-info/SOURCES.txt +21 -1
- {pointblank-0.8.7 → pointblank-0.9.1}/pyproject.toml +4 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +104 -16
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_no_interrogation_validation_report_html_snap/no_interrogation_validation_report.html +14 -14
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +6 -6
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +6 -6
- {pointblank-0.8.7/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl → pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb}/validation_report.json +1 -0
- {pointblank-0.8.7/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd → pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet}/validation_report.json +1 -0
- {pointblank-0.8.7/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb → pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd}/validation_report.json +1 -0
- {pointblank-0.8.7/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet → pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl}/validation_report.json +1 -0
- pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +26 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_duckdb/validation_report.json +1 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_parquet/validation_report.json +1 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pd/validation_report.json +1 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pl/validation_report.json +1 -0
- pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +26 -0
- pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_segments_html/duckdb/validation_report_segments.html +608 -0
- pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_segments_html/pandas/validation_report_segments.html +608 -0
- pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_segments_html/polars/validation_report_segments.html +608 -0
- pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/polars/validation_report_segments_with_pre.html +185 -0
- pointblank-0.9.1/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/validation_report_segments_with_pre.html +185 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_memtable_variable_names/selector_helper_functions_no_match.html +2 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pd_variable_names/selector_helper_functions_no_match.html +2 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pl_variable_names/selector_helper_functions_no_match.html +2 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test__utils.py +4 -11
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_validate.py +180 -44
- {pointblank-0.8.7 → pointblank-0.9.1}/translations/README.de.md +7 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/translations/README.es.md +7 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/translations/README.fr.md +7 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/translations/README.it.md +7 -2
- pointblank-0.9.1/translations/README.ja.md +245 -0
- pointblank-0.9.1/translations/README.ko.md +245 -0
- pointblank-0.9.1/translations/README.nl.md +245 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/translations/README.pt-BR.md +7 -2
- {pointblank-0.8.7 → pointblank-0.9.1}/translations/README.zh-CN.md +7 -2
- pointblank-0.8.7/docs/user-guide/across.qmd +0 -130
- pointblank-0.8.7/docs/user-guide/columns.qmd +0 -236
- pointblank-0.8.7/docs/user-guide/extracts.qmd +0 -127
- pointblank-0.8.7/docs/user-guide/preprocessing.qmd +0 -183
- pointblank-0.8.7/docs/user-guide/sundering.qmd +0 -163
- pointblank-0.8.7/pointblank/_typing.py +0 -10
- pointblank-0.8.7/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -25
- pointblank-0.8.7/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +0 -25
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/CODE_OF_CONDUCT.md +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/ISSUE_TEMPLATE/bug.md +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/SECURITY.md +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/workflows/ci-docs.yaml +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.github/workflows/code-checks.yaml +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.gitignore +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.pre-commit-config.yaml +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/.vscode/settings.json +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/CITATION.cff +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/CONTRIBUTING.md +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/LICENSE +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/data_raw/game_revenue.csv +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/data_raw/nycflights.csv +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/data_raw/nycflights.ddb +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/data_raw/small_table.csv +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/data_raw/x-01-parquet.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/data_raw/x-02-duckdb.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/data_raw/x-03-sqlite.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/.gitignore +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/_extensions/machow/interlinks/.gitignore +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/_extensions/machow/interlinks/interlinks.lua +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/assets/fav-logo.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/assets/pointblank-sales-data.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/assets/pointblank-step-report.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/assets/pointblank-tabular-report.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/assets/pointblank_logo.svg +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/assets/validation-table-diagram.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/blog/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/blog/intro-pointblank/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/blog/intro-pointblank/pointblank-localized.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/blog/intro-pointblank/step_report.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/blog/intro-pointblank/validation-table-diagram.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/blog/intro-pointblank/validation-test-units.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/blog/pointblank_blog_logo.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/01-starter/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/03-data-extracts/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/04-sundered-data/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/05-step-report-column-check/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/check-row-column-counts/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/checks-for-missing/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/column-selector-functions/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/comparisons-across-columns/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/data/game_revenue.parquet +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/expect-text-pattern/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/failure-thresholds/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/img/advanced_validation.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/img/data_extracts.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/img/starter_validation.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/img/step_report_column_schema.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/img/step_report_column_values.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/img/sundered_data.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/mutate-table-in-step/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/numeric-comparisons/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/schema-check/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/set-membership/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/demos/using-parquet-data/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/docs/index.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/images/pointblank-tabular-report.png +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/images/pointblank_logo.svg +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/__init__.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/_constants_docs.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/_utils_check_args.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/_utils_html.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/actions.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/assistant.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/column.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/game_revenue-duckdb.zip +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/game_revenue.zip +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/nycflights-duckdb.zip +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/nycflights.zip +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/polars-api-docs.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/small_table-duckdb.zip +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/data/small_table.zip +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/schema.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank/tf.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank.egg-info/dependency_links.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank.egg-info/requires.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/pointblank.egg-info/top_level.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/setup.cfg +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/__init__.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/manual_tests/schema_step_reports.qmd +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_datascan/test_col_summary_tbl_duckdb_snap/col_summary_html_duckdb.html +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_datascan/test_col_summary_tbl_pandas_snap/col_summary_html_pandas.html +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_datascan/test_col_summary_tbl_polars_snap/col_summary_html_polars.html +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_01/schema_step_report_01-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_01_1/schema_step_report_01-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_01_2/schema_step_report_01-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_01_3/schema_step_report_01-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_02/schema_step_report_02-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_02_1/schema_step_report_02-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_02_2/schema_step_report_02-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_02_3/schema_step_report_02-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_03/schema_step_report_03-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_03_1/schema_step_report_03-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_03_2/schema_step_report_03-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_03_3/schema_step_report_03-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_04/schema_step_report_04-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_05/schema_step_report_05-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_06/schema_step_report_06-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_07/schema_step_report_07-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_08/schema_step_report_08-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_09/schema_step_report_09-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_10/schema_step_report_10-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_11/schema_step_report_11-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_12/schema_step_report_12-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_13/schema_step_report_13-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_14/schema_step_report_14-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_14_1/schema_step_report_14-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_15/schema_step_report_15-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_15_1/schema_step_report_15-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_16/schema_step_report_16-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_16_1/schema_step_report_16-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_17/schema_step_report_17-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_17_1/schema_step_report_17-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_18/schema_step_report_18-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_18_1/schema_step_report_18-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_19/schema_step_report_19-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_19_1/schema_step_report_19-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_20/schema_step_report_20-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_20_1/schema_step_report_20-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_21/schema_step_report_21-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_21_1/schema_step_report_21-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_21_2/schema_step_report_21-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_21_3/schema_step_report_21-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_22/schema_step_report_22-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_22_1/schema_step_report_22-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_23/schema_step_report_23-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_23_1/schema_step_report_23-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_24/schema_step_report_24-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_24_1/schema_step_report_24-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_24_2/schema_step_report_24-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_24_3/schema_step_report_24-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_25/schema_step_report_25-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_1/schema_step_report_25-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_2/schema_step_report_25-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_3/schema_step_report_25-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_4/schema_step_report_25-4.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_5/schema_step_report_25-5.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_no_steps_validation_report_html_snap/no_steps_validation_report.html +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_sqlite/validation_report.json +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_xyz.ddb +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_xyz.parquet +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_xyz.sqlite +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test__interrogation.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test__utils_check_args.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_actions.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_assistant.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_column.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_datascan.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_draft.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_schema.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_tf.py +0 -0
- {pointblank-0.8.7 → pointblank-0.9.1}/tests/test_thresholds.py +0 -0
|
@@ -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 requests shiny
|
|
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
|
|
33
33
|
- name: pytest unit tests
|
|
34
34
|
run: |
|
|
35
35
|
make test
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
.PHONY: check
|
|
2
2
|
|
|
3
|
+
.PHONY: test
|
|
3
4
|
test:
|
|
4
|
-
pytest
|
|
5
|
+
@pytest \
|
|
6
|
+
--cov=pointblank \
|
|
7
|
+
--cov-report=term-missing \
|
|
8
|
+
--randomly-seed 123 \
|
|
9
|
+
-n auto \
|
|
10
|
+
--reruns 3 \
|
|
11
|
+
--reruns-delay 1
|
|
5
12
|
|
|
6
13
|
test-update:
|
|
7
14
|
pytest --snapshot-update
|
|
8
15
|
|
|
9
|
-
test-coverage:
|
|
10
|
-
pytest --cov=pointblank --cov-report=term-missing
|
|
11
16
|
|
|
12
17
|
lint: ## Run ruff formatter and linter
|
|
13
18
|
@uv run ruff format
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pointblank
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.1
|
|
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
|
|
@@ -89,6 +89,7 @@ _Data validation made beautiful and powerful_
|
|
|
89
89
|
[](https://pypi.python.org/pypi/pointblank)
|
|
90
90
|
[](https://pypi.org/project/pointblank/#history)
|
|
91
91
|
[](https://pypistats.org/packages/pointblank)
|
|
92
|
+
[](https://anaconda.org/conda-forge/pointblank)
|
|
92
93
|
[](https://img.shields.io/github/license/posit-dev/pointblank)
|
|
93
94
|
|
|
94
95
|
[](https://github.com/posit-dev/pointblank/actions/workflows/ci-tests.yaml)
|
|
@@ -108,7 +109,10 @@ _Data validation made beautiful and powerful_
|
|
|
108
109
|
<a href="translations/README.it.md">Italiano</a> |
|
|
109
110
|
<a href="translations/README.es.md">Español</a> |
|
|
110
111
|
<a href="translations/README.pt-BR.md">Português</a> |
|
|
111
|
-
<a href="translations/README.
|
|
112
|
+
<a href="translations/README.nl.md">Nederlands</a> |
|
|
113
|
+
<a href="translations/README.zh-CN.md">简体中文</a> |
|
|
114
|
+
<a href="translations/README.ja.md">日本語</a> |
|
|
115
|
+
<a href="translations/README.ko.md">한국어</a>
|
|
112
116
|
</div>
|
|
113
117
|
|
|
114
118
|
## What is Pointblank?
|
|
@@ -7,6 +7,7 @@ _Data validation made beautiful and powerful_
|
|
|
7
7
|
[](https://pypi.python.org/pypi/pointblank)
|
|
8
8
|
[](https://pypi.org/project/pointblank/#history)
|
|
9
9
|
[](https://pypistats.org/packages/pointblank)
|
|
10
|
+
[](https://anaconda.org/conda-forge/pointblank)
|
|
10
11
|
[](https://img.shields.io/github/license/posit-dev/pointblank)
|
|
11
12
|
|
|
12
13
|
[](https://github.com/posit-dev/pointblank/actions/workflows/ci-tests.yaml)
|
|
@@ -26,7 +27,10 @@ _Data validation made beautiful and powerful_
|
|
|
26
27
|
<a href="translations/README.it.md">Italiano</a> |
|
|
27
28
|
<a href="translations/README.es.md">Español</a> |
|
|
28
29
|
<a href="translations/README.pt-BR.md">Português</a> |
|
|
29
|
-
<a href="translations/README.
|
|
30
|
+
<a href="translations/README.nl.md">Nederlands</a> |
|
|
31
|
+
<a href="translations/README.zh-CN.md">简体中文</a> |
|
|
32
|
+
<a href="translations/README.ja.md">日本語</a> |
|
|
33
|
+
<a href="translations/README.ko.md">한국어</a>
|
|
30
34
|
</div>
|
|
31
35
|
|
|
32
36
|
## What is Pointblank?
|
|
@@ -61,10 +61,12 @@ website:
|
|
|
61
61
|
contents:
|
|
62
62
|
- user-guide/types.qmd
|
|
63
63
|
- user-guide/columns.qmd
|
|
64
|
-
- user-guide/across.qmd
|
|
65
64
|
- user-guide/preprocessing.qmd
|
|
65
|
+
- user-guide/segmentation.qmd
|
|
66
|
+
- user-guide/briefs.qmd
|
|
66
67
|
- section: "Post Interrogation"
|
|
67
68
|
contents:
|
|
69
|
+
- user-guide/step-reports.qmd
|
|
68
70
|
- user-guide/extracts.qmd
|
|
69
71
|
- user-guide/sundering.qmd
|
|
70
72
|
- section: "Data Inspection"
|
|
@@ -126,6 +128,7 @@ quartodoc:
|
|
|
126
128
|
- name: Validate.col_vals_expr
|
|
127
129
|
- name: Validate.col_exists
|
|
128
130
|
- name: Validate.rows_distinct
|
|
131
|
+
- name: Validate.rows_complete
|
|
129
132
|
- name: Validate.col_schema_match
|
|
130
133
|
- name: Validate.row_count_match
|
|
131
134
|
- name: Validate.col_count_match
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -15,7 +15,6 @@ A validation with a comprehensive set of rules.
|
|
|
15
15
|
|
|
16
16
|
import pointblank as pb
|
|
17
17
|
import polars as pl
|
|
18
|
-
import narwhals as nw
|
|
19
18
|
|
|
20
19
|
validation = (
|
|
21
20
|
pb.Validate(
|
|
@@ -52,7 +51,6 @@ validation
|
|
|
52
51
|
```python
|
|
53
52
|
import pointblank as pb
|
|
54
53
|
import polars as pl
|
|
55
|
-
import narwhals as nw
|
|
56
54
|
|
|
57
55
|
validation = (
|
|
58
56
|
pb.Validate(
|
|
@@ -107,9 +107,18 @@ validation_2 = (
|
|
|
107
107
|
thresholds=pb.Thresholds(warning=0.05, error=0.10, critical=0.15),
|
|
108
108
|
actions=pb.Actions(critical=action_str),
|
|
109
109
|
)
|
|
110
|
-
.col_vals_regex(
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
.col_vals_regex(
|
|
111
|
+
columns="player_id",
|
|
112
|
+
pattern=r"[A-Z]{12}\d{3}"
|
|
113
|
+
)
|
|
114
|
+
.col_vals_gt(
|
|
115
|
+
columns="item_revenue",
|
|
116
|
+
value=0.10
|
|
117
|
+
)
|
|
118
|
+
.col_vals_ge(
|
|
119
|
+
columns="session_duration",
|
|
120
|
+
value=15
|
|
121
|
+
)
|
|
113
122
|
.interrogate()
|
|
114
123
|
)
|
|
115
124
|
|
|
@@ -139,8 +148,14 @@ validation_3 = (
|
|
|
139
148
|
data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
|
|
140
149
|
thresholds=pb.Thresholds(warning=0.05, error=0.10, critical=0.15),
|
|
141
150
|
)
|
|
142
|
-
.col_vals_regex(
|
|
143
|
-
|
|
151
|
+
.col_vals_regex(
|
|
152
|
+
columns="player_id",
|
|
153
|
+
pattern=r"[A-Z]{12}\d{3}"
|
|
154
|
+
)
|
|
155
|
+
.col_vals_gt(
|
|
156
|
+
columns="item_revenue",
|
|
157
|
+
value=0.05
|
|
158
|
+
)
|
|
144
159
|
.col_vals_gt(
|
|
145
160
|
columns="session_duration",
|
|
146
161
|
value=15,
|
|
@@ -191,8 +206,14 @@ validation = (
|
|
|
191
206
|
actions=pb.Actions(default=print_problem),
|
|
192
207
|
brief=True,
|
|
193
208
|
)
|
|
194
|
-
.col_vals_regex(
|
|
195
|
-
|
|
209
|
+
.col_vals_regex(
|
|
210
|
+
columns="player_id",
|
|
211
|
+
pattern=r"[A-Z]{12}\d{3}"
|
|
212
|
+
)
|
|
213
|
+
.col_vals_gt(
|
|
214
|
+
columns="item_revenue",
|
|
215
|
+
value=0.05
|
|
216
|
+
)
|
|
196
217
|
.col_vals_gt(
|
|
197
218
|
columns="session_duration",
|
|
198
219
|
value=15,
|
|
@@ -222,3 +243,196 @@ The metadata dictionary contains the following fields for a given validation ste
|
|
|
222
243
|
- `level_num`: The severity level as a numeric value (`30`, `40`, or `50`).
|
|
223
244
|
- `autobrief`: A localized and brief statement of the expectation for the step.
|
|
224
245
|
- `failure_text`: Localized text that explains how the validation step failed.
|
|
246
|
+
|
|
247
|
+
## Final Actions with `FinalActions`
|
|
248
|
+
|
|
249
|
+
When you need to execute actions after all validation steps are complete, Pointblank provides the
|
|
250
|
+
[`FinalActions`](https://posit-dev.github.io/pointblank/reference/FinalActions.html) class. Unlike
|
|
251
|
+
[`Actions`](https://posit-dev.github.io/pointblank/reference/Actions.html) which triggers on a
|
|
252
|
+
per-step basis during the validation process,
|
|
253
|
+
[`FinalActions`](https://posit-dev.github.io/pointblank/reference/FinalActions.html) executes after
|
|
254
|
+
the entire validation is complete, giving you a way to respond to the overall validation results.
|
|
255
|
+
|
|
256
|
+
Here's how to use
|
|
257
|
+
[`FinalActions`](https://posit-dev.github.io/pointblank/reference/FinalActions.html):
|
|
258
|
+
|
|
259
|
+
```{python}
|
|
260
|
+
import pointblank as pb
|
|
261
|
+
|
|
262
|
+
def send_alert():
|
|
263
|
+
summary = pb.get_validation_summary()
|
|
264
|
+
if summary["highest_severity"] == "critical":
|
|
265
|
+
print(f"ALERT: Critical validation failures found in `{summary['tbl_name']}`")
|
|
266
|
+
|
|
267
|
+
validation_with_final = (
|
|
268
|
+
pb.Validate(
|
|
269
|
+
data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
|
|
270
|
+
tbl_name="game_revenue",
|
|
271
|
+
thresholds=pb.Thresholds(warning=0.05, error=0.10, critical=0.15),
|
|
272
|
+
final_actions=pb.FinalActions(
|
|
273
|
+
"Validation complete.", # a string message
|
|
274
|
+
send_alert # a callable function
|
|
275
|
+
)
|
|
276
|
+
)
|
|
277
|
+
.col_vals_regex(
|
|
278
|
+
columns="player_id",
|
|
279
|
+
pattern=r"[A-Z]{12}\d{3}"
|
|
280
|
+
)
|
|
281
|
+
.col_vals_gt(
|
|
282
|
+
columns="item_revenue",
|
|
283
|
+
value=0.10
|
|
284
|
+
)
|
|
285
|
+
.interrogate()
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
validation_with_final
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
In this example:
|
|
292
|
+
|
|
293
|
+
- We define the function `send_alert()` that checks the validation summary for critical failures
|
|
294
|
+
- We provide a simple string message `"Validation complete."` that will print to the console
|
|
295
|
+
- Both actions will execute in order after all validation steps have completed
|
|
296
|
+
|
|
297
|
+
Because the 'critical' threshold was exceeded in Step 2, we see the printed alert of `send_alert()`
|
|
298
|
+
after the simple string message.
|
|
299
|
+
|
|
300
|
+
### Creating Final Actions
|
|
301
|
+
|
|
302
|
+
[`FinalActions`](https://posit-dev.github.io/pointblank/reference/FinalActions.html) accepts any
|
|
303
|
+
number of actions as positional arguments. Each argument can be:
|
|
304
|
+
|
|
305
|
+
1. **String**: A message to be displayed in the console
|
|
306
|
+
2. **Callable**: A function to be called with no arguments
|
|
307
|
+
3. **List of Strings/Callables**: Multiple actions to execute in sequence
|
|
308
|
+
|
|
309
|
+
All actions will be executed in the order they are provided after all validation steps have
|
|
310
|
+
completed.
|
|
311
|
+
|
|
312
|
+
### Using `get_validation_summary()` in Final Actions
|
|
313
|
+
|
|
314
|
+
When creating a callable function to use with
|
|
315
|
+
[`FinalActions`](https://posit-dev.github.io/pointblank/reference/FinalActions.html), you can access
|
|
316
|
+
information about the overall validation results using the
|
|
317
|
+
[`get_validation_summary()`](https://posit-dev.github.io/pointblank/reference/get_validation_summary.html)
|
|
318
|
+
function. This gives you a dictionary with comprehensive information about the validation:
|
|
319
|
+
|
|
320
|
+
```python
|
|
321
|
+
def comprehensive_report():
|
|
322
|
+
summary = pb.get_validation_summary()
|
|
323
|
+
print(f"Validation Report for {summary['tbl_name']}:")
|
|
324
|
+
print(f"- Steps: {summary['n_steps']}")
|
|
325
|
+
print(f"- Passing steps: {summary['n_passing_steps']}")
|
|
326
|
+
print(f"- Failing steps: {summary['n_failing_steps']}")
|
|
327
|
+
|
|
328
|
+
# Take additional actions based on results
|
|
329
|
+
if summary["n_failing_steps"] > 0:
|
|
330
|
+
# Create and execute a Slack notification
|
|
331
|
+
notify = pb.send_slack_notification(
|
|
332
|
+
webhook_url="https://hooks.slack.com/services/your/webhook/url",
|
|
333
|
+
summary_msg="""
|
|
334
|
+
🚨 *Validation Failure Alert*
|
|
335
|
+
• Table: {tbl_name}
|
|
336
|
+
• Failed Steps: {n_failing_steps} of {n_steps}
|
|
337
|
+
• Highest Severity: {highest_severity}
|
|
338
|
+
• Time: {time}
|
|
339
|
+
""",
|
|
340
|
+
)
|
|
341
|
+
notify() # Execute the notification function
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
validation = (
|
|
345
|
+
pb.Validate(
|
|
346
|
+
data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
|
|
347
|
+
tbl_name="game_revenue",
|
|
348
|
+
final_actions=pb.FinalActions(comprehensive_report),
|
|
349
|
+
)
|
|
350
|
+
.col_vals_regex(
|
|
351
|
+
columns="player_id",
|
|
352
|
+
pattern=r"[A-Z]{12}\d{3}"
|
|
353
|
+
)
|
|
354
|
+
.col_vals_gt(
|
|
355
|
+
columns="item_revenue",
|
|
356
|
+
value=0.05
|
|
357
|
+
)
|
|
358
|
+
.interrogate()
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
validation
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
```{python}
|
|
365
|
+
# | echo: false
|
|
366
|
+
|
|
367
|
+
validation = (
|
|
368
|
+
pb.Validate(
|
|
369
|
+
data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
|
|
370
|
+
tbl_name="game_revenue",
|
|
371
|
+
)
|
|
372
|
+
.col_vals_regex(
|
|
373
|
+
columns="player_id",
|
|
374
|
+
pattern=r"[A-Z]{12}\d{3}"
|
|
375
|
+
)
|
|
376
|
+
.col_vals_gt(
|
|
377
|
+
columns="item_revenue",
|
|
378
|
+
value=0.05
|
|
379
|
+
)
|
|
380
|
+
.interrogate()
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
validation
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Here we used the [`send_slack_notification()`](https://posit-dev.github.io/pointblank/reference/send_slack_notification.html)
|
|
387
|
+
function, which is available in Pointblank as a pre-built action. It can be used by itself in
|
|
388
|
+
`final_actions=` but here it's integrated into the user's `comprehensive_report()` function.
|
|
389
|
+
|
|
390
|
+
### Combining the Two Types of Actions
|
|
391
|
+
|
|
392
|
+
You can use both [`Actions`](https://posit-dev.github.io/pointblank/reference/Actions.html) and
|
|
393
|
+
[`FinalActions`](https://posit-dev.github.io/pointblank/reference/FinalActions.html) together for
|
|
394
|
+
comprehensive validation control:
|
|
395
|
+
|
|
396
|
+
```{python}
|
|
397
|
+
def log_step_failure():
|
|
398
|
+
m = pb.get_action_metadata()
|
|
399
|
+
print(f"Step {m['step']} failed with {m['level']}")
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
def generate_summary():
|
|
403
|
+
summary = pb.get_validation_summary()
|
|
404
|
+
# Sum up total failed test units across all steps
|
|
405
|
+
total_failed = sum(summary["dict_n_failed"].values())
|
|
406
|
+
# Sum up total test units across all steps
|
|
407
|
+
total_units = sum(summary["dict_n"].values())
|
|
408
|
+
print(f"Validation complete: {total_failed} failures out of {total_units} tests")
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
validation_combined = (
|
|
412
|
+
pb.Validate(
|
|
413
|
+
data=pb.load_dataset(dataset="game_revenue", tbl_type="duckdb"),
|
|
414
|
+
thresholds=pb.Thresholds(warning=0.05, error=0.10),
|
|
415
|
+
actions=pb.Actions(default=log_step_failure),
|
|
416
|
+
final_actions=pb.FinalActions(generate_summary),
|
|
417
|
+
)
|
|
418
|
+
.col_vals_regex(
|
|
419
|
+
columns="player_id",
|
|
420
|
+
pattern=r"[A-Z]{12}\d{3}"
|
|
421
|
+
)
|
|
422
|
+
.col_vals_gt(
|
|
423
|
+
columns="item_revenue",
|
|
424
|
+
value=0.05
|
|
425
|
+
)
|
|
426
|
+
.interrogate()
|
|
427
|
+
)
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
This approach allows you to:
|
|
431
|
+
|
|
432
|
+
1. Log individual step failures during the validation process using
|
|
433
|
+
[`Actions`](https://posit-dev.github.io/pointblank/reference/Actions.html)
|
|
434
|
+
2. Generate a comprehensive report after all validation steps are complete using
|
|
435
|
+
[`FinalActions`](https://posit-dev.github.io/pointblank/reference/FinalActions.html)
|
|
436
|
+
|
|
437
|
+
Using both action types gives you fine-grained control over when and how notifications and other
|
|
438
|
+
actions are triggered in your validation workflow.
|