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
  • 🤖 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.0a7

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.0a7
File Size Uploaded
odoo_linter-0.1.0a7.tar.gz 231.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for odoo-linter 0.1.0a7
File
odoo_linter-0.1.0a7-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
odoo_linter-0.1.0a7-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
odoo_linter-0.1.0a7-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
odoo_linter-0.1.0a7-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.0a7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
odoo_linter-0.1.0a7-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
odoo_linter-0.1.0a7-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 25.2 MB

Release files / odoo_linter-0.1.0a7.tar.gz

Download URL odoo_linter-0.1.0a7.tar.gz
Size 231.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dd445bf19bf624765f494b39b11e09f74f4a2ca4a4b4acd011b15010341f6719
BLAKE2b-256 checksum
How to use checksums
41efbb28295491d9e0bf3178d12bcad5ad74a81c9f308212c9f700e6697ba319
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 9, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a7-py3-none-win_amd64.whl
Size 3.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
171cac2e2d1f6d551d973b6803761b7592706ffa205696870e4710ad7b6e92f0
BLAKE2b-256 checksum
How to use checksums
fdb6749f0caa77970c21457de6365f1e7756aaf26884a4254b24e506d88f918a
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 9, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a7-py3-none-musllinux_1_2_x86_64.whl
Size 3.8 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e1f6da30f5247b213befcf7c030d31b0c626784861887f0b2b6a8a7979b873e2
BLAKE2b-256 checksum
How to use checksums
fe89ad1ac50a0a35028b5275df06fbdd0ac0f424ad7bfa30f18dd218a5d65b5f
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 9, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a7-py3-none-musllinux_1_2_aarch64.whl
Size 3.5 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
0a1ba4786c71a8b94f632fb011163785c60281ee166f8970c2d0572cd1b9ba5d
BLAKE2b-256 checksum
How to use checksums
271ba5b3f6458b93631c4bfc2fa85a1863be2dff746004e5f0f4121ec47f779f
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 9, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.6 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
dd0cddd5cc11395a2dcc6bd2b17e9b7eb3862aff26f561ba5e536ac880ccc6a9
BLAKE2b-256 checksum
How to use checksums
1657d7808c9e5fd96ce4f858ba4d71b6d300296636a78792f873a28b4d93469d
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 9, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.4 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
b470e3620e5b56febcf538b7998ccbe8c92c51112873567a6d1dcd17e56f5e07
BLAKE2b-256 checksum
How to use checksums
960f6d06ab6d3f2b8368efeafc79da3ab16f445fb5977d0f41858339b832fbf8
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 9, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a7-py3-none-macosx_11_0_arm64.whl
Size 3.4 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
22189e61e8b8015774779bec08a5c5be1f069315060023990999d792a11a1326
BLAKE2b-256 checksum
How to use checksums
4dbd927b657ae53ab7029e77f711eab6c59660bf348347f480107e150b2cb44b
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 9, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a7-py3-none-macosx_10_12_x86_64.whl
Size 3.5 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f1ec1ff814406609e7a7ec0c4b31b3cd041ac475c27c47252a4cf21eae6086e8
BLAKE2b-256 checksum
How to use checksums
54dd0a34068103ec3786eb90d47a63fc190e2510c83bc5c98f6ac8e5cf95dd37
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 9, 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