Package for running linters, static type checkers and code analysis tools on python code in quarto (.qmd
) files.
By default, python code validation tools can't check embedded python code in Quarto files. This package fills that gap, enabling analysts and researchers to run python quality checks within Quarto documents.
Currently supported:
- Linters: pylint, flake8, pydoclint, pyflakes, ruff, vulture, and pycodestyle.
- Static type checkers: mypy, pyright, pyrefly, and pytype.
- Code analysis tools: radon.
You can install lintquarto with pip (from PyPI) or conda (from conda-forge).
pip install lintquarto
To include your selection of linters, install them as needed.
For a one-step installation that includes lintquarto and all supported linters and type checkers, use:
pip install lintquarto[all]
conda install conda-forge::lintquarto
With conda, only the main lintquarto tool is installed. If you want to use any linters or type checkers, you must install them separately (either with conda or pip, depending on availability).
lintquarto -l LINTER [LINTER ...] -p PATH [PATH ...] [-e EXCLUDE [EXCLUDE ...]] [-k]
- -l --linters LINTER [LINTER ...] - Linters to run.
- -p --paths PATH [PATH ...]- Quarto files and/or directories to lint.
- -e --exclude EXCLUDE [EXCLUDE ...] - Files and/or directories to exclude from linting.
- -k, --keep-temp - Keep the temporary
.py
files created during linting (for debugging).
Passing extra arguments directly to linters is not supported. Only .qmd
files are processed.
The linter used is interchangeable in these examples.
Lint all .qmd
files in the current directory (using pylint
):
lintquarto -l pylint -p .
Lint several specific files (using pylint
and flake8
):
lintquarto -l pylint flake8 -p file1.qmd file2.qmd
Keep temporary .py
files after linting (with pylint
)
lintquarto -l pylint -p . -k
Lint all files in current directory (using ruff
):
- Excluding folders
examples/
andignore/
, or- - Excluding a specific file
analysis/test.qmd
.
lintquarto -l ruff -p . -e examples,ignore
lintquarto -l ruff -p . -e analysis/test.qmd
Visit our website to find out more and see examples from running with each code validation tool.
Curious about contributing? Check out the contributing guidelines to learn how you can help. Every bit of help counts, and your contribution - no matter how minor - is highly valued.
Please cite the repository on GitHub, PyPI, conda and/or Zenodo:
Heather, A. (2025). lintquarto (v0.5.0). https://github.com/lintquarto/lintquarto.
Heather, A. (2025). lintquarto (v0.5.0). https://pypi.org/project/lintquarto/.
Heather, A. (2025). lintquarto (v0.5.0). https://anaconda.org/conda-forge/lintquarto.
Heather, A. (2025). lintquarto (v0.5.0). https://doi.org/10.5281/zenodo.15731161.
Citation instructions are also provided in CITATION.cff
.
This project was written and maintained by hand, while making occasional use of Perplexity. For transparency, this is acknowledged, but the project should not be considered AI‑generated.