pointblank


Namepointblank JSON
Version 0.11.2 PyPI version JSON
download
home_pageNone
SummaryFind out if your data is what you think it is.
upload_time2025-07-08 16:04:21
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT License Copyright (c) 2024-2025 Posit Software, PBC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords data quality validation testing data science data engineering
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">

<a href="https://posit-dev.github.io/pointblank/"><img src="https://posit-dev.github.io/pointblank/assets/pointblank_logo.svg" width="85%"/></a>

_Data validation made beautiful and powerful_

[![Python Versions](https://img.shields.io/pypi/pyversions/pointblank.svg)](https://pypi.python.org/pypi/pointblank)
[![PyPI](https://img.shields.io/pypi/v/pointblank)](https://pypi.org/project/pointblank/#history)
[![PyPI Downloads](https://img.shields.io/pypi/dm/pointblank)](https://pypistats.org/packages/pointblank)
[![Conda Version](https://img.shields.io/conda/vn/conda-forge/pointblank.svg)](https://anaconda.org/conda-forge/pointblank)
[![License](https://img.shields.io/github/license/posit-dev/pointblank)](https://img.shields.io/github/license/posit-dev/pointblank)

[![CI Build](https://github.com/posit-dev/pointblank/actions/workflows/ci-tests.yaml/badge.svg)](https://github.com/posit-dev/pointblank/actions/workflows/ci-tests.yaml)
[![Codecov branch](https://img.shields.io/codecov/c/github/posit-dev/pointblank/main.svg)](https://codecov.io/gh/posit-dev/pointblank)
[![Repo Status](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
[![Documentation](https://img.shields.io/badge/docs-project_website-blue.svg)](https://posit-dev.github.io/pointblank/)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/posit-dev/pointblank)

[![Contributors](https://img.shields.io/github/contributors/posit-dev/pointblank)](https://github.com/posit-dev/pointblank/graphs/contributors)
[![Discord](https://img.shields.io/discord/1345877328982446110?color=%237289da&label=Discord)](https://discord.com/invite/YH7CybCNCQ)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.1%20adopted-ff69b4.svg)](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html)

</div>

<div align="center">
   <a href="translations/README.fr.md">Français</a> |
   <a href="translations/README.de.md">Deutsch</a> |
   <a href="translations/README.it.md">Italiano</a> |
   <a href="translations/README.es.md">Español</a> |
   <a href="translations/README.pt-BR.md">Português</a> |
   <a href="translations/README.nl.md">Nederlands</a> |
   <a href="translations/README.zh-CN.md">简体中文</a> |
   <a href="translations/README.ja.md">日本語</a> |
   <a href="translations/README.ko.md">한국어</a> |
   <a href="translations/README.hi.md">हिन्दी</a> |
   <a href="translations/README.ar.md">العربية</a>
</div>

## What is Pointblank?

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.

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.

## Getting Started in 30 Seconds

```python
import pointblank as pb

validation = (
   pb.Validate(data=pb.load_dataset(dataset="small_table"))
   .col_vals_gt(columns="d", value=100)             # Validate values > 100
   .col_vals_le(columns="c", value=5)               # Validate values <= 5
   .col_exists(columns=["date", "date_time"])       # Check columns exist
   .interrogate()                                   # Execute and collect results
)

# Get the validation report from the REPL with:
validation.get_tabular_report().show()

# From a notebook simply use:
validation
```

<div align="center">
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-tabular-report.png" width="800px">
</div>

<br>

## Why Choose Pointblank?

- **Works with your existing stack**: Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, and more!
- **Beautiful, interactive reports**: Crystal-clear validation results that highlight issues and help communicate data quality
- **Composable validation pipeline**: Chain validation steps into a complete data quality workflow
- **Threshold-based alerts**: Set 'warning', 'error', and 'critical' thresholds with custom actions
- **Practical outputs**: Use validation results to filter tables, extract problematic data, or trigger downstream processes

## Real-World Example

```python
import pointblank as pb
import polars as pl

# Load your data
sales_data = pl.read_csv("sales_data.csv")

# Create a comprehensive validation
validation = (
   pb.Validate(
      data=sales_data,
      tbl_name="sales_data",           # Name of the table for reporting
      label="Real-world example.",     # Label for the validation, appears in reports
      thresholds=(0.01, 0.02, 0.05),   # Set thresholds for warnings, errors, and critical issues
      actions=pb.Actions(              # Define actions for any threshold exceedance
         critical="Major data quality issue found in step {step} ({time})."
      ),
      final_actions=pb.FinalActions(   # Define final actions for the entire validation
         pb.send_slack_notification(
            webhook_url="https://hooks.slack.com/services/your/webhook/url"
         )
      ),
      brief=True,                      # Add automatically-generated briefs for each step
   )
   .col_vals_between(            # Check numeric ranges with precision
      columns=["price", "quantity"],
      left=0, right=1000
   )
   .col_vals_not_null(           # Ensure that columns ending with '_id' don't have null values
      columns=pb.ends_with("_id")
   )
   .col_vals_regex(              # Validate patterns with regex
      columns="email",
      pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
   )
   .col_vals_in_set(             # Check categorical values
      columns="status",
      set=["pending", "shipped", "delivered", "returned"]
   )
   .conjointly(                  # Combine multiple conditions
      lambda df: pb.expr_col("revenue") == pb.expr_col("price") * pb.expr_col("quantity"),
      lambda df: pb.expr_col("tax") >= pb.expr_col("revenue") * 0.05
   )
   .interrogate()
)
```

```
Major data quality issue found in step 7 (2025-04-16 15:03:04.685612+00:00).
```

```python
# Get an HTML report you can share with your team
validation.get_tabular_report().show("browser")
```

<div align="center">
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-sales-data.png" width="800px">
</div>

```python
# Get a report of failing records from a specific step
validation.get_step_report(i=3).show("browser")  # Get failing records from step 3
```

<div align="center">
<img src="https://posit-dev.github.io/pointblank/assets/pointblank-step-report.png" width="800px">
</div>

<br>

## Command Line Interface (CLI)

Pointblank includes a powerful CLI utility called `pb` that lets you run data validation workflows directly from the command line. Perfect for CI/CD pipelines, scheduled data quality checks, or quick validation tasks.

<div align="center">
<img src="https://posit-dev.github.io/pointblank/assets/vhs/cli-complete-workflow.gif" width="100%">
</div>

**Explore Your Data**

```bash
# Get a quick preview of your data
pb preview small_table

# Preview data from GitHub URLs
pb preview "https://github.com/user/repo/blob/main/data.csv"

# Check for missing values in Parquet files
pb missing data.parquet

# Generate column summaries from database connections
pb scan "duckdb:///data/sales.ddb::customers"
```

**Run Essential Validations**

```bash
# Check for duplicate rows
pb validate small_table --check rows-distinct

# Validate data directly from GitHub
pb validate "https://github.com/user/repo/blob/main/sales.csv" --check col-vals-not-null --column customer_id

# Verify no null values in Parquet datasets
pb validate "data/*.parquet" --check col-vals-not-null --column a

# Extract failing data for debugging
pb validate small_table --check col-vals-gt --column a --value 5 --show-extract
```

**Integrate with CI/CD**

```bash
# Use exit codes for automation (0 = pass, 1 = fail)
pb validate small_table --check rows-distinct --exit-code
```

## Features That Set Pointblank Apart

- **Complete validation workflow**: From data access to validation to reporting in a single pipeline
- **Built for collaboration**: Share results with colleagues through beautiful interactive reports
- **Practical outputs**: Get exactly what you need: counts, extracts, summaries, or full reports
- **Flexible deployment**: Use in notebooks, scripts, or data pipelines
- **Customizable**: Tailor validation steps and reporting to your specific needs
- **Internationalization**: Reports can be generated in over 20 languages, including English, Spanish, French, and German

## Documentation and Examples

Visit our [documentation site](https://posit-dev.github.io/pointblank) for:

- [The User Guide](https://posit-dev.github.io/pointblank/user-guide/)
- [API reference](https://posit-dev.github.io/pointblank/reference/)
- [Example gallery](https://posit-dev.github.io/pointblank/demos/)
- [The Pointblog](https://posit-dev.github.io/pointblank/blog/)

## Join the Community

We'd love to hear from you! Connect with us:

- [GitHub Issues](https://github.com/posit-dev/pointblank/issues) for bug reports and feature requests
- [_Discord server_](https://discord.com/invite/YH7CybCNCQ) for discussions and help
- [Contributing guidelines](https://github.com/posit-dev/pointblank/blob/main/CONTRIBUTING.md) if you'd like to help improve Pointblank

## Installation

You can install Pointblank using pip:

```bash
pip install pointblank
```

You can also install Pointblank from Conda-Forge by using:

```bash
conda install conda-forge::pointblank
```

If you don't have Polars or Pandas installed, you'll need to install one of them to use Pointblank.

```bash
pip install "pointblank[pl]" # Install Pointblank with Polars
pip install "pointblank[pd]" # Install Pointblank with Pandas
```

To use Pointblank with DuckDB, MySQL, PostgreSQL, or SQLite, install Ibis with the appropriate backend:

```bash
pip install "pointblank[duckdb]"   # Install Pointblank with Ibis + DuckDB
pip install "pointblank[mysql]"    # Install Pointblank with Ibis + MySQL
pip install "pointblank[postgres]" # Install Pointblank with Ibis + PostgreSQL
pip install "pointblank[sqlite]"   # Install Pointblank with Ibis + SQLite
```

## Technical Details

Pointblank uses [Narwhals](https://github.com/narwhals-dev/narwhals) to work with Polars and Pandas DataFrames, and integrates with [Ibis](https://github.com/ibis-project/ibis) for database and file format support. This architecture provides a consistent API for validating tabular data from various sources.

## Contributing to Pointblank

There are many ways to contribute to the ongoing development of Pointblank. Some contributions can be simple (like fixing typos, improving documentation, filing issues for feature requests or problems, etc.) and others might take more time and care (like answering questions and submitting PRs with code changes). Just know that anything you can do to help would be very much appreciated!

Please read over the [contributing guidelines](https://github.com/posit-dev/pointblank/blob/main/CONTRIBUTING.md) for
information on how to get started.

## Roadmap

We're actively working on enhancing Pointblank with:

1. Additional validation methods for comprehensive data quality checks
2. Advanced logging capabilities
3. Messaging actions (Slack, email) for threshold exceedances
4. LLM-powered validation suggestions and data dictionary generation
5. JSON/YAML configuration for pipeline portability
6. CLI utility for validation from the command line
7. Expanded backend support and certification
8. High-quality documentation and examples

If you have any ideas for features or improvements, don't hesitate to share them with us! We are always looking for ways to make Pointblank better.

## Code of Conduct

Please note that the Pointblank project is released with a [contributor code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/). <br>By participating in this project you agree to abide by its terms.

## 📄 License

Pointblank is licensed under the MIT license.

© Posit Software, PBC.

## 🏛️ Governance

This project is primarily maintained by
[Rich Iannone](https://bsky.app/profile/richmeister.bsky.social). Other authors may occasionally
assist with some of these duties.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pointblank",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "data, quality, validation, testing, data science, data engineering",
    "author": null,
    "author_email": "Richard Iannone <riannone@me.com>",
    "download_url": "https://files.pythonhosted.org/packages/42/a8/7cc500dd7de7d25e3482e78119f6fe0cf99ba3d6541151424a45212dd1f5/pointblank-0.11.2.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n\n<a href=\"https://posit-dev.github.io/pointblank/\"><img src=\"https://posit-dev.github.io/pointblank/assets/pointblank_logo.svg\" width=\"85%\"/></a>\n\n_Data validation made beautiful and powerful_\n\n[![Python Versions](https://img.shields.io/pypi/pyversions/pointblank.svg)](https://pypi.python.org/pypi/pointblank)\n[![PyPI](https://img.shields.io/pypi/v/pointblank)](https://pypi.org/project/pointblank/#history)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/pointblank)](https://pypistats.org/packages/pointblank)\n[![Conda Version](https://img.shields.io/conda/vn/conda-forge/pointblank.svg)](https://anaconda.org/conda-forge/pointblank)\n[![License](https://img.shields.io/github/license/posit-dev/pointblank)](https://img.shields.io/github/license/posit-dev/pointblank)\n\n[![CI Build](https://github.com/posit-dev/pointblank/actions/workflows/ci-tests.yaml/badge.svg)](https://github.com/posit-dev/pointblank/actions/workflows/ci-tests.yaml)\n[![Codecov branch](https://img.shields.io/codecov/c/github/posit-dev/pointblank/main.svg)](https://codecov.io/gh/posit-dev/pointblank)\n[![Repo Status](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n[![Documentation](https://img.shields.io/badge/docs-project_website-blue.svg)](https://posit-dev.github.io/pointblank/)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/posit-dev/pointblank)\n\n[![Contributors](https://img.shields.io/github/contributors/posit-dev/pointblank)](https://github.com/posit-dev/pointblank/graphs/contributors)\n[![Discord](https://img.shields.io/discord/1345877328982446110?color=%237289da&label=Discord)](https://discord.com/invite/YH7CybCNCQ)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.1%20adopted-ff69b4.svg)](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html)\n\n</div>\n\n<div align=\"center\">\n   <a href=\"translations/README.fr.md\">Fran\u00e7ais</a> |\n   <a href=\"translations/README.de.md\">Deutsch</a> |\n   <a href=\"translations/README.it.md\">Italiano</a> |\n   <a href=\"translations/README.es.md\">Espa\u00f1ol</a> |\n   <a href=\"translations/README.pt-BR.md\">Portugu\u00eas</a> |\n   <a href=\"translations/README.nl.md\">Nederlands</a> |\n   <a href=\"translations/README.zh-CN.md\">\u7b80\u4f53\u4e2d\u6587</a> |\n   <a href=\"translations/README.ja.md\">\u65e5\u672c\u8a9e</a> |\n   <a href=\"translations/README.ko.md\">\ud55c\uad6d\uc5b4</a> |\n   <a href=\"translations/README.hi.md\">\u0939\u093f\u0928\u094d\u0926\u0940</a> |\n   <a href=\"translations/README.ar.md\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629</a>\n</div>\n\n## What is Pointblank?\n\nPointblank 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.\n\nWhether you're a data scientist, data engineer, or analyst, Pointblank helps you catch data quality issues before they impact your analyses or downstream systems.\n\n## Getting Started in 30 Seconds\n\n```python\nimport pointblank as pb\n\nvalidation = (\n   pb.Validate(data=pb.load_dataset(dataset=\"small_table\"))\n   .col_vals_gt(columns=\"d\", value=100)             # Validate values > 100\n   .col_vals_le(columns=\"c\", value=5)               # Validate values <= 5\n   .col_exists(columns=[\"date\", \"date_time\"])       # Check columns exist\n   .interrogate()                                   # Execute and collect results\n)\n\n# Get the validation report from the REPL with:\nvalidation.get_tabular_report().show()\n\n# From a notebook simply use:\nvalidation\n```\n\n<div align=\"center\">\n<img src=\"https://posit-dev.github.io/pointblank/assets/pointblank-tabular-report.png\" width=\"800px\">\n</div>\n\n<br>\n\n## Why Choose Pointblank?\n\n- **Works with your existing stack**: Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, and more!\n- **Beautiful, interactive reports**: Crystal-clear validation results that highlight issues and help communicate data quality\n- **Composable validation pipeline**: Chain validation steps into a complete data quality workflow\n- **Threshold-based alerts**: Set 'warning', 'error', and 'critical' thresholds with custom actions\n- **Practical outputs**: Use validation results to filter tables, extract problematic data, or trigger downstream processes\n\n## Real-World Example\n\n```python\nimport pointblank as pb\nimport polars as pl\n\n# Load your data\nsales_data = pl.read_csv(\"sales_data.csv\")\n\n# Create a comprehensive validation\nvalidation = (\n   pb.Validate(\n      data=sales_data,\n      tbl_name=\"sales_data\",           # Name of the table for reporting\n      label=\"Real-world example.\",     # Label for the validation, appears in reports\n      thresholds=(0.01, 0.02, 0.05),   # Set thresholds for warnings, errors, and critical issues\n      actions=pb.Actions(              # Define actions for any threshold exceedance\n         critical=\"Major data quality issue found in step {step} ({time}).\"\n      ),\n      final_actions=pb.FinalActions(   # Define final actions for the entire validation\n         pb.send_slack_notification(\n            webhook_url=\"https://hooks.slack.com/services/your/webhook/url\"\n         )\n      ),\n      brief=True,                      # Add automatically-generated briefs for each step\n   )\n   .col_vals_between(            # Check numeric ranges with precision\n      columns=[\"price\", \"quantity\"],\n      left=0, right=1000\n   )\n   .col_vals_not_null(           # Ensure that columns ending with '_id' don't have null values\n      columns=pb.ends_with(\"_id\")\n   )\n   .col_vals_regex(              # Validate patterns with regex\n      columns=\"email\",\n      pattern=\"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$\"\n   )\n   .col_vals_in_set(             # Check categorical values\n      columns=\"status\",\n      set=[\"pending\", \"shipped\", \"delivered\", \"returned\"]\n   )\n   .conjointly(                  # Combine multiple conditions\n      lambda df: pb.expr_col(\"revenue\") == pb.expr_col(\"price\") * pb.expr_col(\"quantity\"),\n      lambda df: pb.expr_col(\"tax\") >= pb.expr_col(\"revenue\") * 0.05\n   )\n   .interrogate()\n)\n```\n\n```\nMajor data quality issue found in step 7 (2025-04-16 15:03:04.685612+00:00).\n```\n\n```python\n# Get an HTML report you can share with your team\nvalidation.get_tabular_report().show(\"browser\")\n```\n\n<div align=\"center\">\n<img src=\"https://posit-dev.github.io/pointblank/assets/pointblank-sales-data.png\" width=\"800px\">\n</div>\n\n```python\n# Get a report of failing records from a specific step\nvalidation.get_step_report(i=3).show(\"browser\")  # Get failing records from step 3\n```\n\n<div align=\"center\">\n<img src=\"https://posit-dev.github.io/pointblank/assets/pointblank-step-report.png\" width=\"800px\">\n</div>\n\n<br>\n\n## Command Line Interface (CLI)\n\nPointblank includes a powerful CLI utility called `pb` that lets you run data validation workflows directly from the command line. Perfect for CI/CD pipelines, scheduled data quality checks, or quick validation tasks.\n\n<div align=\"center\">\n<img src=\"https://posit-dev.github.io/pointblank/assets/vhs/cli-complete-workflow.gif\" width=\"100%\">\n</div>\n\n**Explore Your Data**\n\n```bash\n# Get a quick preview of your data\npb preview small_table\n\n# Preview data from GitHub URLs\npb preview \"https://github.com/user/repo/blob/main/data.csv\"\n\n# Check for missing values in Parquet files\npb missing data.parquet\n\n# Generate column summaries from database connections\npb scan \"duckdb:///data/sales.ddb::customers\"\n```\n\n**Run Essential Validations**\n\n```bash\n# Check for duplicate rows\npb validate small_table --check rows-distinct\n\n# Validate data directly from GitHub\npb validate \"https://github.com/user/repo/blob/main/sales.csv\" --check col-vals-not-null --column customer_id\n\n# Verify no null values in Parquet datasets\npb validate \"data/*.parquet\" --check col-vals-not-null --column a\n\n# Extract failing data for debugging\npb validate small_table --check col-vals-gt --column a --value 5 --show-extract\n```\n\n**Integrate with CI/CD**\n\n```bash\n# Use exit codes for automation (0 = pass, 1 = fail)\npb validate small_table --check rows-distinct --exit-code\n```\n\n## Features That Set Pointblank Apart\n\n- **Complete validation workflow**: From data access to validation to reporting in a single pipeline\n- **Built for collaboration**: Share results with colleagues through beautiful interactive reports\n- **Practical outputs**: Get exactly what you need: counts, extracts, summaries, or full reports\n- **Flexible deployment**: Use in notebooks, scripts, or data pipelines\n- **Customizable**: Tailor validation steps and reporting to your specific needs\n- **Internationalization**: Reports can be generated in over 20 languages, including English, Spanish, French, and German\n\n## Documentation and Examples\n\nVisit our [documentation site](https://posit-dev.github.io/pointblank) for:\n\n- [The User Guide](https://posit-dev.github.io/pointblank/user-guide/)\n- [API reference](https://posit-dev.github.io/pointblank/reference/)\n- [Example gallery](https://posit-dev.github.io/pointblank/demos/)\n- [The Pointblog](https://posit-dev.github.io/pointblank/blog/)\n\n## Join the Community\n\nWe'd love to hear from you! Connect with us:\n\n- [GitHub Issues](https://github.com/posit-dev/pointblank/issues) for bug reports and feature requests\n- [_Discord server_](https://discord.com/invite/YH7CybCNCQ) for discussions and help\n- [Contributing guidelines](https://github.com/posit-dev/pointblank/blob/main/CONTRIBUTING.md) if you'd like to help improve Pointblank\n\n## Installation\n\nYou can install Pointblank using pip:\n\n```bash\npip install pointblank\n```\n\nYou can also install Pointblank from Conda-Forge by using:\n\n```bash\nconda install conda-forge::pointblank\n```\n\nIf you don't have Polars or Pandas installed, you'll need to install one of them to use Pointblank.\n\n```bash\npip install \"pointblank[pl]\" # Install Pointblank with Polars\npip install \"pointblank[pd]\" # Install Pointblank with Pandas\n```\n\nTo use Pointblank with DuckDB, MySQL, PostgreSQL, or SQLite, install Ibis with the appropriate backend:\n\n```bash\npip install \"pointblank[duckdb]\"   # Install Pointblank with Ibis + DuckDB\npip install \"pointblank[mysql]\"    # Install Pointblank with Ibis + MySQL\npip install \"pointblank[postgres]\" # Install Pointblank with Ibis + PostgreSQL\npip install \"pointblank[sqlite]\"   # Install Pointblank with Ibis + SQLite\n```\n\n## Technical Details\n\nPointblank uses [Narwhals](https://github.com/narwhals-dev/narwhals) to work with Polars and Pandas DataFrames, and integrates with [Ibis](https://github.com/ibis-project/ibis) for database and file format support. This architecture provides a consistent API for validating tabular data from various sources.\n\n## Contributing to Pointblank\n\nThere are many ways to contribute to the ongoing development of Pointblank. Some contributions can be simple (like fixing typos, improving documentation, filing issues for feature requests or problems, etc.) and others might take more time and care (like answering questions and submitting PRs with code changes). Just know that anything you can do to help would be very much appreciated!\n\nPlease read over the [contributing guidelines](https://github.com/posit-dev/pointblank/blob/main/CONTRIBUTING.md) for\ninformation on how to get started.\n\n## Roadmap\n\nWe're actively working on enhancing Pointblank with:\n\n1. Additional validation methods for comprehensive data quality checks\n2. Advanced logging capabilities\n3. Messaging actions (Slack, email) for threshold exceedances\n4. LLM-powered validation suggestions and data dictionary generation\n5. JSON/YAML configuration for pipeline portability\n6. CLI utility for validation from the command line\n7. Expanded backend support and certification\n8. High-quality documentation and examples\n\nIf you have any ideas for features or improvements, don't hesitate to share them with us! We are always looking for ways to make Pointblank better.\n\n## Code of Conduct\n\nPlease note that the Pointblank project is released with a [contributor code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/). <br>By participating in this project you agree to abide by its terms.\n\n## \ud83d\udcc4 License\n\nPointblank is licensed under the MIT license.\n\n\u00a9 Posit Software, PBC.\n\n## \ud83c\udfdb\ufe0f Governance\n\nThis project is primarily maintained by\n[Rich Iannone](https://bsky.app/profile/richmeister.bsky.social). Other authors may occasionally\nassist with some of these duties.\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2024-2025 Posit Software, PBC\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "Find out if your data is what you think it is.",
    "version": "0.11.2",
    "project_urls": {
        "homepage": "https://github.com/posit-dev/pointblank"
    },
    "split_keywords": [
        "data",
        " quality",
        " validation",
        " testing",
        " data science",
        " data engineering"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "05107a40380a131843d6ccfb9bf56fd2f834eb8d3f0f36ffa35de32fd3046661",
                "md5": "47403d8b209aec88ba213ce3e8edc99b",
                "sha256": "4f2f6b0cee950a128c2229b978c75e0497675575c5a1c184d8cbb936013b1abc"
            },
            "downloads": -1,
            "filename": "pointblank-0.11.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "47403d8b209aec88ba213ce3e8edc99b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 17047538,
            "upload_time": "2025-07-08T16:04:18",
            "upload_time_iso_8601": "2025-07-08T16:04:18.174607Z",
            "url": "https://files.pythonhosted.org/packages/05/10/7a40380a131843d6ccfb9bf56fd2f834eb8d3f0f36ffa35de32fd3046661/pointblank-0.11.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "42a87cc500dd7de7d25e3482e78119f6fe0cf99ba3d6541151424a45212dd1f5",
                "md5": "99eefafc88c8daf096b37afa264fd736",
                "sha256": "faae3455122454d17b73b63b776fe33b442ac7bdecf9805c7951550c9d7e7385"
            },
            "downloads": -1,
            "filename": "pointblank-0.11.2.tar.gz",
            "has_sig": false,
            "md5_digest": "99eefafc88c8daf096b37afa264fd736",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 50780976,
            "upload_time": "2025-07-08T16:04:21",
            "upload_time_iso_8601": "2025-07-08T16:04:21.863034Z",
            "url": "https://files.pythonhosted.org/packages/42/a8/7cc500dd7de7d25e3482e78119f6fe0cf99ba3d6541151424a45212dd1f5/pointblank-0.11.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-08 16:04:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "posit-dev",
    "github_project": "pointblank",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pointblank"
}
        
Elapsed time: 1.07924s