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 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.

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.0a5

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

Built distributions (wheels)

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

Total release size: 22.8 MB

Release files / odoo_linter-0.1.0a5.tar.gz

Download URL odoo_linter-0.1.0a5.tar.gz
Size 161.6 kB
Tags Source
SHA-256 checksum
How to use checksums
565156d61bc677b5a04158486f6d79cce2355918dea68be601291ce9fe26ebd1
BLAKE2b-256 checksum
How to use checksums
db9ca285e528811854fbdb4948cc798db44f2d602ff8565b0f11de7a45d18601
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 8, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a5-py3-none-win_amd64.whl
Size 3.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
64bbe6d4ecb0cb221601eea70933037b9a284deaf8db6b9a418846123f73a7dd
BLAKE2b-256 checksum
How to use checksums
acd150a8738c29fd7be1addd729ca071752c88c63f2c167e9f6c60c1cbf315bd
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 8, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a5-py3-none-musllinux_1_2_x86_64.whl
Size 3.4 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
98ba139f76d768bd8d47f5208d3ade6237e46ef5cf15e1c015370d089e7bbbb5
BLAKE2b-256 checksum
How to use checksums
8298a8f81a436f70d7128d0f62e54de42fa297cfae196530f0e7bd67b7267e73
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 8, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a5-py3-none-musllinux_1_2_aarch64.whl
Size 3.2 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
8f7cde51f82f41a460465bda7e6cbfb044373aa2bcc68668692aadeb4e2a9bd7
BLAKE2b-256 checksum
How to use checksums
76f7157e2b2e27bfd117c5eb2fb43d5c88c4a10f495a4dac8108aa30c5bf3d88
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 8, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
52621e9b26c797a25772597e84a5c76c9986477e7719ea2ffc8c78a9ba3cb415
BLAKE2b-256 checksum
How to use checksums
4089ea554ee309ac6f792e19c6b4396dde04f19d1fb3b9dc4b8b42871c789bfe
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 8, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.1 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
f2878e6586f1012b8ae2466eb1499a15abb6b54d6f30f9fa7e8f14e103ccbecc
BLAKE2b-256 checksum
How to use checksums
d44a6b037c5819f2394d59b6819943fa51ec5f59e6c5272c0369ec8bbf67af8e
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 8, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a5-py3-none-macosx_11_0_arm64.whl
Size 3.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6ecfb7d8600c6f984241956456bdfb0f996a00535ce4d273ed11dc2697fdf726
BLAKE2b-256 checksum
How to use checksums
ad3eb8764b238a13c58e2f064d4f51bf33cf7799d7eb3c7d51f2ce52a4b4017e
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 8, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a5-py3-none-macosx_10_12_x86_64.whl
Size 3.2 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
4364a600ed679f0feef28dd0a68f9108338d40633b4bde755966aa4604d89fb8
BLAKE2b-256 checksum
How to use checksums
a0cb3155d76947eeebd5bcbd0cef547e3239c687adbfb2b8af591cd7a405a92d
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 8, 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