Skip to content

Release v0.0.29

Choose a tag to compare

@sebastienrousseau sebastienrousseau released this 09 Jan 13:27

Release v0.0.29 - 2026-01-09

Pain001: Automate ISO 20022-Compliant Payment File Creation

Pain001 banner

Overview

Pain001 is an open-source Python Library that you can use to create
ISO 20022-Compliant Payment Files directly from your CSV or SQLite
Data Files.

🔒 Security Updates

This release updates multiple dependencies to address security vulnerabilities and includes the latest security patches.

Certificate Authority Bundle Update

Updated: certifi from 2024.7.4 to 2026.1.4

Impact: Updated Mozilla CA certificate bundle with the latest trusted certificates

  • Ensures secure HTTPS connections with current certificate authorities
  • Removes expired or compromised certificates
  • Adds new trusted certificate authorities

Internationalized Domain Name Security

Updated: idna from 3.7 to 3.11

Impact: Enhanced security for internationalized domain names (IDN)

  • Improved handling of punycode encoding/decoding
  • Better protection against IDN homograph attacks
  • Updated to latest IDNA2008 specifications

Character Encoding Detection

Updated: charset-normalizer from 3.3.2 to 3.4.4

Impact: Improved character encoding detection and security

  • More accurate encoding detection
  • Better handling of edge cases
  • Performance improvements

📝 Documentation Improvements

README Enhancements

Comprehensive updates to README.md for better user experience:

New Sections Added:

  • CSV Data Format: Complete guide showing required columns with examples
  • Output Files: Documentation on generated files and their locations
  • Troubleshooting: Common issues and solutions guide
  • Requirements: Detailed dependency information
  • Getting Help: Clear instructions for support

Code Examples Fixed:

  • ✅ Corrected import paths (from pain001 import main)
  • ✅ Fixed validation function import (pain001.xml.validate_via_xsd)
  • ✅ Added advanced integration example with error handling
  • ✅ All examples verified to work correctly

Improved Structure:

  • Better organization with updated table of contents
  • Professional formatting throughout
  • Clear step-by-step instructions for all use cases
  • Sample CSV data with proper formatting

🔧 Technical Improvements

Package Structure

Enhanced Module Exports:

  • Added main function export to pain001/__init__.py
  • Added process_files function export for programmatic use
  • Defined __all__ for explicit public API
  • Improved import ergonomics for developers

Copyright Updates

Updated all copyright notices to reflect 2026:

  • Files updated: 52 Python files
  • Format: Copyright (C) 2023-2026 Sebastien Rousseau
  • Scope: All source files, test files, and templates

🧪 Testing & Quality Assurance

Dramatically Improved Code Coverage

Coverage Metrics:

  • Previous: 77% code coverage
  • Current: 92% code coverage
  • Improvement: +15 percentage points

New Test Files Added:

  • test_write_xml_to_file.py - 6 comprehensive tests for XML file writing
  • test_cli.py - 6 tests for command-line interface
  • test_coverage_complete.py - 10 tests covering edge cases and error paths
  • test_generate_xml_versions.py - 7 tests for all pain message versions

Enhanced Existing Tests:

  • Added edge case tests to test_load_csv_data.py
  • Enhanced error handling tests in test_validate_via_xsd.py
  • Added validation tests to test_validate_csv_data.py
  • Improved error scenario coverage across all modules

Test Suite Statistics:

  • ✅ Total tests: 110 (up from 71, +39 new tests)
  • ✅ Success rate: 100% (110/110 passed)
  • ✅ Execution time: 6.81s
  • ✅ Security scans: 0 vulnerabilities
  • ✅ All modules at or near 100% coverage

Files at 100% Coverage:

  • All __init__.py files
  • All CSV and database modules
  • All XML creation modules (v3-v9)
  • All utility modules
  • Template modules

Uncovered Code (8%):

  • Repetitive data transformation code (tested via integration tests)
  • Python module entry points (if __name__ == "__main__")
  • Rare exception handling paths

📦 Updated Dependencies

Security & Core Libraries

Package Previous Current Category
certifi 2024.7.4 2026.1.4 Security - CA certificates
idna 3.7 3.11 Security - Domain names
charset-normalizer 3.3.2 3.4.4 Security - Encoding

Supporting Libraries

Package Previous Current Purpose
packaging 24.0 25.0 Package version parsing
iniconfig 2.0.0 2.1.0 Configuration file parsing
pluggy 1.5.0 1.6.0 Plugin system
babel 2.15.0 2.17.0 Internationalization

🧪 Testing

All tests pass with 100% success rate:

  • ✅ Unit tests: 110/110 passed (up from 71)
  • ✅ Code coverage: 92% (up from 77%)
  • ✅ Security scans: 0 vulnerabilities in dependencies
  • ✅ Import tests: All modules importable
  • ✅ Execution time: 6.81s
  • ✅ New tests added: 39 comprehensive test cases

📚 Migration Guide

Upgrading from v0.0.28

# Using pip
pip install --upgrade pain001

# Using poetry
poetry update pain001

# Verify installation
python -c "import pain001; print(pain001.__version__)"
# Should output: 0.0.29

Breaking Changes

None. This is a maintenance release focused on dependency updates. No breaking changes to the API or functionality.

Compatibility

  • Python 3.9+ (unchanged)
  • All existing code continues to work without modifications
  • No changes to public API
  • Backward compatible with v0.0.28 and v0.0.27

🔍 Dependency Security Status

Safety Check Results:

✅ Packages found: 72
✅ Vulnerabilities found: 0
✅ All dependencies up to date and secure

Bandit Security Scan:

  • Medium/High severity issues: 0
  • Low severity (informational): 12

🎯 What's Next

This release completes the security update cycle started with v0.0.28. Future releases will focus on:

  • Feature enhancements
  • Performance improvements
  • Additional ISO 20022 message type support

🤝 Contributing

For security issues, please see our Security Policy.

For bug reports and feature requests, please use GitHub Issues.

📄 License

This project is licensed under the Apache Software License 2.0 - see the LICENSE-APACHE and LICENSE-MIT files for details.

🙏 Acknowledgments

  • Dependabot for automated security updates
  • The certifi, idna, and charset-normalizer maintainers for prompt security patches
  • Mozilla Foundation for maintaining the CA certificate bundle


Full Changelog: v0.0.28...v0.0.29

For detailed information about Pain001, visit: