pointblank 0.12.2__tar.gz → 0.13.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pointblank-0.12.2 → pointblank-0.13.1}/.gitignore +1 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/CITATION.cff +1 -1
- {pointblank-0.12.2 → pointblank-0.13.1}/Makefile +9 -1
- {pointblank-0.12.2 → pointblank-0.13.1}/PKG-INFO +8 -1
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/_quarto.yml +3 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/installation.qmd +26 -0
- pointblank-0.13.1/docs/user-guide/mcp-quick-start.qmd +309 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/thresholds.qmd +14 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_interrogation.py +11 -17
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/validate.py +110 -139
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/yaml.py +0 -20
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank.egg-info/PKG-INFO +8 -1
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank.egg-info/SOURCES.txt +5 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank.egg-info/requires.txt +9 -0
- pointblank-0.13.1/pointblank_mcp_server/pointblank_server.py +2924 -0
- pointblank-0.13.1/pointblank_mcp_server/readme.md +218 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pyproject.toml +18 -1
- pointblank-0.13.1/tests/test__interrogation.py +540 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test__utils.py +248 -0
- pointblank-0.13.1/tests/test_mcp_integration.py +251 -0
- pointblank-0.13.1/tests/test_mcp_server.py +181 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_segments.py +10 -5
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_validate.py +499 -267
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_yaml.py +935 -21
- pointblank-0.12.2/tests/test__interrogation.py +0 -272
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/CODE_OF_CONDUCT.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/ISSUE_TEMPLATE/bug.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/SECURITY.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/workflows/ci-docs.yaml +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/workflows/ci-tests.yaml +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.github/workflows/code-checks.yaml +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.pre-commit-config.yaml +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/.vscode/settings.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/CONTRIBUTING.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/LICENSE +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/README.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/game_revenue.csv +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/global_sales.csv +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/global_sales_dataset.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/nycflights.csv +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/small_table.csv +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/worldcities.csv +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/x-01-parquet.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/x-02-duckdb.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/data_raw/x-03-sqlite.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/.gitignore +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/_extensions/machow/interlinks/.gitignore +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/_extensions/machow/interlinks/_extension.yml +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/_extensions/machow/interlinks/interlinks.lua +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/fav-logo.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-info-worldcities-csv.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-info-worldcities-github-csv.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-make-template.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-missing-worldcities-csv.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-preview-game_revenue-all-columns.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-preview-game_revenue-column-names.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-preview-game_revenue-column-range.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-preview-worldcities-csv-no-row-numbers.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-preview-worldcities-csv.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-run-worldcities_validation-extracts.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-run-worldcities_validation-fail-on-warning.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-run-worldcities_validation-output.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-run-worldcities_validation.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-scan-worldcities-csv.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-exit-code.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-multi-check.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-rows-complete-worldcities-csv.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-rows-distinct-worldcities-csv.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-show-extract.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-worldcities-gt-0-population.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-worldcities-not-null-city_name.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pb-validate-write-extract.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.de.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.es.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.fr.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.it.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.ja.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.ko.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.nl.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.pt-BR.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-sales-data.zh-CN.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-step-report.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank-tabular-report.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/pointblank_logo.svg +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/posit-logo-black.svg +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/validation-table-diagram.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/validation-test-units.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/.gitignore +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-cicd-workflows.gif +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-cicd-workflows.tape +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-complete-workflow.gif +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-complete-workflow.tape +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-data-exploration.gif +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-data-exploration.tape +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-essential-validations.gif +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-essential-validations.tape +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-getting-started.gif +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-getting-started.tape +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-using-polars.gif +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/cli-using-polars.tape +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/assets/vhs/validation.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/all-about-actions/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/intro-pointblank/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/intro-pointblank/pointblank-localized.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/intro-pointblank/step_report.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/intro-pointblank/validation-table-diagram.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/intro-pointblank/validation-test-units.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/lets-workshop-together/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/advanced-in-sidebar.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/breadth-and-depth.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/explanation-of-visual.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/links-in-guide.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/segments.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/step-report.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/overhauled-user-guide/validation-three-things.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/pointblank_blog_logo.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/blog/validation-libs-2025/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/01-starter/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/02-advanced/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/03-data-extracts/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/04-sundered-data/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/05-step-report-column-check/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/06-step-report-schema-check/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/07-validation-with-actions/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/08-validation-with-final-actions/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/apply-checks-to-several-columns/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/check-for-freshness/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/check-row-column-counts/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/checks-for-missing/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/cli-interactive/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/col-vals-custom-expr/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/column-selector-functions/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/comparisons-across-columns/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/custom-validation-specially/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/data/game_revenue.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/expect-no-duplicate-rows/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/expect-no-duplicate-values/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/expect-text-pattern/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/failure-thresholds/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/advanced_validation.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/data_extracts.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/starter_validation.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/step_report_column_schema.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/step_report_column_values.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/sundered_data.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/validation_with_actions.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/img/validation_with_final_actions.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/mutate-table-in-step/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/numeric-comparisons/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/schema-check/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/set-membership/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/demos/using-parquet-data/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/scripts/post-render.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/styles.css +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/actions.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/assertions.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/briefs.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/cli-data-inspection.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/cli-data-validation.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/cli-reference.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/col-summary-tbl.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/column-selection-patterns.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/draft-validation.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/expressions.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/extracts.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/index.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/langs.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/missing-vals-tbl.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/preprocessing.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/preview.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/schema-validation.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/segmentation.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/step-reports.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/sundering.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/validation-methods.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/validation-overview.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/yaml-reference.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/docs/user-guide/yaml-validation-workflows.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/images/pointblank-tabular-report.png +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/images/pointblank_logo.svg +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/__init__.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_constants.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_constants_docs.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_constants_translations.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_datascan_utils.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_typing.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_utils.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_utils_check_args.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/_utils_html.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/actions.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/assistant.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/cli.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/column.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/compare.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/api-docs.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/game_revenue-duckdb.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/game_revenue.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/global_sales-duckdb.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/global_sales.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/nycflights-duckdb.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/nycflights.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/polars-api-docs.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/small_table-duckdb.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/data/small_table.zip +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/datascan.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/draft.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/scan_profile.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/scan_profile_stats.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/schema.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/segments.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/tf.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank/thresholds.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank.egg-info/dependency_links.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank.egg-info/entry_points.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/pointblank.egg-info/top_level.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/setup.cfg +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/__init__.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/manual_tests/schema_step_reports.qmd +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_datascan/test_col_summary_tbl_duckdb_snap/col_summary_html_duckdb.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_datascan/test_col_summary_tbl_pandas_snap/col_summary_html_pandas.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_datascan/test_col_summary_tbl_polars_snap/col_summary_html_polars.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_comprehensive_validation_report_html_snap/comprehensive_validation_report.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_01/schema_step_report_01-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_01_1/schema_step_report_01-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_01_2/schema_step_report_01-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_01_3/schema_step_report_01-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_02/schema_step_report_02-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_02_1/schema_step_report_02-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_02_2/schema_step_report_02-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_02_3/schema_step_report_02-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_03/schema_step_report_03-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_03_1/schema_step_report_03-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_03_2/schema_step_report_03-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_03_3/schema_step_report_03-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_04/schema_step_report_04-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_05/schema_step_report_05-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_06/schema_step_report_06-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_07/schema_step_report_07-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_08/schema_step_report_08-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_09/schema_step_report_09-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_10/schema_step_report_10-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_11/schema_step_report_11-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_12/schema_step_report_12-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_13/schema_step_report_13-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_14/schema_step_report_14-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_14_1/schema_step_report_14-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_15/schema_step_report_15-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_15_1/schema_step_report_15-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_16/schema_step_report_16-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_16_1/schema_step_report_16-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_17/schema_step_report_17-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_17_1/schema_step_report_17-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_18/schema_step_report_18-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_18_1/schema_step_report_18-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_19/schema_step_report_19-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_19_1/schema_step_report_19-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_20/schema_step_report_20-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_20_1/schema_step_report_20-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_21/schema_step_report_21-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_21_1/schema_step_report_21-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_21_2/schema_step_report_21-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_21_3/schema_step_report_21-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_22/schema_step_report_22-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_22_1/schema_step_report_22-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_23/schema_step_report_23-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_23_1/schema_step_report_23-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_24/schema_step_report_24-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_24_1/schema_step_report_24-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_24_2/schema_step_report_24-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_24_3/schema_step_report_24-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_25/schema_step_report_25-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_1/schema_step_report_25-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_2/schema_step_report_25-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_3/schema_step_report_25-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_4/schema_step_report_25-4.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_step_report_25_5/schema_step_report_25-5.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_01-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_02-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_03-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_04-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_05-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_06-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_07-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_08-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_09-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_10-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_11-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_12-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_13-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_14-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_15-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_16-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_17-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_18-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_19-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_20-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_21-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_22-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_23-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_24-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-0.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-1.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-2.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-3.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-4.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_get_schema_validation_info/schema_info_25-5.txt +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_no_interrogation_validation_report_html_snap/no_interrogation_validation_report.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_no_steps_validation_report_html_snap/no_steps_validation_report.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_briefs_global_local_html/validation_report_briefs_global_local.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_briefs_html/validation_report_with_briefs.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_pyspark/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_pyspark/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_no_interrogate_snap/tbl_sqlite/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_segments_html/duckdb/validation_report_segments.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_segments_html/pandas/validation_report_segments.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_segments_html/polars/validation_report_segments.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/polars/validation_report_segments_with_pre.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_segments_with_pre_html/validation_report_segments_with_pre.html +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_duckdb/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_parquet/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pd/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pl/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_pyspark/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/snapshots/test_validate/test_validation_report_use_fields_snap/tbl_sqlite/validation_report.json +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/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.12.2 → pointblank-0.13.1}/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.12.2 → pointblank-0.13.1}/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.12.2 → pointblank-0.13.1}/tests/tbl_files/parquet_data/data_a.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/parquet_data/data_b.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/parquet_data/subdir/nested_data.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_sales/status=cancelled/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_sales/status=delivered/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_sales/status=pending/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_sales/status=returned/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_sales/status=shipped/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_small_table/f=high/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_small_table/f=low/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/partitioned_small_table/f=mid/0.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/taxi_part_01.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/taxi_part_02.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/taxi_part_03.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/taxi_sample.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_dates_times_text.ddb +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_dates_times_text.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_dates_times_text.sqlite +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_true_dates_times.ddb +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_xyz.ddb +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_xyz.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_xyz.sqlite +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_xyz_missing.ddb +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_xyz_missing.parquet +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/tbl_files/tbl_xyz_missing.sqlite +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test__utils_check_args.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_actions.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_assistant.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_cli.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_column.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_compare.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_datascan.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_draft.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_meta.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_schema.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_tf.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/tests/test_thresholds.py +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.ar.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.de.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.es.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.fr.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.hi.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.it.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.ja.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.ko.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.nl.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.pt-BR.md +0 -0
- {pointblank-0.12.2 → pointblank-0.13.1}/translations/README.zh-CN.md +0 -0
|
@@ -3,7 +3,7 @@ message: 'If you wish to cite the "Pointblank" package use:'
|
|
|
3
3
|
type: software
|
|
4
4
|
license: MIT
|
|
5
5
|
title: "Pointblank: Find out if your data is what you think it is"
|
|
6
|
-
version: 0.
|
|
6
|
+
version: 0.12.2
|
|
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.
|
|
@@ -13,11 +13,19 @@ test:
|
|
|
13
13
|
test-update:
|
|
14
14
|
pytest --snapshot-update
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
.PHONY: lint
|
|
17
17
|
lint: ## Run ruff formatter and linter
|
|
18
18
|
@uv run ruff format
|
|
19
19
|
@uv run ruff check --fix
|
|
20
20
|
|
|
21
|
+
.PHONY: install-pre-commit
|
|
22
|
+
install-pre-commit: # Install pre-commit hooks
|
|
23
|
+
@uvx pre-commit install
|
|
24
|
+
|
|
25
|
+
.PHONY: run-pre-commit
|
|
26
|
+
run-pre-commit: # Run pre-commit hooks
|
|
27
|
+
@uvx pre-commit run --all-files
|
|
28
|
+
|
|
21
29
|
check:
|
|
22
30
|
pyright --pythonversion 3.8 pointblank
|
|
23
31
|
pyright --pythonversion 3.9 pointblank
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pointblank
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.1
|
|
4
4
|
Summary: Find out if your data is what you think it is.
|
|
5
5
|
Author-email: Richard Iannone <riannone@me.com>
|
|
6
6
|
License: MIT License
|
|
@@ -60,6 +60,12 @@ Requires-Dist: chatlas>=0.3.0; extra == "generate"
|
|
|
60
60
|
Requires-Dist: anthropic[bedrock]>=0.45.2; extra == "generate"
|
|
61
61
|
Requires-Dist: openai>=1.63.0; extra == "generate"
|
|
62
62
|
Requires-Dist: shiny>=1.3.0; extra == "generate"
|
|
63
|
+
Provides-Extra: mcp
|
|
64
|
+
Requires-Dist: mcp[cli]>=1.10.1; extra == "mcp"
|
|
65
|
+
Requires-Dist: fastmcp>=2.11.3; extra == "mcp"
|
|
66
|
+
Requires-Dist: pytest-asyncio>=1.0.0; extra == "mcp"
|
|
67
|
+
Provides-Extra: excel
|
|
68
|
+
Requires-Dist: openpyxl>=3.0.0; extra == "excel"
|
|
63
69
|
Provides-Extra: bigquery
|
|
64
70
|
Requires-Dist: ibis-framework[bigquery]>=9.5.0; extra == "bigquery"
|
|
65
71
|
Provides-Extra: databricks
|
|
@@ -84,6 +90,7 @@ Requires-Dist: quartodoc>=0.8.1; python_version >= "3.9" and extra == "docs"
|
|
|
84
90
|
Requires-Dist: pandas>=2.2.3; extra == "docs"
|
|
85
91
|
Requires-Dist: polars>=1.17.1; extra == "docs"
|
|
86
92
|
Requires-Dist: pyspark==3.5.6; extra == "docs"
|
|
93
|
+
Requires-Dist: openpyxl>=3.0.0; extra == "docs"
|
|
87
94
|
Dynamic: license-file
|
|
88
95
|
|
|
89
96
|
<div align="center">
|
|
@@ -98,6 +98,9 @@ website:
|
|
|
98
98
|
- user-guide/cli-data-inspection.qmd
|
|
99
99
|
- user-guide/cli-data-validation.qmd
|
|
100
100
|
- user-guide/cli-reference.qmd
|
|
101
|
+
- section: "MCP Server"
|
|
102
|
+
contents:
|
|
103
|
+
- user-guide/mcp-quick-start.qmd
|
|
101
104
|
|
|
102
105
|
page-footer:
|
|
103
106
|
left: 'Proudly supported by <a href="https://www.posit.co/" class="no-icon"><img src="/assets/posit-logo-black.svg" alt="Posit" width="80" style="padding-left: 3px;vertical-align:text-top;"></a>'
|
|
@@ -32,6 +32,15 @@ uv pip install pointblank
|
|
|
32
32
|
```bash
|
|
33
33
|
conda install -c conda-forge pointblank
|
|
34
34
|
```
|
|
35
|
+
|
|
36
|
+
## pixi
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# add pointblank to project
|
|
40
|
+
pixi init name-of-project
|
|
41
|
+
cd name-of-project
|
|
42
|
+
pixi add pointblank
|
|
43
|
+
```
|
|
35
44
|
:::
|
|
36
45
|
|
|
37
46
|
## DataFrame Libraries
|
|
@@ -122,6 +131,23 @@ conda install -c conda-forge pointblank-snowflake # Snowflake
|
|
|
122
131
|
# Example of installing multiple backends
|
|
123
132
|
conda install -c conda-forge pointblank-duckdb pointblank-postgres pointblank-sqlite
|
|
124
133
|
```
|
|
134
|
+
|
|
135
|
+
## pixi
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
pixi add pointblank-sqlite # SQLite
|
|
139
|
+
pixi add pointblank-duckdb # DuckDB
|
|
140
|
+
pixi add pointblank-postgres # PostgreSQL
|
|
141
|
+
pixi add pointblank-mysql # MySQL
|
|
142
|
+
pixi add pointblank-mssql # Microsoft SQL Server
|
|
143
|
+
pixi add pointblank-bigquery # BigQuery
|
|
144
|
+
pixi add pointblank-pyspark # Apache Spark
|
|
145
|
+
pixi add pointblank-databricks # Databricks
|
|
146
|
+
pixi add pointblank-snowflake # Snowflake
|
|
147
|
+
|
|
148
|
+
# Example of installing multiple backends
|
|
149
|
+
pixi add pointblank-duckdb pointblank-postgres pointblank-sqlite
|
|
150
|
+
```
|
|
125
151
|
:::
|
|
126
152
|
|
|
127
153
|
::: {.callout-note}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "MCP Quick Start"
|
|
3
|
+
jupyter: python3
|
|
4
|
+
toc-expand: 2
|
|
5
|
+
html-table-processing: none
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Getting Started in 5 Minutes
|
|
9
|
+
|
|
10
|
+
Transform your data validation workflow with conversational AI in VS Code or Positron IDE. Here are three simple steps to start validating data through conversation (and no complex configuration required).
|
|
11
|
+
|
|
12
|
+
### 1. Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install pointblank[mcp]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### 2. Configure Your IDE
|
|
19
|
+
|
|
20
|
+
**For VS Code**:
|
|
21
|
+
|
|
22
|
+
**Option 1: Workspace Configuration (Recommended for teams)**
|
|
23
|
+
|
|
24
|
+
1. Create a `.vscode/mcp.json` file in your project folder
|
|
25
|
+
2. Add this configuration:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"servers": {
|
|
30
|
+
"pointblank": {
|
|
31
|
+
"command": "python",
|
|
32
|
+
"args": ["-m", "pointblank_mcp_server.pointblank_server"]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Option 2: User Configuration (Personal use)**
|
|
39
|
+
|
|
40
|
+
1. Run command: `MCP: Open User Configuration` (Cmd/Ctrl + Shift + P)
|
|
41
|
+
2. Add the same JSON configuration above
|
|
42
|
+
|
|
43
|
+
> ⚠️ **Security Note**: Only add MCP servers from trusted sources. VS Code will ask you to confirm trust when starting the server for the first time.
|
|
44
|
+
|
|
45
|
+
**For Positron**:
|
|
46
|
+
|
|
47
|
+
1. Open Positron Settings
|
|
48
|
+
2. Navigate to MCP Server configuration
|
|
49
|
+
3. Add the configuration (format may vary)
|
|
50
|
+
|
|
51
|
+
> **Note**: If you don't see MCP settings, you may need to install an MCP extension first. Search for "MCP" in the Extensions marketplace.
|
|
52
|
+
|
|
53
|
+
### 3. Start Chatting
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
"Load my sales data and check its quality"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
That's basically how you get started.
|
|
60
|
+
|
|
61
|
+
## Essential Commands
|
|
62
|
+
|
|
63
|
+
Master these five command patterns and you'll be able to handle most data validation scenarios. Think of these as your fundamental vocabulary for talking to Pointblank.
|
|
64
|
+
|
|
65
|
+
### Load Data
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
"Load the file /path/to/data.csv"
|
|
69
|
+
"Load my Netflix dataset from the working directory"
|
|
70
|
+
"Load the CSV file with sales metrics"
|
|
71
|
+
"Load customer_data.csv as my main dataset"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Explore Data
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
"Analyze the data for netflix_data"
|
|
78
|
+
"Show me a preview of the loaded data"
|
|
79
|
+
"Create a column summary table"
|
|
80
|
+
"Generate a missing values analysis"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**What you'll get**: Comprehensive data profiling with statistics including missing values, data types, distributions, and summary statistics for each column. The preview and summary tables are automatically generated as beautiful HTML files that open in your browser. This gives you a complete picture of your dataset's structure and characteristics before you define quality rules.
|
|
84
|
+
|
|
85
|
+
### Check Quality
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
"Create a validator for netflix_data"
|
|
89
|
+
"Add validation that ratings are between 0 and 10"
|
|
90
|
+
"Check that all release years are reasonable"
|
|
91
|
+
"Apply the basic_quality template"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**What you'll get**: Actual data quality validation that checks your data against business rules and domain knowledge. This tells you if your data meets your specific quality requirements and identifies rows that fail validation criteria.
|
|
95
|
+
|
|
96
|
+
### Create Data Validations
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
"Add validation that show_id values are unique"
|
|
100
|
+
"Check that cast field is not empty for movies"
|
|
101
|
+
"Ensure vote_count is greater than 0"
|
|
102
|
+
"Validate that country field follows ISO format"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**What you'll get**: Individual validation rules added to your validator. Each rule tests a specific business requirement and can be customized with thresholds and actions.
|
|
106
|
+
|
|
107
|
+
### Run and Export
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
"Run the validation and show results"
|
|
111
|
+
"Export validation failures to CSV"
|
|
112
|
+
"Get failed rows for step 2"
|
|
113
|
+
"Save the validation report"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Top Three Use Cases
|
|
119
|
+
|
|
120
|
+
Once you have Pointblank set up, these scenarios show the most common and powerful ways to use natural language data validation. Each example demonstrates the conversational flow and immediate value you'll experience.
|
|
121
|
+
|
|
122
|
+
### 1. 📊 Quick Data Check
|
|
123
|
+
|
|
124
|
+
**When**: You get a new dataset
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
👤 "I just got netflix_data.csv. Is it clean?"
|
|
128
|
+
🤖 "Loading dataset... Found 16,000 movies/shows with 18 columns.
|
|
129
|
+
Quality analysis complete:
|
|
130
|
+
- ✅ No duplicate show IDs
|
|
131
|
+
- ⚠️ 466 missing countries (2.9%)
|
|
132
|
+
- ⚠️ 132 missing directors (0.8%)
|
|
133
|
+
Opening data preview in your browser..."
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 2. 🔄 Daily Validation
|
|
137
|
+
|
|
138
|
+
**When**: Regular data quality checks
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
👤 "Apply the basic_quality template to my data"
|
|
142
|
+
🤖 "Creating validator with basic quality checks...
|
|
143
|
+
✅ Data types validated
|
|
144
|
+
✅ Missing value thresholds checked
|
|
145
|
+
✅ Duplicate detection passed
|
|
146
|
+
Validation complete! All checks passed."
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 3. 🚨 Issue Investigation
|
|
150
|
+
|
|
151
|
+
**When**: Something looks wrong
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
👤 "Show me movies with ratings above 9.5"
|
|
155
|
+
🤖 "Creating validator for high ratings...
|
|
156
|
+
Found 47 entries with ratings > 9.5
|
|
157
|
+
Exporting suspicious rows to CSV
|
|
158
|
+
Most are documentaries - could be valid!"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
These examples show how natural conversation can quickly identify and resolve data quality issues that might take hours to diagnose manually.
|
|
162
|
+
|
|
163
|
+
## Core Capabilities
|
|
164
|
+
|
|
165
|
+
Pointblank's MCP server provides powerful tools for comprehensive data validation with beautiful, interactive HTML reports:
|
|
166
|
+
|
|
167
|
+
### Data Exploration
|
|
168
|
+
|
|
169
|
+
- **Interactive HTML previews** with automatic browser opening showing head/tail rows
|
|
170
|
+
- **Column summary tables** with detailed statistics and color-coded data types
|
|
171
|
+
- **Missing values analysis** with visual patterns and percentages
|
|
172
|
+
- **Data quality analysis** with comprehensive profiling insights
|
|
173
|
+
|
|
174
|
+
### Validation Workflows
|
|
175
|
+
|
|
176
|
+
- **Validator creation** with flexible thresholds and configuration
|
|
177
|
+
- **Many validation types** for comprehensive data quality checking
|
|
178
|
+
- **Step-by-step validation** building with natural language commands
|
|
179
|
+
- **Template-based validation** for common data quality patterns
|
|
180
|
+
|
|
181
|
+
### HTML Reports & Analysis
|
|
182
|
+
|
|
183
|
+
- **Interactive validation reports** automatically opened in your browser
|
|
184
|
+
- **Timestamped HTML files** for easy sharing and documentation
|
|
185
|
+
- **Python code generation** for reproducible validation scripts
|
|
186
|
+
|
|
187
|
+
All interactions use natural language, making advanced data validation accessible to users at any technical level while producing publication-ready HTML reports.
|
|
188
|
+
|
|
189
|
+
## Common Validation Rules
|
|
190
|
+
|
|
191
|
+
Understanding what validation rules to ask for will help you quickly build comprehensive data quality checks. These examples cover the most frequent validation scenarios using Pointblank's built-in validation functions.
|
|
192
|
+
|
|
193
|
+
### Data Integrity
|
|
194
|
+
|
|
195
|
+
- "Check for duplicate show IDs"
|
|
196
|
+
- "Ensure no missing required fields like title"
|
|
197
|
+
- "Validate that release years are between 1900 and 2025"
|
|
198
|
+
|
|
199
|
+
### Business Logic
|
|
200
|
+
|
|
201
|
+
- "Ratings must be between 0 and 10"
|
|
202
|
+
- "Budget must be positive numbers"
|
|
203
|
+
- "Duration should be greater than 0"
|
|
204
|
+
|
|
205
|
+
### Cross-Field Validation
|
|
206
|
+
|
|
207
|
+
- "Release year should match date_added year"
|
|
208
|
+
- "Vote count should correlate with popularity"
|
|
209
|
+
- "Movies should have directors specified"
|
|
210
|
+
|
|
211
|
+
### Available Templates
|
|
212
|
+
|
|
213
|
+
Pointblank includes pre-built validation templates:
|
|
214
|
+
|
|
215
|
+
- `basic_quality` - Essential data quality checks
|
|
216
|
+
- `financial_data` - Money and numeric validations
|
|
217
|
+
- `customer_data` - Personal information validations
|
|
218
|
+
- `sensor_data` - Time series and measurement checks
|
|
219
|
+
- `survey_data` - Response and rating validations
|
|
220
|
+
|
|
221
|
+
These rule patterns can be combined and customized for your specific data and business requirements. The natural language interface makes it easy to express complex validation logic without learning technical syntax.
|
|
222
|
+
|
|
223
|
+
## Some Tips and Tricks
|
|
224
|
+
|
|
225
|
+
These recommendations will help you get more value from your Pointblank MCP server and avoid some common pitfalls.
|
|
226
|
+
|
|
227
|
+
### Talk Naturally
|
|
228
|
+
|
|
229
|
+
✅ **Good:** "Check if customer emails look valid"
|
|
230
|
+
|
|
231
|
+
❌ **Avoid:** "Execute col_vals_regex on email column"
|
|
232
|
+
|
|
233
|
+
### Provide Context
|
|
234
|
+
|
|
235
|
+
✅ **Good:** "This is for the board presentation"
|
|
236
|
+
|
|
237
|
+
❌ **Avoid:** Just asking for validation without explanation
|
|
238
|
+
|
|
239
|
+
### Build Incrementally
|
|
240
|
+
|
|
241
|
+
1. Start with data profiling
|
|
242
|
+
2. Add basic validation rules
|
|
243
|
+
3. Create templates for reuse
|
|
244
|
+
4. Set up automated checks
|
|
245
|
+
|
|
246
|
+
### Save Templates
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
"Save these rules as 'customer_validation'"
|
|
250
|
+
"Apply the financial_data template"
|
|
251
|
+
"Use our standard survey validation"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Interactive Visual Tables
|
|
255
|
+
|
|
256
|
+
Pointblank automatically generates beautiful, interactive HTML tables for data exploration:
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
"Show me a preview of the data"
|
|
260
|
+
"Generate a column summary table"
|
|
261
|
+
"Create a missing values analysis"
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
These commands create professional HTML tables with:
|
|
265
|
+
|
|
266
|
+
- **Color-coded data types** (numeric in purple, text in yellow)
|
|
267
|
+
- **Gradient styling** tailored to each table type
|
|
268
|
+
- **Automatic browser opening** for immediate viewing
|
|
269
|
+
- **Timestamped files** for easy reference and sharing
|
|
270
|
+
|
|
271
|
+
The tables open automatically in your default browser, making it easy to share data insights with colleagues or include in presentations.
|
|
272
|
+
|
|
273
|
+
These practices help you build data quality workflows that scale with your needs while remaining accessible to those with varying technical backgrounds.
|
|
274
|
+
|
|
275
|
+
## File Support
|
|
276
|
+
|
|
277
|
+
Pointblank works with many major data file formats, making it easy to validate data regardless of how it's stored. This support means you can maintain consistent validation practices across your entire data ecosystem.
|
|
278
|
+
|
|
279
|
+
| Type | Extensions | Example | Backend Support |
|
|
280
|
+
|------|------------|---------|-----------------|
|
|
281
|
+
| **CSV** | `.csv` | `sales_data.csv` | pandas, polars |
|
|
282
|
+
| **Parquet** | `.parquet` | `big_data.parquet` | pandas, polars |
|
|
283
|
+
| **JSON** | `.json` | `api_response.json` | pandas, polars |
|
|
284
|
+
| **JSON Lines** | `.jsonl` | `streaming_data.jsonl` | pandas, polars |
|
|
285
|
+
|
|
286
|
+
The consistent natural language interface works the same regardless of file format, so you can focus on validation logic rather than technical details. Polars provides faster processing for large datasets, while Pandas offers broader format support.
|
|
287
|
+
|
|
288
|
+
## Quick Troubleshooting
|
|
289
|
+
|
|
290
|
+
When you encounter issues, these quick fixes resolve the most common problems. Furthermore, the natural language interface means you can always ask for help and explanations.
|
|
291
|
+
|
|
292
|
+
| Problem | Quick Fix |
|
|
293
|
+
|---------|-----------|
|
|
294
|
+
| "File not found" | Use absolute path: `/Users/name/Downloads/data.csv` |
|
|
295
|
+
| "DataFrame not found" | Check loaded datasets with "List my loaded dataframes" |
|
|
296
|
+
| "Validator not found" | Use "List active validators" to see available validators |
|
|
297
|
+
| "Validation too slow" | Try "Use pandas backend" or sample your data first |
|
|
298
|
+
| "HTML tables won't open" | Check your default browser settings |
|
|
299
|
+
| "Need validation ideas" | Ask "Show me validation templates" or "Suggest validations for my data" |
|
|
300
|
+
|
|
301
|
+
**Browser Issues**: The HTML tables automatically open in your default browser. If they don't appear, check that your browser isn't blocking pop-ups and that you have a default browser set in your system preferences.
|
|
302
|
+
|
|
303
|
+
Remember, you can always ask the AI to explain what's happening or suggest solutions when you run into problems.
|
|
304
|
+
|
|
305
|
+
## Now You're Ready!
|
|
306
|
+
|
|
307
|
+
You now have everything needed to start validating data through conversation. The beauty of Pointblank's MCP server is that it grows with your expertise: start simple and gradually build more sophisticated validation workflows as you become comfortable with the interface.
|
|
308
|
+
|
|
309
|
+
Start with simple commands and build up to more complex validation workflows. The AI will guide you through the process and help you create robust data quality checks!
|
|
@@ -86,6 +86,20 @@ thresholds_proportional = pb.Thresholds(error=0.1)
|
|
|
86
86
|
With this configuration, the 'error' threshold would be triggered if 10% or more of the test units
|
|
87
87
|
fail.
|
|
88
88
|
|
|
89
|
+
### Boolean Shorthand
|
|
90
|
+
|
|
91
|
+
For cases where you want to allow exactly 1 failing test unit, you can use `True` as a convenient
|
|
92
|
+
shorthand:
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
# Critical threshold of exactly 1 failing test unit
|
|
96
|
+
thresholds_boolean = pb.Thresholds(critical=True)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This is equivalent to setting `critical=1` but provides a more intuitive way to express "allow at
|
|
100
|
+
most one failure". This shorthand is particularly useful for strict validations where any failure
|
|
101
|
+
beyond a single edge case should trigger immediate attention.
|
|
102
|
+
|
|
89
103
|
## Understanding Severity Levels
|
|
90
104
|
|
|
91
105
|
The three threshold levels in Pointblank ('warning', 'error', and 'critical') are inspired by
|
|
@@ -1388,6 +1388,17 @@ class RowsDistinct:
|
|
|
1388
1388
|
def get_test_results(self):
|
|
1389
1389
|
return self.test_unit_res
|
|
1390
1390
|
|
|
1391
|
+
def test(self):
|
|
1392
|
+
# Get the number of failing test units by counting instances of `False` in the `pb_is_good_`
|
|
1393
|
+
# column and then determine if the test passes overall by comparing the number of failing
|
|
1394
|
+
# test units to the threshold for failing test units
|
|
1395
|
+
|
|
1396
|
+
results_list = nw.from_native(self.test_unit_res)["pb_is_good_"].to_list()
|
|
1397
|
+
|
|
1398
|
+
return _threshold_check(
|
|
1399
|
+
failing_test_units=results_list.count(False), threshold=self.threshold
|
|
1400
|
+
)
|
|
1401
|
+
|
|
1391
1402
|
|
|
1392
1403
|
@dataclass
|
|
1393
1404
|
class RowsComplete:
|
|
@@ -2029,23 +2040,6 @@ def _column_has_null_values(table: FrameT, column: str) -> bool:
|
|
|
2029
2040
|
return True
|
|
2030
2041
|
|
|
2031
2042
|
|
|
2032
|
-
def _check_nulls_across_columns_ibis(table, columns_subset):
|
|
2033
|
-
# Get all column names from the table
|
|
2034
|
-
column_names = columns_subset if columns_subset else table.columns
|
|
2035
|
-
|
|
2036
|
-
# Build the expression by combining each column's isnull() with OR operations
|
|
2037
|
-
null_expr = functools.reduce(
|
|
2038
|
-
lambda acc, col: acc | table[col].isnull() if acc is not None else table[col].isnull(),
|
|
2039
|
-
column_names,
|
|
2040
|
-
None,
|
|
2041
|
-
)
|
|
2042
|
-
|
|
2043
|
-
# Add the expression as a new column to the table
|
|
2044
|
-
result = table.mutate(_any_is_null_=null_expr)
|
|
2045
|
-
|
|
2046
|
-
return result
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
2043
|
def _check_nulls_across_columns_nw(table, columns_subset):
|
|
2050
2044
|
# Get all column names from the table
|
|
2051
2045
|
column_names = columns_subset if columns_subset else table.columns
|