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.1 is available on PyPI. Version 0.2.0 is the qualified release candidate 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.2.0-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.2.0.tar.gz (57.0 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.2.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file xlsform_lint-0.2.0.tar.gz.

File metadata

  • Download URL: xlsform_lint-0.2.0.tar.gz
  • Upload date:
  • Size: 57.0 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.2.0.tar.gz
Algorithm Hash digest
SHA256 1746bdefd1d837d67a36ec928e28e2b0e3bae5a5faaf8c8c5d5870dd224852a0
MD5 41c4a9ae2c780132408efb83d3929e7f
BLAKE2b-256 e782058bc375a8755b9551aa6e48199e37327054d7d842250dc96f28754b708a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xlsform_lint-0.2.0.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.2.0-py3-none-any.whl.

File metadata

  • Download URL: xlsform_lint-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b9bdd5d25a030e9c5e783f275df4ecd8fcfb7c47072dff67cd2af3b592df266e
MD5 7b2557109528ad5ca225dacf54918fe7
BLAKE2b-256 3f7f5b5644ef80bf07f90b0325809e8c0317f98f60c06cd2d2890d98979a3a96

See more details on using hashes here.

Provenance

The following attestation bundles were made for xlsform_lint-0.2.0-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

This release

0.2.0 This release

2 files

0.1.1

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