Release v0.0.29
Release v0.0.29 - 2026-01-09
Pain001: Automate ISO 20022-Compliant Payment File Creation
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.
- Website: https://pain001.com
- Source code: https://github.com/sebastienrousseau/pain001
- Bug reports: https://github.com/sebastienrousseau/pain001/issues
🔒 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
mainfunction export topain001/__init__.py - Added
process_filesfunction 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 writingtest_cli.py- 6 tests for command-line interfacetest_coverage_complete.py- 10 tests covering edge cases and error pathstest_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__.pyfiles - 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.29Breaking 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:
- Website: https://pain001.com
- Documentation: https://github.com/sebastienrousseau/pain001
- Issue Tracker: https://github.com/sebastienrousseau/pain001/issues