pointblank 0.8.6__tar.gz → 0.8.7__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.6 → pointblank-0.8.7}/PKG-INFO +15 -4
- {pointblank-0.8.6 → pointblank-0.8.7}/README.md +14 -3
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/blog/intro-pointblank/index.qmd +1 -1
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/index.qmd +1 -1
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_interrogation.py +10 -4
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/validate.py +10 -2
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank.egg-info/PKG-INFO +15 -4
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank.egg-info/SOURCES.txt +7 -1
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_validate.py +25 -0
- pointblank-0.8.7/translations/README.de.md +240 -0
- pointblank-0.8.7/translations/README.es.md +238 -0
- pointblank-0.8.7/translations/README.fr.md +238 -0
- pointblank-0.8.7/translations/README.it.md +240 -0
- pointblank-0.8.7/translations/README.pt-BR.md +240 -0
- pointblank-0.8.7/translations/README.zh-CN.md +233 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/CODE_OF_CONDUCT.md +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/ISSUE_TEMPLATE/bug.md +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/SECURITY.md +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/workflows/ci-docs.yaml +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/workflows/ci-tests.yaml +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.github/workflows/code-checks.yaml +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.gitignore +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.pre-commit-config.yaml +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/.vscode/settings.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/CITATION.cff +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/CONTRIBUTING.md +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/LICENSE +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/Makefile +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/data_raw/game_revenue.csv +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/data_raw/nycflights.csv +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/data_raw/nycflights.ddb +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/data_raw/small_table.csv +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/data_raw/x-01-parquet.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/data_raw/x-02-duckdb.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/data_raw/x-03-sqlite.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/.gitignore +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/_extensions/machow/interlinks/.gitignore +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/_extensions/machow/interlinks/interlinks.lua +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/_quarto.yml +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/assets/fav-logo.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/assets/pointblank-sales-data.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/assets/pointblank-step-report.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/assets/pointblank-tabular-report.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/assets/pointblank_logo.svg +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/assets/validation-table-diagram.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/blog/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/blog/intro-pointblank/pointblank-localized.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/blog/intro-pointblank/step_report.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/blog/intro-pointblank/validation-table-diagram.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/blog/intro-pointblank/validation-test-units.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/blog/pointblank_blog_logo.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/01-starter/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/02-advanced/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/03-data-extracts/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/04-sundered-data/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/05-step-report-column-check/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/check-row-column-counts/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/checks-for-missing/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/column-selector-functions/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/comparisons-across-columns/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/data/game_revenue.parquet +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/expect-text-pattern/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/failure-thresholds/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/img/advanced_validation.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/img/data_extracts.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/img/starter_validation.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/img/step_report_column_schema.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/img/step_report_column_values.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/img/sundered_data.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/mutate-table-in-step/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/numeric-comparisons/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/schema-check/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/set-membership/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/demos/using-parquet-data/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/styles.css +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/across.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/actions.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/col-summary-tbl.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/columns.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/extracts.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/index.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/missing-vals-tbl.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/preprocessing.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/preview.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/sundering.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/thresholds.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/docs/user-guide/types.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/images/pointblank-tabular-report.png +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/images/pointblank_logo.svg +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/__init__.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_constants.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_constants_docs.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_constants_translations.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_typing.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_utils.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_utils_check_args.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/_utils_html.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/actions.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/assistant.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/column.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/api-docs.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/game_revenue-duckdb.zip +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/game_revenue.zip +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/nycflights-duckdb.zip +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/nycflights.zip +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/polars-api-docs.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/small_table-duckdb.zip +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/data/small_table.zip +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/datascan.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/draft.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/schema.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/tf.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank/thresholds.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank.egg-info/dependency_links.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank.egg-info/requires.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pointblank.egg-info/top_level.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/pyproject.toml +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/setup.cfg +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/__init__.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/manual_tests/schema_step_reports.qmd +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_datascan/test_col_summary_tbl_duckdb_snap/col_summary_html_duckdb.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_datascan/test_col_summary_tbl_pandas_snap/col_summary_html_pandas.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_datascan/test_col_summary_tbl_polars_snap/col_summary_html_polars.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_01/schema_step_report_01-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_01_1/schema_step_report_01-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_01_2/schema_step_report_01-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_01_3/schema_step_report_01-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_02/schema_step_report_02-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_02_1/schema_step_report_02-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_02_2/schema_step_report_02-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_02_3/schema_step_report_02-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_03/schema_step_report_03-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_03_1/schema_step_report_03-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_03_2/schema_step_report_03-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_03_3/schema_step_report_03-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_04/schema_step_report_04-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_05/schema_step_report_05-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_06/schema_step_report_06-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_07/schema_step_report_07-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_08/schema_step_report_08-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_09/schema_step_report_09-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_10/schema_step_report_10-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_11/schema_step_report_11-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_12/schema_step_report_12-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_13/schema_step_report_13-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_14/schema_step_report_14-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_14_1/schema_step_report_14-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_15/schema_step_report_15-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_15_1/schema_step_report_15-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_16/schema_step_report_16-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_16_1/schema_step_report_16-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_17/schema_step_report_17-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_17_1/schema_step_report_17-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_18/schema_step_report_18-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_18_1/schema_step_report_18-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_19/schema_step_report_19-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_19_1/schema_step_report_19-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_20/schema_step_report_20-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_20_1/schema_step_report_20-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_21/schema_step_report_21-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_21_1/schema_step_report_21-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_21_2/schema_step_report_21-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_21_3/schema_step_report_21-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_22/schema_step_report_22-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_22_1/schema_step_report_22-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_23/schema_step_report_23-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_23_1/schema_step_report_23-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_24/schema_step_report_24-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_24_1/schema_step_report_24-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_24_2/schema_step_report_24-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_24_3/schema_step_report_24-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_25/schema_step_report_25-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_25_1/schema_step_report_25-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_25_2/schema_step_report_25-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_25_3/schema_step_report_25-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_25_4/schema_step_report_25-4.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_step_report_25_5/schema_step_report_25-5.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_no_interrogation_validation_report_html_snap/no_interrogation_validation_report.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_no_steps_validation_report_html_snap/no_steps_validation_report.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_sqlite/validation_report.json +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_memtable_variable_names/selector_helper_functions_no_match.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pd_variable_names/selector_helper_functions_no_match.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/snapshots/test_validate/test_validation_with_selector_helper_functions_no_match_snap/tbl_pl_variable_names/selector_helper_functions_no_match.html +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_xyz.ddb +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_xyz.parquet +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_xyz.sqlite +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test__interrogation.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test__utils.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test__utils_check_args.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_actions.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_assistant.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_column.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_datascan.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_draft.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_schema.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_tf.py +0 -0
- {pointblank-0.8.6 → pointblank-0.8.7}/tests/test_thresholds.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pointblank
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.7
|
|
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
|
|
@@ -102,9 +102,18 @@ _Data validation made beautiful and powerful_
|
|
|
102
102
|
|
|
103
103
|
</div>
|
|
104
104
|
|
|
105
|
+
<div align="right">
|
|
106
|
+
<a href="translations/README.fr.md">Français</a> |
|
|
107
|
+
<a href="translations/README.de.md">Deutsch</a> |
|
|
108
|
+
<a href="translations/README.it.md">Italiano</a> |
|
|
109
|
+
<a href="translations/README.es.md">Español</a> |
|
|
110
|
+
<a href="translations/README.pt-BR.md">Português</a> |
|
|
111
|
+
<a href="translations/README.zh-CN.md">简体中文</a>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
105
114
|
## What is Pointblank?
|
|
106
115
|
|
|
107
|
-
Pointblank is a
|
|
116
|
+
Pointblank is a powerful, yet elegant data validation framework for Python that transforms how you ensure data quality. With its intuitive, chainable API, you can quickly validate your data against comprehensive quality checks and visualize results through stunning, interactive reports that make data issues immediately actionable.
|
|
108
117
|
|
|
109
118
|
Whether you're a data scientist, data engineer, or analyst, Pointblank helps you catch data quality issues before they impact your analyses or downstream systems.
|
|
110
119
|
|
|
@@ -134,9 +143,9 @@ validation
|
|
|
134
143
|
|
|
135
144
|
<br>
|
|
136
145
|
|
|
137
|
-
Why Choose Pointblank?
|
|
146
|
+
## Why Choose Pointblank?
|
|
138
147
|
|
|
139
|
-
- **Works with your existing stack** - Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, and more!
|
|
148
|
+
- **Works with your existing stack** - Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, and more!
|
|
140
149
|
- **Beautiful, interactive reports** - Crystal-clear validation results that highlight issues and help communicate data quality
|
|
141
150
|
- **Composable validation pipeline** - Chain validation steps into a complete data quality workflow
|
|
142
151
|
- **Threshold-based alerts** - Set 'warning', 'error', and 'critical' thresholds with custom actions
|
|
@@ -213,6 +222,8 @@ validation.get_step_report(i=3).show("browser") # Get failing records from step
|
|
|
213
222
|
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-step-report.png" width="800px">
|
|
214
223
|
</div>
|
|
215
224
|
|
|
225
|
+
<br>
|
|
226
|
+
|
|
216
227
|
## Features That Set Pointblank Apart
|
|
217
228
|
|
|
218
229
|
- **Complete validation workflow** - From data access to validation to reporting in a single pipeline
|
|
@@ -20,9 +20,18 @@ _Data validation made beautiful and powerful_
|
|
|
20
20
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
|
+
<div align="right">
|
|
24
|
+
<a href="translations/README.fr.md">Français</a> |
|
|
25
|
+
<a href="translations/README.de.md">Deutsch</a> |
|
|
26
|
+
<a href="translations/README.it.md">Italiano</a> |
|
|
27
|
+
<a href="translations/README.es.md">Español</a> |
|
|
28
|
+
<a href="translations/README.pt-BR.md">Português</a> |
|
|
29
|
+
<a href="translations/README.zh-CN.md">简体中文</a>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
23
32
|
## What is Pointblank?
|
|
24
33
|
|
|
25
|
-
Pointblank is a
|
|
34
|
+
Pointblank is a powerful, yet elegant data validation framework for Python that transforms how you ensure data quality. With its intuitive, chainable API, you can quickly validate your data against comprehensive quality checks and visualize results through stunning, interactive reports that make data issues immediately actionable.
|
|
26
35
|
|
|
27
36
|
Whether you're a data scientist, data engineer, or analyst, Pointblank helps you catch data quality issues before they impact your analyses or downstream systems.
|
|
28
37
|
|
|
@@ -52,9 +61,9 @@ validation
|
|
|
52
61
|
|
|
53
62
|
<br>
|
|
54
63
|
|
|
55
|
-
Why Choose Pointblank?
|
|
64
|
+
## Why Choose Pointblank?
|
|
56
65
|
|
|
57
|
-
- **Works with your existing stack** - Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, and more!
|
|
66
|
+
- **Works with your existing stack** - Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, and more!
|
|
58
67
|
- **Beautiful, interactive reports** - Crystal-clear validation results that highlight issues and help communicate data quality
|
|
59
68
|
- **Composable validation pipeline** - Chain validation steps into a complete data quality workflow
|
|
60
69
|
- **Threshold-based alerts** - Set 'warning', 'error', and 'critical' thresholds with custom actions
|
|
@@ -131,6 +140,8 @@ validation.get_step_report(i=3).show("browser") # Get failing records from step
|
|
|
131
140
|
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-step-report.png" width="800px">
|
|
132
141
|
</div>
|
|
133
142
|
|
|
143
|
+
<br>
|
|
144
|
+
|
|
134
145
|
## Features That Set Pointblank Apart
|
|
135
146
|
|
|
136
147
|
- **Complete validation workflow** - From data access to validation to reporting in a single pipeline
|
|
@@ -11,7 +11,7 @@ _Data validation made beautiful and powerful_
|
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
|
-
Pointblank is a
|
|
14
|
+
Pointblank is a powerful, yet elegant data validation framework for Python that transforms how you ensure data quality. With its intuitive, chainable API, you can quickly validate your data against comprehensive quality checks and visualize results through stunning, interactive reports that make data issues immediately actionable.
|
|
15
15
|
|
|
16
16
|
Whether you're a data scientist, data engineer, or analyst, Pointblank helps you catch data quality issues before they impact your analyses or downstream systems.
|
|
17
17
|
|
|
@@ -1089,14 +1089,20 @@ class Interrogator:
|
|
|
1089
1089
|
def isin(self) -> FrameT | Any:
|
|
1090
1090
|
# Ibis backends ---------------------------------------------
|
|
1091
1091
|
|
|
1092
|
+
can_be_null: bool = None in self.set
|
|
1093
|
+
|
|
1092
1094
|
if self.tbl_type in IBIS_BACKENDS:
|
|
1093
|
-
|
|
1095
|
+
base_expr = self.x[self.column].isin(self.set)
|
|
1096
|
+
if can_be_null:
|
|
1097
|
+
base_expr = base_expr | self.x[self.column].isnull()
|
|
1098
|
+
return self.x.mutate(pb_is_good_=base_expr)
|
|
1094
1099
|
|
|
1095
1100
|
# Local backends (Narwhals) ---------------------------------
|
|
1101
|
+
base_expr: nw.Expr = nw.col(self.column).is_in(self.set)
|
|
1102
|
+
if can_be_null:
|
|
1103
|
+
base_expr = base_expr | nw.col(self.column).is_null()
|
|
1096
1104
|
|
|
1097
|
-
return self.x.with_columns(
|
|
1098
|
-
pb_is_good_=nw.col(self.column).is_in(self.set),
|
|
1099
|
-
).to_native()
|
|
1105
|
+
return self.x.with_columns(pb_is_good_=base_expr).to_native()
|
|
1100
1106
|
|
|
1101
1107
|
def notin(self) -> FrameT | Any:
|
|
1102
1108
|
# Ibis backends ---------------------------------------------
|
|
@@ -87,6 +87,8 @@ from pointblank.thresholds import (
|
|
|
87
87
|
)
|
|
88
88
|
|
|
89
89
|
if TYPE_CHECKING:
|
|
90
|
+
from collections.abc import Collection
|
|
91
|
+
|
|
90
92
|
from pointblank._typing import AbsoluteBounds, Tolerance
|
|
91
93
|
|
|
92
94
|
__all__ = [
|
|
@@ -4311,7 +4313,7 @@ class Validate:
|
|
|
4311
4313
|
def col_vals_in_set(
|
|
4312
4314
|
self,
|
|
4313
4315
|
columns: str | list[str] | Column | ColumnSelector | ColumnSelectorNarwhals,
|
|
4314
|
-
set:
|
|
4316
|
+
set: Collection[Any],
|
|
4315
4317
|
pre: Callable | None = None,
|
|
4316
4318
|
thresholds: int | float | bool | tuple | dict | Thresholds = None,
|
|
4317
4319
|
actions: Actions | None = None,
|
|
@@ -4471,7 +4473,13 @@ class Validate:
|
|
|
4471
4473
|
assertion_type = _get_fn_name()
|
|
4472
4474
|
|
|
4473
4475
|
_check_column(column=columns)
|
|
4474
|
-
|
|
4476
|
+
|
|
4477
|
+
for val in set:
|
|
4478
|
+
if val is None:
|
|
4479
|
+
continue
|
|
4480
|
+
if not isinstance(val, (float, int, str)):
|
|
4481
|
+
raise ValueError("`set=` must be a list of floats, integers, or strings.")
|
|
4482
|
+
|
|
4475
4483
|
_check_pre(pre=pre)
|
|
4476
4484
|
_check_thresholds(thresholds=thresholds)
|
|
4477
4485
|
_check_boolean_input(param=active, param_name="active")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pointblank
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.7
|
|
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
|
|
@@ -102,9 +102,18 @@ _Data validation made beautiful and powerful_
|
|
|
102
102
|
|
|
103
103
|
</div>
|
|
104
104
|
|
|
105
|
+
<div align="right">
|
|
106
|
+
<a href="translations/README.fr.md">Français</a> |
|
|
107
|
+
<a href="translations/README.de.md">Deutsch</a> |
|
|
108
|
+
<a href="translations/README.it.md">Italiano</a> |
|
|
109
|
+
<a href="translations/README.es.md">Español</a> |
|
|
110
|
+
<a href="translations/README.pt-BR.md">Português</a> |
|
|
111
|
+
<a href="translations/README.zh-CN.md">简体中文</a>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
105
114
|
## What is Pointblank?
|
|
106
115
|
|
|
107
|
-
Pointblank is a
|
|
116
|
+
Pointblank is a powerful, yet elegant data validation framework for Python that transforms how you ensure data quality. With its intuitive, chainable API, you can quickly validate your data against comprehensive quality checks and visualize results through stunning, interactive reports that make data issues immediately actionable.
|
|
108
117
|
|
|
109
118
|
Whether you're a data scientist, data engineer, or analyst, Pointblank helps you catch data quality issues before they impact your analyses or downstream systems.
|
|
110
119
|
|
|
@@ -134,9 +143,9 @@ validation
|
|
|
134
143
|
|
|
135
144
|
<br>
|
|
136
145
|
|
|
137
|
-
Why Choose Pointblank?
|
|
146
|
+
## Why Choose Pointblank?
|
|
138
147
|
|
|
139
|
-
- **Works with your existing stack** - Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, and more!
|
|
148
|
+
- **Works with your existing stack** - Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, and more!
|
|
140
149
|
- **Beautiful, interactive reports** - Crystal-clear validation results that highlight issues and help communicate data quality
|
|
141
150
|
- **Composable validation pipeline** - Chain validation steps into a complete data quality workflow
|
|
142
151
|
- **Threshold-based alerts** - Set 'warning', 'error', and 'critical' thresholds with custom actions
|
|
@@ -213,6 +222,8 @@ validation.get_step_report(i=3).show("browser") # Get failing records from step
|
|
|
213
222
|
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-step-report.png" width="800px">
|
|
214
223
|
</div>
|
|
215
224
|
|
|
225
|
+
<br>
|
|
226
|
+
|
|
216
227
|
## Features That Set Pointblank Apart
|
|
217
228
|
|
|
218
229
|
- **Complete validation workflow** - From data access to validation to reporting in a single pipeline
|
|
@@ -265,4 +265,10 @@ tests/tbl_files/tbl_xyz.parquet
|
|
|
265
265
|
tests/tbl_files/tbl_xyz.sqlite
|
|
266
266
|
tests/tbl_files/tbl_xyz_missing.ddb
|
|
267
267
|
tests/tbl_files/tbl_xyz_missing.parquet
|
|
268
|
-
tests/tbl_files/tbl_xyz_missing.sqlite
|
|
268
|
+
tests/tbl_files/tbl_xyz_missing.sqlite
|
|
269
|
+
translations/README.de.md
|
|
270
|
+
translations/README.es.md
|
|
271
|
+
translations/README.fr.md
|
|
272
|
+
translations/README.it.md
|
|
273
|
+
translations/README.pt-BR.md
|
|
274
|
+
translations/README.zh-CN.md
|
|
@@ -14,6 +14,7 @@ import contextlib
|
|
|
14
14
|
import datetime
|
|
15
15
|
|
|
16
16
|
import pandas as pd
|
|
17
|
+
|
|
17
18
|
import polars as pl
|
|
18
19
|
import ibis
|
|
19
20
|
|
|
@@ -347,6 +348,30 @@ def test_validate_class_lang_locale():
|
|
|
347
348
|
Validate(tbl_pd, lang="invalid")
|
|
348
349
|
|
|
349
350
|
|
|
351
|
+
@pytest.mark.parametrize(
|
|
352
|
+
"data",
|
|
353
|
+
(
|
|
354
|
+
pl.from_dict({"foo": [1, 2, None], "bar": ["winston", "cat", None]}).to_pandas(),
|
|
355
|
+
pl.from_dict({"foo": [1, 2, None], "bar": ["winston", "cat", None]}),
|
|
356
|
+
ibis.memtable(pl.from_dict({"foo": [1, 2, None], "bar": ["winston", "cat", None]})),
|
|
357
|
+
),
|
|
358
|
+
)
|
|
359
|
+
def test_null_vals_in_set(data: Any) -> None:
|
|
360
|
+
validate = (
|
|
361
|
+
Validate(data)
|
|
362
|
+
.col_vals_in_set(["foo"], set=[1, 2, None])
|
|
363
|
+
.col_vals_in_set(["bar"], set=["winston", "cat", None])
|
|
364
|
+
.interrogate()
|
|
365
|
+
)
|
|
366
|
+
|
|
367
|
+
validate.assert_passing()
|
|
368
|
+
|
|
369
|
+
validate = Validate(data).col_vals_in_set("foo", [1, 2]).interrogate()
|
|
370
|
+
|
|
371
|
+
with pytest.raises(AssertionError):
|
|
372
|
+
validate.assert_passing()
|
|
373
|
+
|
|
374
|
+
|
|
350
375
|
def test_validation_info():
|
|
351
376
|
v = _ValidationInfo(
|
|
352
377
|
i=1,
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<a href="https://posit-dev.github.io/pointblank/"><img src="https://posit-dev.github.io/pointblank/assets/pointblank_logo.svg" width="75%"/></a>
|
|
4
|
+
|
|
5
|
+
_Datenvalidierung, schön und leistungsstark_
|
|
6
|
+
|
|
7
|
+
[](https://pypi.python.org/pypi/pointblank)
|
|
8
|
+
[](https://pypi.org/project/pointblank/#history)
|
|
9
|
+
[](https://pypistats.org/packages/pointblank)
|
|
10
|
+
[](https://img.shields.io/github/license/posit-dev/pointblank)
|
|
11
|
+
|
|
12
|
+
[](https://github.com/posit-dev/pointblank/actions/workflows/ci-tests.yaml)
|
|
13
|
+
[](https://codecov.io/gh/posit-dev/pointblank)
|
|
14
|
+
[](https://www.repostatus.org/#active)
|
|
15
|
+
[](https://posit-dev.github.io/pointblank/)
|
|
16
|
+
|
|
17
|
+
[](https://github.com/posit-dev/pointblank/graphs/contributors)
|
|
18
|
+
[](https://discord.com/invite/YH7CybCNCQ)
|
|
19
|
+
[](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html)
|
|
20
|
+
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div align="right">
|
|
24
|
+
<a href="../README.md">English</a> |
|
|
25
|
+
<a href="README.fr.md">Français</a> |
|
|
26
|
+
<a href="README.it.md">Italiano</a> |
|
|
27
|
+
<a href="README.es.md">Español</a> |
|
|
28
|
+
<a href="README.pt-BR.md">Português</a> |
|
|
29
|
+
<a href="README.zh-CN.md">简体中文</a>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
## Was ist Pointblank?
|
|
33
|
+
|
|
34
|
+
Pointblank ist ein leistungsstarkes und zugleich elegantes Datenvalidierungsframework für Python, das die Art und Weise verändert, wie Sie Datenqualität sicherstellen. Mit seiner intuitiven, verkettbaren API können Sie Ihre Daten schnell gegen umfassende Qualitätsprüfungen validieren und die Ergebnisse durch beeindruckende, interaktive Berichte visualisieren, die Datenprobleme sofort handhabbar machen.
|
|
35
|
+
|
|
36
|
+
Ob Sie Data Scientist, Data Engineer oder Analyst sind - Pointblank hilft Ihnen dabei, Datenqualitätsprobleme zu erkennen, bevor sie Ihre Analysen oder nachgelagerte Systeme beeinträchtigen.
|
|
37
|
+
|
|
38
|
+
## In 30 Sekunden loslegen
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
import pointblank as pb
|
|
42
|
+
|
|
43
|
+
validation = (
|
|
44
|
+
pb.Validate(data=pb.load_dataset(dataset="small_table"))
|
|
45
|
+
.col_vals_gt(columns="d", value=100) # Validiere Werte > 100
|
|
46
|
+
.col_vals_le(columns="c", value=5) # Validiere Werte <= 5
|
|
47
|
+
.col_exists(columns=["date", "date_time"]) # Prüfe, ob Spalten existieren
|
|
48
|
+
.interrogate() # Ausführen und Ergebnisse sammeln
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
# Validierungsbericht im REPL mit:
|
|
52
|
+
validation.get_tabular_report().show()
|
|
53
|
+
|
|
54
|
+
# In einem Notebook einfach:
|
|
55
|
+
validation
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
<div align="center">
|
|
59
|
+
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-tabular-report.png" width="800px">
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<br>
|
|
63
|
+
|
|
64
|
+
## Warum Pointblank wählen?
|
|
65
|
+
|
|
66
|
+
- **Funktioniert mit Ihrem bestehenden Stack** - Nahtlose Integration mit Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake und mehr!
|
|
67
|
+
- **Schöne, interaktive Berichte** - Kristallklare Validierungsergebnisse, die Probleme hervorheben und die Kommunikation der Datenqualität unterstützen
|
|
68
|
+
- **Komponierbare Validierungs-Pipeline** - Verketten Sie Validierungsschritte zu einem vollständigen Datenqualitäts-Workflow
|
|
69
|
+
- **Schwellenwertbasierte Warnungen** - Setzen Sie 'Warnung', 'Fehler' und 'Kritisch'-Schwellenwerte mit benutzerdefinierten Aktionen
|
|
70
|
+
- **Praktische Ausgaben** - Nutzen Sie Validierungsergebnisse, um Tabellen zu filtern, problematische Daten zu extrahieren oder nachgelagerte Prozesse auszulösen
|
|
71
|
+
|
|
72
|
+
## Praxisbeispiel
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
import pointblank as pb
|
|
76
|
+
import polars as pl
|
|
77
|
+
|
|
78
|
+
# Laden Sie Ihre Daten
|
|
79
|
+
sales_data = pl.read_csv("sales_data.csv")
|
|
80
|
+
|
|
81
|
+
# Erstellen Sie eine umfassende Validierung
|
|
82
|
+
validation = (
|
|
83
|
+
pb.Validate(
|
|
84
|
+
data=sales_data,
|
|
85
|
+
tbl_name="sales_data", # Name der Tabelle für Berichte
|
|
86
|
+
label="Praxisbeispiel", # Label für die Validierung, erscheint in Berichten
|
|
87
|
+
thresholds=(0.01, 0.02, 0.05), # Schwellenwerte für Warnungen, Fehler und kritische Probleme festlegen
|
|
88
|
+
actions=pb.Actions( # Aktionen für Schwellenwertüberschreitungen definieren
|
|
89
|
+
critical="Schwerwiegendes Datenqualitätsproblem in Schritt {step} gefunden ({time})."
|
|
90
|
+
),
|
|
91
|
+
final_actions=pb.FinalActions( # Abschlussaktionen für die gesamte Validierung definieren
|
|
92
|
+
pb.send_slack_notification(
|
|
93
|
+
webhook_url="https://hooks.slack.com/services/your/webhook/url"
|
|
94
|
+
)
|
|
95
|
+
),
|
|
96
|
+
brief=True, # Automatisch generierte Kurzbeschreibungen für jeden Schritt hinzufügen
|
|
97
|
+
)
|
|
98
|
+
.col_vals_between( # Zahlenbereiche mit Präzision prüfen
|
|
99
|
+
columns=["price", "quantity"],
|
|
100
|
+
left=0, right=1000
|
|
101
|
+
)
|
|
102
|
+
.col_vals_not_null( # Sicherstellen, dass Spalten mit '_id' am Ende keine Null-Werte haben
|
|
103
|
+
columns=pb.ends_with("_id")
|
|
104
|
+
)
|
|
105
|
+
.col_vals_regex( # Muster mit Regex validieren
|
|
106
|
+
columns="email",
|
|
107
|
+
pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
|
|
108
|
+
)
|
|
109
|
+
.col_vals_in_set( # Kategorische Werte prüfen
|
|
110
|
+
columns="status",
|
|
111
|
+
set=["pending", "shipped", "delivered", "returned"]
|
|
112
|
+
)
|
|
113
|
+
.conjointly( # Mehrere Bedingungen kombinieren
|
|
114
|
+
lambda df: pb.expr_col("revenue") == pb.expr_col("price") * pb.expr_col("quantity"),
|
|
115
|
+
lambda df: pb.expr_col("tax") >= pb.expr_col("revenue") * 0.05
|
|
116
|
+
)
|
|
117
|
+
.interrogate()
|
|
118
|
+
)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Schwerwiegendes Datenqualitätsproblem in Schritt 7 gefunden (2025-04-16 15:03:04.685612+00:00).
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
# HTML-Bericht erhalten, den Sie mit Ihrem Team teilen können
|
|
127
|
+
validation.get_tabular_report().show("browser")
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
<div align="center">
|
|
131
|
+
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-sales-data.png" width="800px">
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
# Bericht über fehlgeschlagene Datensätze aus einem bestimmten Schritt abrufen
|
|
136
|
+
validation.get_step_report(i=3).show("browser") # Fehlgeschlagene Datensätze aus Schritt 3 abrufen
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
<div align="center">
|
|
140
|
+
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-step-report.png" width="800px">
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<br>
|
|
144
|
+
|
|
145
|
+
## Funktionen, die Pointblank auszeichnen
|
|
146
|
+
|
|
147
|
+
- **Vollständiger Validierungs-Workflow** - Von Datenzugriff über Validierung bis hin zur Berichterstattung in einer einzigen Pipeline
|
|
148
|
+
- **Für die Zusammenarbeit konzipiert** - Teilen Sie Ergebnisse mit Kollegen durch schöne interaktive Berichte
|
|
149
|
+
- **Praktische Ausgaben** - Erhalten Sie genau das, was Sie brauchen: Zählungen, Auszüge, Zusammenfassungen oder vollständige Berichte
|
|
150
|
+
- **Flexible Einsatzmöglichkeiten** - Verwenden Sie es in Notebooks, Skripten oder Datenpipelines
|
|
151
|
+
- **Anpassbar** - Passen Sie Validierungsschritte und Berichterstattung an Ihre spezifischen Anforderungen an
|
|
152
|
+
- **Internationalisierung** - Berichte können in über 20 Sprachen generiert werden, darunter Englisch, Spanisch, Französisch und Deutsch
|
|
153
|
+
|
|
154
|
+
## Dokumentation und Beispiele
|
|
155
|
+
|
|
156
|
+
Besuchen Sie unsere [Dokumentationswebsite](https://posit-dev.github.io/pointblank) für:
|
|
157
|
+
|
|
158
|
+
- [Das Benutzerhandbuch](https://posit-dev.github.io/pointblank/user-guide/)
|
|
159
|
+
- [API-Referenz](https://posit-dev.github.io/pointblank/reference/)
|
|
160
|
+
- [Beispielgalerie](https://posit-dev.github.io/pointblank/demos/)
|
|
161
|
+
- [Der Pointblog](https://posit-dev.github.io/pointblank/blog/)
|
|
162
|
+
|
|
163
|
+
## Werden Sie Teil der Community
|
|
164
|
+
|
|
165
|
+
Wir freuen uns, von Ihnen zu hören! Verbinden Sie sich mit uns:
|
|
166
|
+
|
|
167
|
+
- [GitHub Issues](https://github.com/posit-dev/pointblank/issues) für Fehlerberichte und Feature-Anfragen
|
|
168
|
+
- [_Discord-Server_](https://discord.com/invite/YH7CybCNCQ) für Diskussionen und Hilfe
|
|
169
|
+
- [Richtlinien für Mitwirkende](https://github.com/posit-dev/pointblank/blob/main/CONTRIBUTING.md), wenn Sie bei der Verbesserung von Pointblank helfen möchten
|
|
170
|
+
|
|
171
|
+
## Installation
|
|
172
|
+
|
|
173
|
+
Sie können Pointblank mit pip installieren:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
pip install pointblank
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Sie können Pointblank auch von Conda-Forge installieren:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
conda install conda-forge::pointblank
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Wenn Sie Polars oder Pandas nicht installiert haben, müssen Sie eines davon installieren, um Pointblank zu verwenden.
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
pip install "pointblank[pl]" # Pointblank mit Polars installieren
|
|
189
|
+
pip install "pointblank[pd]" # Pointblank mit Pandas installieren
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Um Pointblank mit DuckDB, MySQL, PostgreSQL oder SQLite zu verwenden, installieren Sie Ibis mit dem entsprechenden Backend:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
pip install "pointblank[duckdb]" # Pointblank mit Ibis + DuckDB installieren
|
|
196
|
+
pip install "pointblank[mysql]" # Pointblank mit Ibis + MySQL installieren
|
|
197
|
+
pip install "pointblank[postgres]" # Pointblank mit Ibis + PostgreSQL installieren
|
|
198
|
+
pip install "pointblank[sqlite]" # Pointblank mit Ibis + SQLite installieren
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Technische Details
|
|
202
|
+
|
|
203
|
+
Pointblank verwendet [Narwhals](https://github.com/narwhals-dev/narwhals) für die Arbeit mit Polars- und Pandas-DataFrames und integriert sich mit [Ibis](https://github.com/ibis-project/ibis) für Datenbank- und Dateiformatunterstützung. Diese Architektur bietet eine konsistente API zur Validierung von Tabellendaten aus verschiedenen Quellen.
|
|
204
|
+
|
|
205
|
+
## Beitrag zu Pointblank
|
|
206
|
+
|
|
207
|
+
Es gibt viele Möglichkeiten, zur kontinuierlichen Entwicklung von Pointblank beizutragen. Einige Beiträge können einfach sein (wie die Korrektur von Tippfehlern, die Verbesserung der Dokumentation, das Einreichen von Problemen für Feature-Anfragen oder Probleme usw.), während andere mehr Zeit und Sorgfalt erfordern können (wie das Beantworten von Fragen und das Einreichen von PRs mit Codeänderungen). Wissen Sie einfach, dass alles, was Sie zur Unterstützung beitragen können, sehr geschätzt wird!
|
|
208
|
+
|
|
209
|
+
Bitte lesen Sie die [Beitragsrichtlinien](https://github.com/posit-dev/pointblank/blob/main/CONTRIBUTING.md) für Informationen darüber, wie Sie beginnen können.
|
|
210
|
+
|
|
211
|
+
## Roadmap
|
|
212
|
+
|
|
213
|
+
Wir arbeiten aktiv daran, Pointblank mit folgenden Funktionen zu verbessern:
|
|
214
|
+
|
|
215
|
+
1. Zusätzliche Validierungsmethoden für umfassende Datenqualitätsprüfungen
|
|
216
|
+
2. Erweiterte Protokollierungsfunktionen
|
|
217
|
+
3. Benachrichtigungsaktionen (Slack, E-Mail) für Schwellenwertüberschreitungen
|
|
218
|
+
4. LLM-gestützte Validierungsvorschläge und Datenwörterbucherstellung
|
|
219
|
+
5. JSON/YAML-Konfiguration für Pipeline-Portabilität
|
|
220
|
+
6. CLI-Tool für Validierung über die Kommandozeile
|
|
221
|
+
7. Erweiterte Backend-Unterstützung und -Zertifizierung
|
|
222
|
+
8. Hochwertige Dokumentation und Beispiele
|
|
223
|
+
|
|
224
|
+
Wenn Sie Ideen für Funktionen oder Verbesserungen haben, zögern Sie nicht, diese mit uns zu teilen! Wir sind immer auf der Suche nach Möglichkeiten, Pointblank zu verbessern.
|
|
225
|
+
|
|
226
|
+
## Verhaltenskodex
|
|
227
|
+
|
|
228
|
+
Bitte beachten Sie, dass das Pointblank-Projekt mit einem [Verhaltenskodex für Mitwirkende](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) veröffentlicht wird. <br>Durch die Teilnahme an diesem Projekt erklären Sie sich mit dessen Bedingungen einverstanden.
|
|
229
|
+
|
|
230
|
+
## 📄 Lizenz
|
|
231
|
+
|
|
232
|
+
Pointblank ist unter der MIT-Lizenz lizenziert.
|
|
233
|
+
|
|
234
|
+
© Posit Software, PBC.
|
|
235
|
+
|
|
236
|
+
## 🏛️ Verwaltung
|
|
237
|
+
|
|
238
|
+
Dieses Projekt wird hauptsächlich von
|
|
239
|
+
[Rich Iannone](https://bsky.app/profile/richmeister.bsky.social) gepflegt. Andere Autoren können gelegentlich
|
|
240
|
+
bei einigen dieser Aufgaben unterstützen.
|