pain001-loader-xlsx
Load Excel payment records through the pain001 plugin contract.
Contents
Getting started
- Install — PyPI and source
- Requirements — toolchain floor, platforms
- Quick Start — use the installed companion
The pain001-loader-xlsx ecosystem
- The pain001-loader-xlsx ecosystem — core and this companion
Library reference
- Capabilities at a glance — the current surface by theme
- Ecosystem comparison — short matrix; full table at
docs/COMPARISON.md - Benchmarks — headline numbers; full table at
docs/BENCHMARKS.md - Features — module-level capability list
- Configuration — core options
- Examples — runnable example index
Operational
- When not to use pain001-loader-xlsx — limitations
- Development — make targets, fuzzing, CI
- Security — guarantees and compliance
- Documentation — all reference docs
- Stability guarantees — SemVer axis, output stability, minimum toolchain discipline
- License
Install
As a Python library
python -m pip install pain001-loader-xlsx
Published packages and development checkouts are distinct. Test unreleased changes on this companion's development branches against the matching core branch. Versions track core 0.0.x releases.
Requirements
Python 3.10 or newer. CI tests 3.10–3.14 on Linux. See toolchain policy; no distro-system-Python claim is made.
Quick Start
pain001 plugins list --kind loader --json
pain001 -t pain.001.001.03 -d payments.xlsx -o output
Supply payments.xlsx with core template column names; examples/
creates synthetic workbooks. -o specifies an output directory, not a filename.
The pain001-loader-xlsx ecosystem
This independently installed companion delegates payment behavior to core. Coordinated versioning does not imply branch changes have been released.
| Component | Purpose | Use case |
|---|---|---|
| pain001 | Generation and validation | Shared contracts and XML engine |
Capabilities at a glance
| Area | Capability | Status |
|---|---|---|
| Integration | Excel loading and streaming | Test-gated companion package |
Ecosystem comparison
This matrix describes the repository's scope, not an independently benchmarked comparison with competitors.
| Project | Generate payment XML | Real settlement | Synthetic bank replies |
|---|---|---|---|
| pain001-loader-xlsx | Delegates to core | No | Not a bank service |
See docs/COMPARISON.md for the evidence and complete matrix.
Benchmarks
CI smoke-runs benchmarks. No hardware-independent throughput or latency promise is made; use the generated run report for measurements.
| Scenario | Result | Environment |
|---|---|---|
| Adapter operations | Run-specific | Python, hardware and dependency versions recorded per run |
See docs/BENCHMARKS.md for methodology and full results.
Features
XlsxLoader implements AbstractLoader via the pain001.loaders entry point.
It reads .xlsx/.xlsm, first sheet only, row 1 as headers. Read-only, data-only
openpyxl access returns cached formula values, which can be stale or absent;
no formulas or macros are evaluated.
Numeric IBAN cells are rejected with column-specific Text-format guidance. Text-valued IBAN cells are accepted even with General formatting. Excel date, time and datetime objects are rejected; use ISO-8601 text. Formatting a damaged identifier as Text cannot restore lost digits: recover the source value. Streaming yields bounded chunks and workbooks close on errors.
Configuration
Install alongside core for extension dispatch. XlsxLoader.load(path) returns
LoaderResult; load_streaming(path, chunk_size) yields chunks. Refer to
core's generated CLI help for generation flags.
Examples
Run the self-checking scripts under examples/. Tests cover valid and malformed inputs and integration with the core contract.
When not to use pain001-loader-xlsx
No legacy .xls, multi-sheet merging, formula evaluation or identifier repair.
Convert legacy files explicitly and preserve account values as text at source.
This is a payment-record adapter, not a general spreadsheet engine.
Development
python -m pip install -e '.[dev]'
make check
python scripts/render_readme.py --check
python benches/bench_load_xlsx.py --quick
Coverage is gated at 100% line and branch. See CONTRIBUTING.md
and DEVELOPMENT.md. README is generated from the canonical
layout and docs/readme-values.json; CI rejects drift.
Security
Read-only workbook loading does not run macros or evaluate formulas. Numeric IBAN and temporal-cell guards reject known spreadsheet coercions. Loading a workbook does not prove its accounts, amounts or bank rules are correct.
Report vulnerabilities according to SECURITY.md.
Documentation
User manual · API reference · Developer guide · Family map
Stability guarantees
Versions advance in coordinated 0.0.1 steps with core. The maintainer opens
releases. Contract and output changes need
compatibility review. No stronger platform or stability guarantee is implied.
License
Dual-licensed under Apache-2.0 OR MIT, at your option. See LICENSE. Dependencies retain their own licences.
Release files for pain001-loader-xlsx 0.0.71
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pain001_loader_xlsx-0.0.71.tar.gz | 72.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pain001_loader_xlsx-0.0.71-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 88.8 kB
Release files / pain001_loader_xlsx-0.0.71.tar.gz
| Download URL | pain001_loader_xlsx-0.0.71.tar.gz |
|---|---|
| Size | 72.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dbb25c395eb47c9701d078e11b5da31e9392d87cdc3006d6c14580262c8f81c7
|
|
BLAKE2b-256 checksum How to use checksums |
b1efe591064970b8916f4fa05e726437e4a6e18be0f219b58c5005f67229506a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / pain001_loader_xlsx-0.0.71-py3-none-any.whl
| Download URL | pain001_loader_xlsx-0.0.71-py3-none-any.whl |
|---|---|
| Size | 16.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3266e91df8e7c191a0a0cc1ec4e818a1b017d887bf03a76dee1e6450b30cd159
|
|
BLAKE2b-256 checksum How to use checksums |
fe40849a04536d57c7601efd11150afb4a496af287add17503b39feb81d911ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log