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, js.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, JS module paths and the scripts bundles load, 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 holds custom modules written to trigger every rule, and a stand-in for Odoo core that they depend on, whose auto-install modules pin down which modules count as always installed; 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.9.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.9.0
File Size Uploaded Provenance Actions
odooscan-0.9.0.tar.gz 423.0 kB Without provenance Details for odooscan-0.9.0.tar.gz

Built distributions (wheels)

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

Total release size: 22.5 MB

Release files / odooscan-0.9.0.tar.gz

Download URL odooscan-0.9.0.tar.gz
Size 423.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d985e1a26c2a220846fdc87f8cd1f425c5a5e79f961ba708f70b3ad282d19058
BLAKE2b-256 checksum
How to use checksums
f9236b87fa3789758ad25557119152964e3b9b5c377f5aa4f7f2fc24529ad032
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

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

Download URL odooscan-0.9.0-py3-none-win_amd64.whl
Size 3.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
e086ba34ba327ea35b1ac084cb26cf22ab339b6571f66da2e5f85cf327dfc4c9
BLAKE2b-256 checksum
How to use checksums
868cd4f2123f6f0a410fd6c93923a64d3bfa7b0700d748665b7bcdb32f2633d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

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

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

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

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

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

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

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

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

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

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

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

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

Security for odooscan 0.9.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