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.
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/ISSUE_TEMPLATE/bug.md +2 -2
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/ISSUE_TEMPLATE/feature.md +1 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/PULL_REQUEST_TEMPLATE.md +1 -1
- pointblank-0.8.0/.github/SECURITY.md +14 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/workflows/ci-tests.yaml +1 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/CITATION.cff +3 -3
- {pointblank-0.7.2 → pointblank-0.8.0}/CONTRIBUTING.md +3 -3
- {pointblank-0.7.2 → pointblank-0.8.0}/PKG-INFO +8 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/README.md +7 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/_quarto.yml +15 -8
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/styles.css +1 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/actions.qmd +70 -7
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/__init__.py +2 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_constants.py +11 -2
- pointblank-0.8.0/pointblank/_constants_translations.py +1225 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_interrogation.py +145 -3
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_utils.py +1 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_utils_check_args.py +1 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/api-docs.txt +1516 -277
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/draft.py +1 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/thresholds.py +24 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/validate.py +2506 -571
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/PKG-INFO +8 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/SOURCES.txt +3 -1
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +152 -77
- {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
- {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
- pointblank-0.8.0/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +310 -0
- pointblank-0.8.0/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +309 -0
- {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
- {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
- {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
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_validate.py +1152 -81
- pointblank-0.7.2/.github/SECURITY.md +0 -14
- pointblank-0.7.2/pointblank/_constants_expect_fail.py +0 -594
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/CODE_OF_CONDUCT.md +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/workflows/ci-docs.yaml +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/.github/workflows/code-checks.yaml +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/.gitignore +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/.pre-commit-config.yaml +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/.vscode/settings.json +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/LICENSE +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/Makefile +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/game_revenue.csv +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/nycflights.csv +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/nycflights.ddb +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/small_table.csv +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/x-01-parquet.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/x-02-duckdb.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/data_raw/x-03-sqlite.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/.gitignore +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/_extensions/machow/interlinks/.gitignore +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/_extensions/machow/interlinks/interlinks.lua +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/fav-logo.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/pointblank-tabular-report.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/pointblank_logo.svg +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/assets/validation-table-diagram.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/01-starter/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/02-advanced/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/03-data-extracts/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/04-sundered-data/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/05-step-report-column-check/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/check-row-column-counts/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/checks-for-missing/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/column-selector-functions/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/comparisons-across-columns/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/data/game_revenue.parquet +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/expect-text-pattern/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/failure-thresholds/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/advanced_validation.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/data_extracts.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/starter_validation.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/step_report_column_schema.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/step_report_column_values.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/img/sundered_data.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/mutate-table-in-step/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/numeric-comparisons/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/schema-check/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/set-membership/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/demos/using-parquet-data/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/across.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/col-summary-tbl.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/columns.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/extracts.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/index.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/missing-vals-tbl.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/preprocessing.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/preview.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/sundering.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/thresholds.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/docs/user-guide/types.qmd +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/images/pointblank-tabular-report.png +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/images/pointblank_logo.svg +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_constants_docs.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_typing.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/_utils_html.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/assistant.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/column.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/game_revenue-duckdb.zip +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/game_revenue.zip +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/nycflights-duckdb.zip +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/nycflights.zip +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/polars-api-docs.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/small_table-duckdb.zip +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/data/small_table.zip +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/datascan.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/schema.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank/tf.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/dependency_links.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/requires.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pointblank.egg-info/top_level.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/pyproject.toml +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/setup.cfg +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/__init__.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/manual_tests/schema_step_reports.qmd +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz.ddb +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz.parquet +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz.sqlite +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test__interrogation.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test__utils.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test__utils_check_args.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_assistant.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_column.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_datascan.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_draft.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_schema.py +0 -0
- {pointblank-0.7.2 → pointblank-0.8.0}/tests/test_tf.py +0 -0
- {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 '
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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 "
|
|
2
|
+
message: 'If you wish to cite the "Pointblank" package use:'
|
|
3
3
|
type: software
|
|
4
4
|
license: MIT
|
|
5
|
-
title: "
|
|
6
|
-
version: 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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
175
|
-
in a table
|
|
176
|
-
|
|
177
|
-
|
|
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:
|
|
195
|
+
- name: get_action_metadata
|
|
188
196
|
- name: config
|
|
189
|
-
- name: assistant
|
|
@@ -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
|
-
##
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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=
|
|
147
|
+
actions=pb.Actions(warning=duration_issue),
|
|
144
148
|
)
|
|
145
149
|
.interrogate()
|
|
146
150
|
)
|
|
147
151
|
|
|
148
|
-
|
|
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;'>✓</span>"
|
|
180
189
|
CROSS_MARK_SPAN = "<span style='color: #CF142B;'>✗</span>"
|
|
181
190
|
|