xlsform-lint
xlsform-lint is a developer-oriented, Ruff/ESLint-style linter for XLSForm.
It combines pyxform semantic validation with seven narrow native diagnostics and
supports deterministic text, JSON v1, and SARIF output. pyxform is the semantic
authority: this tool makes selected upstream failures easier to act on and adds
bounded authoring checks; it does not replace pyxform or XLSForm testing on the
target data-collection platform.
Version 0.1.0 is available on PyPI. Version 0.1.1 is being prepared as a local patch-release freeze and has not been published. The project does not validate runtime XPath behavior, execute a form, load or validate external CSV data, or claim to find everything outside pyxform's validation.
Installation
Python 3.11 or newer is required. The package supports pyxform 4.5.x
(pyxform>=4.5,<4.6) and pins openpyxl 3.1.5.
For a local checkout or a built wheel:
python -m pip install .
python -m pip install dist/xlsform_lint-0.1.1-py3-none-any.whl
Install the current public release from PyPI with:
python -m pip install xlsform-lint
See installation details.
Usage and output
Lint one workbook. Errors fail by default; warnings and information are shown but do not fail:
xlsform-lint FORM.xlsx
xlsform-lint FORM.xlsx --fail-on warning
xlsform-lint FORM.xlsx --format json
xlsform-lint FORM.xlsx --format sarif
Text is intended for people. JSON follows the tracked JSON v1 schema. SARIF provides an interchange format, although XLSX cells do not map naturally to source-code line annotations.
Configuration and policy
Store policy in .xlsform-lint.toml. Discovery starts at the workbook's
directory and uses the nearest ancestor file; --config PATH selects one file
explicitly. Resolution order is built-ins, selected default or strict
profile, config, then explicit CLI settings.
profile = "strict"
[lint]
fail_on = "warning"
format = "text"
[rules]
UX001 = "error"
[select]
include = ["PX", "CHO", "LBL", "I18N", "UX", "ORD"]
ignore = ["UX002"]
--select RULES and --ignore RULES accept comma-separated exact IDs or the
prefixes PX, CHO, LBL, I18N, UX, and ORD. --fail-on accepts
error, warning, or info; --profile accepts default or strict.
See the complete configuration reference.
Integrations and reference
The supported V1 public interface is the CLI. Python implementation modules are
internal unless explicitly exported and documented. The frozen architecture is
recorded in xlsform-lint-v1-blueprint.md.
License
xlsform-lint is licensed under the Apache License 2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xlsform_lint-0.1.1.tar.gz.
File metadata
- Download URL: xlsform_lint-0.1.1.tar.gz
- Upload date:
- Size: 45.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03015a1301c9b0310dda210ba7e3e3f8e092aa70f254c9d7843fe68197bf995a
|
|
| MD5 |
da858f96c8f74cf29880cd2adfb5e05d
|
|
| BLAKE2b-256 |
a7e93d9d84248ddf7a3cc4ef64c609d10c27026e4a78c45762d37fc3eb7ba0ff
|
Provenance
The following attestation bundles were made for xlsform_lint-0.1.1.tar.gz:
Publisher:
release.yml on imshahinul/xlsform-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsform_lint-0.1.1.tar.gz -
Subject digest:
03015a1301c9b0310dda210ba7e3e3f8e092aa70f254c9d7843fe68197bf995a - Sigstore transparency entry: 2721849298
- Sigstore integration time:
-
Permalink:
imshahinul/xlsform-lint@97c241e002120caf6600ac2d22ac642eabec32fa -
Branch / Tag:
refs/heads/main - Owner: https://github.com/imshahinul
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@97c241e002120caf6600ac2d22ac642eabec32fa -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file xlsform_lint-0.1.1-py3-none-any.whl.
File metadata
- Download URL: xlsform_lint-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fde48e9f5709b8b5d841407a2005cacd8c33b2dec1c372304d9bca41dd5b859
|
|
| MD5 |
0606187f2d86ef4d4b9ac334bef22b97
|
|
| BLAKE2b-256 |
72bb93b32b985bd158250ac213fc7520db93584c0db50e5c0ec874d42b381a0a
|
Provenance
The following attestation bundles were made for xlsform_lint-0.1.1-py3-none-any.whl:
Publisher:
release.yml on imshahinul/xlsform-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsform_lint-0.1.1-py3-none-any.whl -
Subject digest:
6fde48e9f5709b8b5d841407a2005cacd8c33b2dec1c372304d9bca41dd5b859 - Sigstore transparency entry: 2721849734
- Sigstore integration time:
-
Permalink:
imshahinul/xlsform-lint@97c241e002120caf6600ac2d22ac642eabec32fa -
Branch / Tag:
refs/heads/main - Owner: https://github.com/imshahinul
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@97c241e002120caf6600ac2d22ac642eabec32fa -
Trigger Event:
workflow_dispatch
-
Statement type: