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
Latest release: v0.0.74: text cells carry what Excel displays (OOXML
_xHHHH_escapes are decoded) and a cell XML cannot carry is refused; requirespain001 >= 0.0.74. See CHANGELOG.md.
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.
Text cells carry what Excel displays: OOXML _xHHHH_ escapes such as
_x000D_ are decoded, and a character XML cannot carry is refused with its
column, row and code point. 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
make install
make check
python scripts/render_readme.py --check
python benches/bench_load_xlsx.py --quick
Coverage is gated at 100% line and branch. CI installs only hash-pinned
requirements/*.txt (make pip-compile regenerates them), audits each with
pip-audit, holds every function to the complexity ceilings, and fuzzes text
cells with Atheris. 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, temporal-cell and control-character 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
What is pain.001? · 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.
Metadata
Release files for pain001-loader-xlsx 0.0.74
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pain001_loader_xlsx-0.0.74.tar.gz | 444.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pain001_loader_xlsx-0.0.74-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 462.4 kB
Release files / pain001_loader_xlsx-0.0.74.tar.gz
| Download URL | pain001_loader_xlsx-0.0.74.tar.gz |
|---|---|
| Size | 444.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
658e38b4e05adfb0e4e10a8b11a8fe0b54d02c88458a2f8603070e4b14bed5c6
|
|
BLAKE2b-256 checksum How to use checksums |
ebaf66d7612f8dabc31efa8fba85e4fdcc9e60c501756b7013b82bd28f4831fd
|
| 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 Oct 22, 2026.
Transparency logRelease files / pain001_loader_xlsx-0.0.74-py3-none-any.whl
| Download URL | pain001_loader_xlsx-0.0.74-py3-none-any.whl |
|---|---|
| Size | 18.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
af776f285ac583a7d27e0683ab9bc88e0049a077efeebf71d3f5e36617655bf5
|
|
BLAKE2b-256 checksum How to use checksums |
c258be36e1ad3b4e8aa921596ef0a6f643d81a17977552e57f3a237f8081bdfe
|
| 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 Oct 22, 2026.
Transparency logSecurity for pain001-loader-xlsx 0.0.74
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pain001_loader_xlsx-0.0.74.tar.gz
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 Oct 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.