Releases: posit-dev/pointblank
Release list
v0.25.0
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 inference —
Schema.from_table()andschema_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()— Theprompt()validation method now accepts anattachments=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
ContractandPipelineclasses 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
fastmcplibrary by using version-aware instantiation with fallback strategies. (#400)
v0.24.0
New Features
- Added the
get_dataframe_report()method toValidatefor 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
otelextra. (#383) - Added Azure OpenAI as a model provider for both
Validate.prompt()andDraftValidation. (@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
- @howardbaik made their first contribution in #385
Full Changelog: v0.23.0...v0.24.0
v0.23.0
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:
- Audit the performance of lazy transformations by @tylerriccio33 in #373
- Aggregation and Reference Column Hardening by @tylerriccio33 in #372
Full Changelog: v0.22.0...v0.23.0
v0.22.0
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-profileStringFieldobjects for direct unpacking into aSchema(). Supports three tiers ("minimal","standard","full"), name splitting, column include/exclude, and aprefix=parameter for namespacing. (#367) - Significantly expanded YAML workflow support with governance metadata (
owner,consumers,version),final_actionsandreferencetop-level keys, aggregate validation methods (col_sum_gt,col_avg_le, etc.),col_pct_null,data_freshness, shortcut syntax for theactiveparameter, 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
New Features
- Significantly enhanced
generate_dataset()with locale mixing (country=now accepts lists or weighted dicts), frequency-weighted sampling via a 4-tier system, auser_agentpreset 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, agenerate_datasetpytest 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.qmdby 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
New Features
- Added the
generate_dataset()function for creating realistic synthetic test data fromSchemadefinitions, with a suite of field helper functions (int_field(),string_field(),date_field(),name_field(), etc.) and support for 50 country locales via thecountry=parameter. (#348)
Full Changelog: v0.19.0...v0.20.0
v0.19.0
New Features
- We can now specify
owner,consumers, andversionmetadata for data validations within theValidateclass. (#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
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
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 inconfig()) for enabling/disabling validation report footer sections. (#327) - Added the
test-coretarget 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
New Contributors
Full Changelog: v0.16.0...v0.17.0
v0.16.0
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.txtandllms-full.txtfiles 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
- @Meghansaha made their first contribution in #316
Full Changelog: v0.15.0...v0.16.0