Skip to content

Pain001 v0.0.44 - Core Orchestration Refactor

Choose a tag to compare

@sebastienrousseau sebastienrousseau released this 13 Jan 21:32

Pain001 Release v0.0.44

Release Date: 2026-01-13
Tag: v0.0.44
Python: 3.9+
Status: Stable
Focus: Reliability hardening and coverage uplift

Executive Summary

This release hardens the refactored processing pipeline introduced in #80 and adds targeted regression tests for CLI validation, boolean field handling, and XML output indentation. Total coverage now stands at 99.14% across 392 tests, keeping the reliability bar well above the 95% floor.

What Changed

  • Core Refactoring (Resolves #80): process_files() remains the public entry point but now delegates to focused helpers for validation, loading, namespace registration, and generation. Behavior and API stay backward compatible while readability and auditability improve.
  • Edge Coverage Additions: New tests cover CLI missing-file exits, boolean validation branches, XML writer indentation, and generation paths where outputs are absent. These tests lock in error handling and make observability stronger.
  • Release Versioning: Bumped project metadata to 0.0.44 in pyproject.toml, setup.cfg, and pain001/__init__.py to align packages and documentation.

New and Enhanced Capabilities

  • Input Sources: CSV, SQLite, Python list, and Python dictionary remain fully supported with mandatory validation before XML generation.
  • ISO 20022 Coverage: All nine pain.001 versions (v03–v11) remain supported for Customer Credit Transfer Initiation, unchanged and fully compatible.
  • XML Safety: Jinja2 rendering continues to run with autoescape=True, and XML parsing remains protected by defusedxml.

Quality Gate & Metrics

  • Tests: 392 passing
  • Coverage: 99.14% project-wide (≥95% floor)
  • Security: Bandit/Safety clean; no new dependencies added
  • Type Checking: mypy strict passes with zero errors
  • Performance: No regressions detected; generation timing orchestration unchanged

Compatibility

  • Backward Compatibility: No breaking changes; existing CLI/API usage works unchanged.
  • Supported Python: 3.9+.
  • Supported ISO Versions: pain.001.001.03 through pain.001.001.11.
  • Supported Input Sources: CSV, SQLite, Python list, Python dictionary.

Usage Notes

  • Keep using process_files() for all message types; helper extraction is internal only.
  • CLI validation now exits early with clear messaging when template, schema, or data files are missing.
  • XML indentation is explicitly tested to preserve readable outputs while maintaining XSD validity.

Installation

pip install pain001==0.0.44

Testing & Verification

All tests and quality gates were executed locally:

poetry run pytest --cov=pain001 --cov-report=term
poetry run mypy .
poetry run ruff check .
poetry run black --check .
poetry run isort --check-only .
poetry run bandit -r pain001 tests -ll
poetry run safety check

Known Issues

  • No new issues introduced in this release.
  • Existing roadmap items (streaming pipeline, CLI validate-only mode, typed payment models) remain under active development.

Next Steps

  • Continue roadmap work toward streaming ingestion, CLI validate-only mode, and typed payment models.
  • Maintain ≥99% coverage on subsequent changes; keep zero-tolerance for schema validation regressions.

Acknowledgements

  • Thanks to the contributors and reviewers who ensured the refactoring and additional tests shipped safely.

pain001 remains focused on secure, compliant payment initiation with deterministic, validated outputs. Upgrade to v0.0.44 to benefit from the expanded regression coverage and maintained reliability bar.