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 is a small core (base, mail, web) 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.7.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.7.0
File Size Uploaded Provenance Actions
odooscan-0.7.0.tar.gz 126.6 kB Without provenance Details for odooscan-0.7.0.tar.gz

Built distributions (wheels)

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

Total release size: 18.3 MB

Release files / odooscan-0.7.0.tar.gz

Download URL odooscan-0.7.0.tar.gz
Size 126.6 kB
Tags Source
SHA-256 checksum
How to use checksums
aba8db7c3f4496cfed497cf92fb06eb2af0cd0fe65634366e6f2868f98c30f7f
BLAKE2b-256 checksum
How to use checksums
92f76d7c0ef0419d566a85e5a7e609de9ce9b344e945c6e9f9d6e588d598a6f5
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.7.0-py3-none-win_amd64.whl

Download URL odooscan-0.7.0-py3-none-win_amd64.whl
Size 2.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
d41fd791bca9ecf0e81d1b1b98877044871b3b0f5382b4e66c25bb2748a6b823
BLAKE2b-256 checksum
How to use checksums
621efdae30e3b86d5de936a393a1b3748beed5f7afe3d16a33c23b36c589c137
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.7.0-py3-none-musllinux_1_2_x86_64.whl

Download URL odooscan-0.7.0-py3-none-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
4376c869ffb7638786c90eb5cf063625c219555c740f4c9ed1e74853f9f27928
BLAKE2b-256 checksum
How to use checksums
41d0a093c217a3d8d4777494e3c20172f88de984f4c27a4b9355176a3741372d
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.7.0-py3-none-musllinux_1_2_aarch64.whl

Download URL odooscan-0.7.0-py3-none-musllinux_1_2_aarch64.whl
Size 2.6 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
5acfe3036979a299f18c9d0177ce443b5cbd81aabdbe170948c998ddfd0eecdd
BLAKE2b-256 checksum
How to use checksums
e3231dc36d62972c15d4f8c0e094b27a415ab485b6baa0a72ce36e71c30fa338
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.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL odooscan-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.7 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
550aa6a3d82a09f337c1cfc8852dc65f4b5d9dd1bd3c414692b312df61a210a9
BLAKE2b-256 checksum
How to use checksums
f8af1ff0521d3867efc3968713668dd264f56079ac6818e7943bfee9b7d40fc0
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.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL odooscan-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.5 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
c1c412646b01903d868f74ca7fde14da87ad9ce89c6904da3a6326b1fc10feb5
BLAKE2b-256 checksum
How to use checksums
4f145fe66ef0ce3eb02b6e8e5d27ca1632d4fbbc1147bcfcff7d55cfbaa5db41
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.7.0-py3-none-macosx_11_0_arm64.whl

Download URL odooscan-0.7.0-py3-none-macosx_11_0_arm64.whl
Size 2.5 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
42cc8d2691c9ec7a48e2dd564f3bdce179cb8e5ca963bbd53fdc098c959e7e02
BLAKE2b-256 checksum
How to use checksums
0d7843e76cdc72287569fd690729f80843bda29e47be7ae8e7a77d0a9aec0b1b
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.7.0-py3-none-macosx_10_12_x86_64.whl

Download URL odooscan-0.7.0-py3-none-macosx_10_12_x86_64.whl
Size 2.6 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
852b5870aed092ec935a775e003f4e32414b0c0b512caaec2b0760a987a38bb5
BLAKE2b-256 checksum
How to use checksums
079991b1bcc8c4a2d20b958d5d79d6118984cefcc044a748961b04817918755b
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.7.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