Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

odoo-lint logo

odoo-lint

PyPI crates.io Tests OCA parity Documentation License: MIT

Blazing fast Rust-native linter for Odoo modules. The command is called odl.

It checks Python files, manifests, XML and CSV data files and translation (.po) files, with the checks of OCA's pylint-odoo, oca-checks-odoo-module and oca-checks-po: same names, same messages, same results on their own test suites. It also warns about files that do not belong in a module, such as packages or database dumps committed by accident.

Bar chart: linting OCA/sale-workflow takes 0.10s with odoo-lint and 25.8s with pylint-odoo

Linting all of OCA/sale-workflow 18.0, as OCA's pre-commit hook runs pylint-odoo. See benchmarks.

  • ⚡ 250x faster than pylint with pylint-odoo, and still 30x faster on a single core
  • ⚖️ Drop-in for pylint-odoo and OCA's pre-commit checks: same codes, names and messages, 95/95 checks matching on their own test suites (Python, manifests, XML, .po), and # pylint: disable= comments keep working
  • 🔧 Automatic fixes, safe and unsafe as in Ruff, for Python, manifests, XML and .po files (odl check --fix, --diff to preview)
  • ⬆️ Upgrade checks: leftovers of older Odoo versions, such as Bootstrap 4 classes that do nothing since Odoo 15.0, with fixes
  • 🌍 Translation checks that predict Odoo's loader: why Odoo logs "malformed po file", and why a translation does not show up
  • 📦 Installable with pip, uv or pipx: one binary in prebuilt wheels for Linux, macOS and Windows, without Python dependencies
  • 🛠️ Configured in pyproject.toml, including company-specific author rules
  • 📋 Output for CI: GitHub annotations, GitLab Code Quality, SARIF and JSON
  • ✍️ In your editor: a language server (odl server) with quick fixes, and extensions for VS Code and Zed
  • 🤖 For AI coding agents: an MCP server, and plugins for Claude Code, DeepSeek Harness and OpenCode that lint every file the agent edits
  • 🪝 Git hooks: pre-commit and hk

Installation

uv tool install odoo-linter   # or: pipx install odoo-linter
cargo install odoo-lint       # from crates.io

The PyPI package is called odoo-linter, because odoo-lint is too similar to an existing PyPI project. On crates.io it is odoo-lint.

Quick start

odl check path/to/addons   # lint a directory
odl rule                   # list all rules
odl rule C8101             # explain a rule
odl check --fix            # apply the safe fixes (--diff to preview)

Rules ported from pylint-odoo keep its codes, names and messages, and # pylint: disable= comments keep working. Company-specific rules are configured in your pyproject.toml:

[tool.odoo-lint]
target-version = "17.0"

[tool.odoo-lint.rules.manifest-required-author.mapping]
"acme_*" = "Acme Corp"

For AI coding agents there is an MCP server (odl mcp) and a post-edit hook, packaged as plugins for Claude Code (/plugin marketplace add bosd/odoo-lint), DeepSeek Harness and OpenCode.

See the documentation for all commands, configuration options and rules.

Development

uv sync --all-groups   # builds odl into .venv via maturin
uv run nox             # pre-commit, fmt, clippy, cargo tests, CLI tests, docs

See the development guide.

License

MIT

Metadata

Release files for odoo-linter 0.1.0a9

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

Source distribution (sdist)

Source distribution for odoo-linter 0.1.0a9
File Size Uploaded
odoo_linter-0.1.0a9.tar.gz 259.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for odoo-linter 0.1.0a9
File
odoo_linter-0.1.0a9-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
odoo_linter-0.1.0a9-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
odoo_linter-0.1.0a9-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
odoo_linter-0.1.0a9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
odoo_linter-0.1.0a9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
odoo_linter-0.1.0a9-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
odoo_linter-0.1.0a9-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 27.3 MB

Release files / odoo_linter-0.1.0a9.tar.gz

