Skip to main content

pain001-loader-xlsx logo

pain001-loader-xlsx

Load Excel payment records through the pain001 plugin contract.

Build Registry Docs OpenSSF Scorecard License: Apache-2.0 OR MIT Python 3.10 or newer

pain001-loader-xlsx demo: examples/01_load_xlsx.py loads two payment rows from a workbook it writes, then examples/02_iban_safety_guard.py shows a numeric IBAN cell refused with Excel's Text-format guidance


Contents

Getting started

The pain001-loader-xlsx ecosystem

Library reference

Operational


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; requires pain001 >= 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)

Source distribution for pain001-loader-xlsx 0.0.74
File Size Uploaded Provenance
pain001_loader_xlsx-0.0.74.tar.gz 444.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pain001-loader-xlsx 0.0.74
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page