Skip to main content

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

xlsform_lint-0.1.1.tar.gz (45.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xlsform_lint-0.1.1-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

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

Hashes for xlsform_lint-0.1.1.tar.gz
Algorithm Hash digest
SHA256 03015a1301c9b0310dda210ba7e3e3f8e092aa70f254c9d7843fe68197bf995a
MD5 da858f96c8f74cf29880cd2adfb5e05d
BLAKE2b-256 a7e93d9d84248ddf7a3cc4ef64c609d10c27026e4a78c45762d37fc3eb7ba0ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for xlsform_lint-0.1.1.tar.gz:

Publisher: release.yml on imshahinul/xlsform-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for xlsform_lint-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6fde48e9f5709b8b5d841407a2005cacd8c33b2dec1c372304d9bca41dd5b859
MD5 0606187f2d86ef4d4b9ac334bef22b97
BLAKE2b-256 72bb93b32b985bd158250ac213fc7520db93584c0db50e5c0ec874d42b381a0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xlsform_lint-0.1.1-py3-none-any.whl:

Publisher: release.yml on imshahinul/xlsform-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

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