Skip to main content

odooscan

CI License: MIT prek Complexity: polyscan Conventional Commits

A quality and security scanner for Odoo modules, written in Rust. It parses Python with ruff's parser, and XML and CSV natively. It then builds one index of every model, field, method, XML id, view and access rule across the modules it is given, so rules can check what a single-file linter cannot. For example, it can tell you that a view names a field its model lacks, or that an XML id belongs to a module missing from depends.

uv tool install odooscan    # or: pip install odooscan
oscn check path/to/custom-addons --addons-path ~/repos/odoo/odoo,~/repos/odoo/enterprise

The wheels hold a prebuilt binary for Linux (glibc and musl), macOS and Windows; cargo build --release builds target/release/oscn anywhere else.

The documentation covers the options, configuration, CI, series, baselines and suppression, with a page per rule. oscn explain OD203 prints a rule's page in the terminal.

Layout

  • crates/odooscan_core/src/project.rs finds modules, parses every file in parallel, and keeps per-file facts.
    • python.rs, xml.rs, csvdata.rs and manifest.rs extract those facts and raise the single-file rules.
  • index.rs merges the facts. It resolves fields through _inherit, _inherits and delegate=True, related comodels, view inheritance, and the dependency scope of each module.
  • checks.rs holds the cross-file rules.
  • rules.rs is the registry: code, series range, severity and category. docs/rules/ has a page per rule.
  • crates/odooscan is the CLI.

Testing

cargo test runs a snapshot over crates/odooscan_core/tests/fixtures. That fixture is a small core (base, mail) plus custom modules written to trigger every rule; review changes with cargo insta review. The false-positive oracle is Odoo itself: a scan of core must report exactly the findings recorded in tests/oracle/, as CONTRIBUTING.md describes.

Metadata

Release files for odooscan 0.5.0

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

Source distribution (sdist)

Source distribution for odooscan 0.5.0
File Size Uploaded Provenance Actions
odooscan-0.5.0.tar.gz 83.9 kB Without provenance Details for odooscan-0.5.0.tar.gz

Built distributions (wheels)

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

Total release size: 15.5 MB

Release files / odooscan-0.5.0.tar.gz

Download URL odooscan-0.5.0.tar.gz
Size 83.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2b023f13691e83e9b27988163f51393acb6c77d38b28a700d23cdc5b71ed37b7
BLAKE2b-256 checksum
How to use checksums
38e7a6470b0611b32a9d01b196570ccfa69f1780518165443b6a7f8b3618c8dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / odooscan-0.5.0-py3-none-win_amd64.whl

Download URL odooscan-0.5.0-py3-none-win_amd64.whl
Size 2.2 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
4632ca85db9f6d1a9d736338786225e9079fd438cfa8ea842af2b30c7545118f
BLAKE2b-256 checksum
How to use checksums
51b93de8d8c5925cd9da7fd63aa5f2004ac63bcb02bcd89481bf708de7ada794
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / odooscan-0.5.0-py3-none-musllinux_1_2_x86_64.whl

Download URL odooscan-0.5.0-py3-none-musllinux_1_2_x86_64.whl
Size 2.3 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
3f7f0727da5bc88b91c90a72afb9c819bd7e2cc4666d03aca21da78558103072
BLAKE2b-256 checksum
How to use checksums
7d0aab553ac033778c2fd8f6216364ccaeb1ddb964502ffd2dd52365c9f41d4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / odooscan-0.5.0-py3-none-musllinux_1_2_aarch64.whl

Download URL odooscan-0.5.0-py3-none-musllinux_1_2_aarch64.whl
Size 2.2 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
e3a05259e7d7d82ae57c32515448746c21531bbca949d3a027177e6599fed47d
BLAKE2b-256 checksum
How to use checksums
2a017637f01467e21bc56fbadb948c575bb60bfa681da110a7507483a752e429
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / odooscan-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL odooscan-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.3 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a3bff08a7fd3da1544c379f211a2efc0ab064288ccea07f5eb7f9bc575956b2f
BLAKE2b-256 checksum
How to use checksums
8f2d0c38370b543b0fac162a0f58ed25b4f7e493f81b927a3414722d086a294b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / odooscan-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL odooscan-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.1 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
2c0e8c786b99c9510d0d934bd0f246903153f92b4db33e4b5b1fbd738ca17a9a
BLAKE2b-256 checksum
How to use checksums
ce8f0b7d1057aa9e35bc9d554a21b801983ccb1111c58a2f7b923b61c7adaa17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / odooscan-0.5.0-py3-none-macosx_11_0_arm64.whl

Download URL odooscan-0.5.0-py3-none-macosx_11_0_arm64.whl
Size 2.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4fd8f3b45493d74f36496c7083d4e6988659f4dc954654ff888335bbde34cc0a
BLAKE2b-256 checksum
How to use checksums
699e19ed2ecf49589c85aceb6aef5c7a1beecefda773fa4f5fbbc51b75cbac79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / odooscan-0.5.0-py3-none-macosx_10_12_x86_64.whl

Download URL odooscan-0.5.0-py3-none-macosx_10_12_x86_64.whl
Size 2.2 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
afcddbd27aa5ef6d0489ed703bea1d714fbfd7e20cce1a437a05cc1210fc4450
BLAKE2b-256 checksum
How to use checksums
61ceaf3110686fa2f2396229a5de7cf32c104a20065b0a1ce6d691da24e3daaa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for odooscan 0.5.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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