Download URL odoo_linter-0.1.0a9.tar.gz
Size 259.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b64d10169bd9d66e55bc06f4d6b815d633ea217c00bc9ca754726693d84b51e4
BLAKE2b-256 checksum
How to use checksums
bb0339e1bc615f757b36297d8ea711a701b32be15b75ee53d8f246052a0e13e1
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 Oct 10, 2026.

Transparency log

Release files / odoo_linter-0.1.0a9-py3-none-win_amd64.whl

Download URL odoo_linter-0.1.0a9-py3-none-win_amd64.whl
Size 4.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
39ed626966e731cf33fcc38ceba9f7b1f89278c5c3a847096cdc59fddd1dc160
BLAKE2b-256 checksum
How to use checksums
0d42240497f6b6fe4bf954a3132f5b60cf4c34e21c9f7974aa0d340a57fce8e8
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 Oct 10, 2026.

Transparency log

Release files / odoo_linter-0.1.0a9-py3-none-musllinux_1_2_x86_64.whl

Download URL odoo_linter-0.1.0a9-py3-none-musllinux_1_2_x86_64.whl
Size 4.1 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
9a8076e71f51afd2ed35268be22e33501a92e30f1a1d3c4f41e7f66d4afa7466
BLAKE2b-256 checksum
How to use checksums
028d35a642d4ea437f0eb51b27bd05beb9c9326d3b7886f9841dd073bb590cf9
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 Oct 10, 2026.

Transparency log

Release files / odoo_linter-0.1.0a9-py3-none-musllinux_1_2_aarch64.whl

Download URL odoo_linter-0.1.0a9-py3-none-musllinux_1_2_aarch64.whl
Size 3.8 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
1a70bd1b3926668ba8b7786981a28b12a426f3fad032f3a3e932bd1779d77ad1
BLAKE2b-256 checksum
How to use checksums
c1de69940c77c301625d47e80df5d3fdf438dd5469bb53799fd7888340be6923
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 Oct 10, 2026.

Transparency log

Release files / odoo_linter-0.1.0a9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL odoo_linter-0.1.0a9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 4.0 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
acc1596453fa8721255bbdeacc7df12b70e4c358d3b691e0bbe210e579d89381
BLAKE2b-256 checksum
How to use checksums
d447c431ea6190081f3f01384d601ecd7b5b853538e843254839fdcd0d5d27c3
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 Oct 10, 2026.

Transparency log

Release files / odoo_linter-0.1.0a9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL odoo_linter-0.1.0a9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.7 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
ecfda8813df78b5bb63430317a5b984c7b60d9ca4e1823da763f3cf00a3f4bfe
BLAKE2b-256 checksum
How to use checksums
8944b5baa544cd8eeba9ba33888e16530c29c2b68caf5b4da23e8e024f253937
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 Oct 10, 2026.

Transparency log

Release files / odoo_linter-0.1.0a9-py3-none-macosx_11_0_arm64.whl

Download URL odoo_linter-0.1.0a9-py3-none-macosx_11_0_arm64.whl
Size 3.6 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4a31fa5c603070d1c532da1127b2cf459dd067f30f09f399453a690ade9203dc
BLAKE2b-256 checksum
How to use checksums
b166a37e814e4815ea25a95c9d440ad5267a43b73124d7158b54df77a59c8f9e
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 Oct 10, 2026.

Transparency log

Release files / odoo_linter-0.1.0a9-py3-none-macosx_10_12_x86_64.whl

Download URL odoo_linter-0.1.0a9-py3-none-macosx_10_12_x86_64.whl
Size 3.8 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d71a15bb87b75556b87e51f1fa98d9c498751725e56be4fb52f6dc2d0d7f0254
BLAKE2b-256 checksum
How to use checksums
6bb923cf1558885c65029a49982e4da89f3bf4310e525923ea0ed9cf941ec732
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 Oct 10, 2026.

Transparency log
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