Skip to content

Releases: posit-dev/pointblank

v0.25.0

Choose a tag to compare

@rich-iannone rich-iannone released this 12 Jun 16:44
b306422

Pointblank v0.25.0 introduces powerful new capabilities for data pipeline governance and synthetic data generation. This release adds boundary enforcement through contracts and pipelines, letting you validate data at both the source and target of a transformation. Rich schema inference automatically detects constraints from existing tables (including ranges, categorical values, and semantic presets) enabling realistic synthetic data generation. The prompt() validation method now accepts multi-modal attachments (images and PDFs), giving the LLM visual context when evaluating data quality.

New Features

  • Rich schema inferenceSchema.from_table() and schema_from_tbl() automatically extract comprehensive constraints from any supported table, including numeric ranges, categorical values, nullability, date bounds, and 25+ semantic presets (email, address, UUID, etc.) to power realistic synthetic data generation. (#391)

  • Multi-modal attachments in prompt() — The prompt() validation method now accepts an attachments= parameter for images and PDFs (local files or URLs), providing visual context to the LLM for richer data validation against brand guides, schema diagrams, or reference documents. (#393)

  • Boundary enforcement with contracts and pipelines — New Contract and Pipeline classes enable dual-boundary validation at the source and target of data transformations. Contracts define schema expectations and validation steps with ownership metadata, while pipelines orchestrate the full validate-transform-validate workflow with short-circuit optimization. (#401)

Bug Fixes

  • Lazy frames are no longer prematurely collected during interrogation, preserving the performance benefits of deferred evaluation with Polars LazyFrames. (#398)

  • rows_distinct() now correctly handles rows containing null values instead of dropping them from validation results. (#399)

  • The MCP server now starts reliably across different versions of the fastmcp library by using version-aware instantiation with fallback strategies. (#400)

v0.24.0

Choose a tag to compare

@rich-iannone rich-iannone released this 22 Apr 18:21
5ad9b0a

New Features

  • Added the get_dataframe_report() method to Validate for writing validation results to a DataFrame (supports Polars, Pandas, and DuckDB output). (@Meghansaha, #341)
  • Added OpenTelemetry (OTel) integration for exporting validation results as metrics, traces, and logs. Available as an optional dependency via the otel extra. (#383)
  • Added Azure OpenAI as a model provider for both Validate.prompt() and DraftValidation. (@howardbaik, #385, #387)

Docs

  • Reorganized demos into the new docs structure. (#381)
  • Added a User Guide page on OpenTelemetry integration. (#383)
  • Added Azure OpenAI usage and setup instructions to the User Guide. (#385, #387)

New Contributors

Full Changelog: v0.23.0...v0.24.0

v0.23.0

Choose a tag to compare

@rich-iannone rich-iannone released this 01 Apr 16:25

Features

  • We now run pyrefly to infer types. (@tylerriccio33, #374)
  • Data generation now offers a locale code string preset. (#375)
  • A credit card provider is now a string preset for data generation. (#377)

Fixes:

Full Changelog: v0.22.0...v0.23.0

v0.22.0

Choose a tag to compare

@rich-iannone rich-iannone released this 26 Feb 15:43

New Features

  • Expanded generate_dataset() country support with 29 new countries (EC, PA, SA, UA, AM, AZ, BO, CM, DO, GE, GT, HN, IL, JM, JO, KH, KZ, LB, MD, MM, MZ, NP, PY, RS, RW, SV, TZ, UY, UZ), bringing the total to 100 supported countries, along with expanded street lists and normalized industry names across existing countries. (#370, #371)
  • Added profile_fields() as a composite helper that creates a dictionary of person-profile StringField objects for direct unpacking into a Schema(). Supports three tiers ("minimal", "standard", "full"), name splitting, column include/exclude, and a prefix= parameter for namespacing. (#367)
  • Significantly expanded YAML workflow support with governance metadata (owner, consumers, version), final_actions and reference top-level keys, aggregate validation methods (col_sum_gt, col_avg_le, etc.), col_pct_null, data_freshness, shortcut syntax for the active parameter, unknown-key validation to catch typos, and YAML-to-Python roundtrip fidelity. (#369)

Bug Fixes

  • Fixed preview() failing on tables with duration (timedelta) columns by casting them to strings before display. (#368)

Docs

  • Added YAML reference and validation workflow guides covering governance metadata and aggregate methods. (#369)
  • Updated data generation documentation with profile_fields() usage and 100-country support. (#367, #370, #371)

Full Changelog: v0.21.0...v0.22.0

v0.21.0

Choose a tag to compare

@rich-iannone rich-iannone released this 19 Feb 20:08
8a8f08a

New Features

  • Significantly enhanced generate_dataset() with locale mixing (country= now accepts lists or weighted dicts), frequency-weighted sampling via a 4-tier system, a user_agent preset with country-weighted browser selection, presets for hash digests (md5, sha1, sha256), barcodes (ean8, ean13), date strings (date_between, date_range, future_date, past_date), and ISO 3166-1 country codes (country_code_2, country_code_3), country-specific license plate formats, industry-coherent person-company pairing, a generate_dataset pytest fixture with automatic per-test seeding, and expanded country support (bringing the total to 71). (#352, #354, #355, #358, #360, #361, #362, #363, #364, #365, #366)
  • Added expressions support for the active= parameter to provide for more flexible and dynamic validation workflows. (#349)

Docs

  • Added validation report notes output display in documentation examples. (#350)
  • Improved docstrings for generate_dataset() and all *_field() functions. (#353)
  • Fixed broken links in quickstart.qmd by removing incorrect path prefixes. (@Meghansaha, #357)
  • Updated data generation documentation with new presets and features. (#359)

Full Changelog: v0.20.0...v0.21.0

v0.20.0

Choose a tag to compare

@rich-iannone rich-iannone released this 04 Feb 20:15

New Features

  • Added the generate_dataset() function for creating realistic synthetic test data from Schema definitions, with a suite of field helper functions (int_field(), string_field(), date_field(), name_field(), etc.) and support for 50 country locales via the country= parameter. (#348)

Full Changelog: v0.19.0...v0.20.0

v0.19.0

Choose a tag to compare

@rich-iannone rich-iannone released this 21 Jan 20:56
2155e4f

New Features

  • We can now specify owner, consumers, and version metadata for data validations within the Validate class. (#344)
  • The new data_freshness() validation method has been added for easily checking the freshness of data. (#345)

Fixes

  • Added the .step_report() capability for the aggregate validation methods (e.g., col_sum_gt(), col_sd_lt(), etc.). (#343)
  • Updated SVG icons for all of the aggregate validation methods. (#346)

Full Changelog: v0.18.0...v0.19.0

v0.18.0

Choose a tag to compare

@rich-iannone rich-iannone released this 13 Jan 15:19

New Features

  • Added several validation methods that work on aggregates of column values (e.g., col_sum_gt(), col_sd_lt(), etc.). (@tylerriccio33, #332)

Fixes

  • Implemented fix for handling datetime strings in _apply_segments(). (#337)
  • Added reference data as a default for aggregation comparison values. (@tylerriccio33, #339)
  • Add experimental gradual typing for development. (@tylerriccio33, #198, #338)
  • Improved the display of aggregation-type methods in the validation report. (#342)

Docs

  • Updated the reference API with aggregate check methods. (#340)

Full Changelog: v0.17.0...v0.18.0

v0.17.0

Choose a tag to compare

@rich-iannone rich-iannone released this 02 Dec 03:17

New Features

  • All col_schema_match() validation steps are now accompanied by notes that describe the results. (#325)
  • Notes appear in validation reports notes when columns are not found or none are resolved by use of column selectors. (#326)
  • Validation reports now have informative notes for steps that use the pre= parameter. (#328)
  • New options are available (in get_tabular_report() and globally in config()) for enabling/disabling validation report footer sections. (#327)
  • Added the test-core target for running core tests (large time savings compared to running all tests). (#331)
  • New validation method added, col_pct_null(), for checking the percentage of Null values in a column. (#290, @tylerriccio33)

Fixes

  • Removed a duplicate paragraph in the docs. (#329, @dpprdan)

New Contributors

Full Changelog: v0.16.0...v0.17.0

v0.16.0

Choose a tag to compare

@rich-iannone rich-iannone released this 18 Nov 15:14

New Features

  • Use of local thresholds settings will now produce notes at the bottom of the validation report table. (#318)
  • Added the print_database_tables() function for printing a list of tables in a database connection. (#322, @Meghansaha)
  • Added YAML support for several recently added validation methods. (#312)
  • There are now report translations for all official EU languages. (#314)

Fixes

  • Ensured that Pointblank is compatible with Python 3.14 (#320)

Docs

  • Revised project website navigation to put the User Guide front and center. (#307, #321)
  • Modified logo used in website. (#308)
  • Added both the llms.txt and llms-full.txt files to the project website. (#310)
  • Updated documentation with newly-added validation methods. (#311)
  • Added a PDF version of the User Guide to the website (#313)
  • Improved the appearance of the website's sidebar button (visible at constrained screen widths). (#315)
  • Fixed broken contributor info links. (#316, @Meghansaha)

New Contributors

Full Changelog: v0.15.0...v0.16.0