v0.0.54
Pain001 Release v0.0.54
Release Date: 2026-07-16
Tag: v0.0.54
Python: 3.10+
Status: Stable
Executive Summary
An LLM-ergonomics + security release. The generate path now
accepts the arguments AI agents naturally produce and fails with one
actionable message instead of one field per retry. Driven by a live
Claude Code transcript that needed 10+ tool calls to produce a single
pain.001; the same request now succeeds in one call. Also resolves the
click dependency advisory (PYSEC-2026-2132).
What's in v0.0.54 at a glance
- Input normalization (
normalize_payment_records/
canonicalize_payment_record): field aliases (amount,
currencyandpayment_currency,execution_date, lower-case
IBAN/BIC keys), XSD boolean coercion (Python bools and
"True"/"FALSE" strings), bare-date coercion for xs:dateTime and
datetime truncation for xs:date, computednb_of_txs/ctrl_sum. - Never a silent empty attribute: the v09-v12 preparers no longer
emitCcy=""when the currency arrives under the documented
currencykey - the previous behavior failed XSD validation with no
field-level hint. - All-at-once errors: one
PaymentValidationErrorlists every
missing header and row field with row numbers; XSD failures carry
element paths (capped at 20). - Conditional SplmtryData: the v09-v12 templates emit the
supplementary-data block only when supplementary data is provided;
some bank gateways reject the previously hardcoded empty block. - Schema truthfulness: JSON-schema
requiredlists now match the
real generation contract. - Security: click bumped past PYSEC-2026-2132 (floor raised to
=8.3.3,<9); pip-audit clean.
Compatibility
IBAN/BIC strictness is unchanged. Existing canonical-key callers are
unaffected; aliases never override explicit canonical values.
1,300 tests at the 100% line + branch coverage floor.