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, suppression and fixing, 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.10.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.10.0
File Size Uploaded Provenance Actions
odooscan-0.10.0.tar.gz 487.4 kB Without provenance Details for odooscan-0.10.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for odooscan 0.10.0
File Actions
odooscan-0.10.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for odooscan-0.10.0-py3-none-win_amd64.whl
odooscan-0.10.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details for odooscan-0.10.0-py3-none-musllinux_1_2_x86_64.whl
odooscan-0.10.0-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details for odooscan-0.10.0-py3-none-musllinux_1_2_aarch64.whl
odooscan-0.10.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.10.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
odooscan-0.10.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details for odooscan-0.10.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
odooscan-0.10.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for odooscan-0.10.0-py3-none-macosx_11_0_arm64.whl
odooscan-0.10.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for odooscan-0.10.0-py3-none-macosx_10_12_x86_64.whl

Total release size: 23.7 MB

Release files / odooscan-0.10.0.tar.gz

Download URL odooscan-0.10.0.tar.gz
Size 487.4 kB
Tags Source
SHA-256 checksum
How to use checksums
dc87db23449cc6152478e78ce05a0b7fdfeaeb6fccf97d8498bd87883817bd15
BLAKE2b-256 checksum
How to use checksums
d65338806a8dee69658a58f8fd3e0a678267377c1b05552f5fab912998056c6f
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.10.0-py3-none-win_amd64.whl

Download URL odooscan-0.10.0-py3-none-win_amd64.whl
Size 3.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
2d9589bfd590ae01a06191ff924c74a1aa435a960fc64a549e0bc017caaae190
BLAKE2b-256 checksum
How to use checksums
0c662aaf2fd28820ed4447f32509fff5befe341b869e216771294ce7f0252faf
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.10.0-py3-none-musllinux_1_2_x86_64.whl

Download URL odooscan-0.10.0-py3-none-musllinux_1_2_x86_64.whl
Size 3.5 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
fb8cb75ef5e7d4ccf5abfcfeb4e36f1ec99eea8bcc0ac02ec848b3647a4d60ff
BLAKE2b-256 checksum
How to use checksums
3bd541d247cf7a21b05725cee1c664a30359d0880bf30e7421a55f54848b11bd
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.10.0-py3-none-musllinux_1_2_aarch64.whl

Download URL odooscan-0.10.0-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
163adb14dd6239f267e06bb1baf4ba19291a3e2890662d818b199d60b1db6554
BLAKE2b-256 checksum
How to use checksums
3dee771400436467db2d54f79e80c5d98ecbb2b847dcd910d42a8b84d3b84bb1
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.10.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL odooscan-0.10.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 3.4 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
bdfeff4652456b9c8e7c344c49a98b7b6d5258e104680cde75fbba72a4821b75
BLAKE2b-256 checksum
How to use checksums
61e50c84d22e11bcfce6016733a119f6f9886704e1967db94650419fbb60f8e4
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.10.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL odooscan-0.10.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 3.2 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
b6ee94fa171402c221e72449a76bf4463c4e82c806297f2f685ac1a609742257
BLAKE2b-256 checksum
How to use checksums
a334b0094293ba94e9eb43181004d70bd044df41d9c51d3a695e7b0ec3f5d2a9
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.10.0-py3-none-macosx_11_0_arm64.whl

Download URL odooscan-0.10.0-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
2147e31269703b931c6e551dd929fb10f0a0f50acc9ea71bd5b388bc888a6074
BLAKE2b-256 checksum
How to use checksums
c61f3fd8207fa3a0b00441f9f792d9f0f26aef51ff5c351adae336eaf707fb58
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.10.0-py3-none-macosx_10_12_x86_64.whl

Download URL odooscan-0.10.0-py3-none-macosx_10_12_x86_64.whl
Size 3.3 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
25a3b63a48a3bd085fad0e5c3bc6edc196f88187e81ee9fa523e3d0f382d4a50
BLAKE2b-256 checksum
How to use checksums
a04a8fb90120af92cb2063d7782e95a1d71e55ebe97175e0e52e4827092281c5
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.10.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