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

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.0a15
File Size Uploaded Provenance
odoo_linter-0.1.0a15.tar.gz 361.7 kB With provenance Details

Built distributions (wheels)

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

Total release size: 32.9 MB

Release files / odoo_linter-0.1.0a15.tar.gz

Download URL odoo_linter-0.1.0a15.tar.gz
Size 361.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a6916ed833e25834e5294b9acc36e4ff8fe77a16790b186dfa7ac44e89e741b3
BLAKE2b-256 checksum
How to use checksums
6d53a5ee359a19ea1bab091eaea7ed9f74b32da0734d6040e45c078b6d2b9e7a
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 15, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a15-py3-none-win_amd64.whl
Size 4.9 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
ee985525a38fa54bdffb18608ed9e7b07001ea0a9eeb3882839cf8e28432c707
BLAKE2b-256 checksum
How to use checksums
0f0b68e09bd32aa730d36525e2b9fd4e501d92c029abe29f53288e7e56a59926
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 15, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a15-py3-none-musllinux_1_2_x86_64.whl
Size 4.9 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
8458809142a059737569e96e4a3c883d5159dc6ecc1a3d6d31df475d8f1f7558
BLAKE2b-256 checksum
How to use checksums
a65c39646f41bf564f2763e928964ad238ddda7a3aa064095c56ad747dd46f55
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 15, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a15-py3-none-musllinux_1_2_aarch64.whl
Size 4.5 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
15f590ebef36123f49f36ad4750eccc5896ca15696a349a2acaea0aa191f4e85
BLAKE2b-256 checksum
How to use checksums
7c9a0bf3c8ed82938f5ed086fd9d879155d6d23905f4deab3a740a192491fb8b
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 15, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 4.8 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a458db991cd02532efb11a1905dc170f47f265f8babc4fc159d23003b711f19a
BLAKE2b-256 checksum
How to use checksums
4eb13e080eacfd51f1b4dc973124d190fc1873847e1986b5d5b91b3b128d808b
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 15, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.5 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
8ec6f58022555dadd743697bb574ab40c4e36f4ce27947815adefc4e043071c0
BLAKE2b-256 checksum
How to use checksums
9548b95ba21c55af541b569dfb771fc1bb19138379b90d836e6829f546056fce
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 15, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a15-py3-none-macosx_11_0_arm64.whl
Size 4.4 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0ec2e59958f775f9e37e417dd31d0eadc33ad3d401c57b3906ba037b10323918
BLAKE2b-256 checksum
How to use checksums
915e492b8ce9d83aaf010534b1eba3b770c2e06379fde5b22c3db765b949b01a
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 15, 2026.

Transparency log

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

Download URL odoo_linter-0.1.0a15-py3-none-macosx_10_12_x86_64.whl
Size 4.6 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e56ddae340738c58de1937f8c4b1a1d4f291e79a41d3cf6ae725b91ab4f61784
BLAKE2b-256 checksum
How to use checksums
5e926cd5e50a711f67ea5afdd1be8d292283300b371455af7061a43c1e971690
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 15, 2026.

Transparency log

Security for odoo-linter 0.1.0a15

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.

Full provenance

All 8 files in this release have been uploaded with provenance metadata.

Select from 8 files

Attestation for odoo_linter-0.1.0a15.tar.gz

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

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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