Skip to main content

SciEqLint

PyPI Python versions CI Codecov Docs CodeQL OpenSSF Scorecard License: MIT

SciEqLint lints scientific Markdown, LaTeX, and notebooks for equation mistakes, broken references, MyST structure problems, and CI-ready diagnostics before they reach reviewers.

SciEqLint demo

python -m pip install scieqlint
scieqlint check README.md

Run it on Markdown/MyST docs before review to catch mistakes like this:

(a+b)^2 = a^2 + b^2

Diagnostic:

ALG001 algebraic identity does not hold
left - right = 2*a*b

It also catches supported broken equation references:

See {eq}`missing`.

Diagnostic:

REF002 equation reference target not found: missing

For generated or MyST-heavy scientific docs, initialize the packaged profile and run the same deterministic checks in CI:

scieqlint init --preset generated-myst --path scieqlint.generated-myst.toml
scieqlint check "docs/**/*.md" --config scieqlint.generated-myst.toml --format github

That profile enables stricter generated-document checks while keeping the scope source-based: math containers, supported equation and generic references, MyST anchors and directives, heading hierarchy, and parse-unknown diagnostics.

Local development

python -m pip install -e '.[dev]'
scieqlint --help
scieqlint check .
scieqlint check examples/bad/famous_bad.md --format github
scieqlint demo

Commands

scieqlint check [PATH_OR_GLOB...]
scieqlint graph [PATH_OR_GLOB...] --output scieqlint-graph.json
scieqlint init
scieqlint init --preset generated-myst
scieqlint init --preset mechanics
scieqlint presets list
scieqlint presets show generated-myst
scieqlint presets show mechanics
scieqlint demo
scieqlint explain CODE
python -m scieqlint --help

Deterministic output

SciEqLint is deterministic. Given the same files, config, and version, it must emit the same diagnostics in the same order. Supported math is checked exactly. Unsupported math is reported as unknown or skipped. The checker must not guess.

Supported files

SciEqLint checks .md, .markdown, .tex, and .ipynb documents. It supports Markdown/MyST display math, supported LaTeX containers, notebook Markdown cells, labels and references, MyST structure diagnostics, simple scalar algebra, text output, deterministic JSON output, SARIF, and JSON Schema validation. See docs/limitations.md for the exact scanner and grammar coverage.

Current release target: v1.1.0.

Pull request annotations

- name: Check equations
  run: scieqlint check "docs/**/*.md" --format github

Code scanning

permissions:
  contents: read
  security-events: write

steps:
  - uses: actions/checkout@v6
  - uses: Kuhai9801/scieqlint@v1.1.0
    with:
      args: check "docs/**/*.md" --format sarif --output scieqlint.sarif
  - uses: github/codeql-action/upload-sarif@v4
    with:
      sarif_file: scieqlint.sarif
      category: scieqlint-docs

For contributors

Start with these files:

  • SPEC.md for the product and engineering contract.
  • CONTRIBUTING.md for the local workflow.
  • GOOD_FIRST_ISSUES.md for scoped starter tasks.
  • ROADMAP.md for release order and cut rules.
  • docs/contributing/ for deeper guidance.

Keep PRs small and test the behavior they change.

License

MIT. See LICENSE.

Release files for scieqlint 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scieqlint 1.1.0
File Size Uploaded
scieqlint-1.1.0.tar.gz 309.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scieqlint 1.1.0
File Interpreter ABI Platform
scieqlint-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 414.8 kB

Release files / scieqlint-1.1.0.tar.gz

Download URL scieqlint-1.1.0.tar.gz
Size 309.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4b6ceddf23d535ca72b313836798c6952cbd5adccae25937bd2161d98ddea96b
BLAKE2b-256 checksum
How to use checksums
83c6b05114d4d9b5af3278160ea52370b52169b44cb046589ed6d8e636abdcdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Jun 15, 2026.

Transparency log

Release files / scieqlint-1.1.0-py3-none-any.whl

Download URL scieqlint-1.1.0-py3-none-any.whl
Size 105.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ad9d747311c5df76ddf22676d7928a49c1b9c2eec8ad3cca19f205f0a354a84
BLAKE2b-256 checksum
How to use checksums
f6ff85379bb9402b93c49622e363e68591fd54541b677c2517f4226068a1f8b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Jun 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

0.1.5

2 release 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