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.8.1

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.8.1
File Size Uploaded Provenance Actions
odooscan-0.8.1.tar.gz 262.8 kB Without provenance Details for odooscan-0.8.1.tar.gz

Built distributions (wheels)

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

Total release size: 20.4 MB

Release files / odooscan-0.8.1.tar.gz

Download URL odooscan-0.8.1.tar.gz
Size 262.8 kB
Tags Source
SHA-256 checksum
How to use checksums
15e756b16873dae3723d1072bd2ff1d5aeb4b6fd69d66fdfefd8707287650da5
BLAKE2b-256 checksum
How to use checksums
9d231a85e6f966c872e06a0004426706b659e588167f4499cfceb603c4096c3d
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":"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.8.1-py3-none-win_amd64.whl

Download URL odooscan-0.8.1-py3-none-win_amd64.whl
Size 3.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
e4c995642047829b6fb424147e96177180d3782cb6bc0595a9204d7ef50d1d7f
BLAKE2b-256 checksum
How to use checksums
e3d40b9105f6d159961e3397dd88f25c8efc9aeb98855434bdd3c8575aaa4338
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":"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.8.1-py3-none-musllinux_1_2_x86_64.whl

Download URL odooscan-0.8.1-py3-none-musllinux_1_2_x86_64.whl
Size 3.0 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a4b8c4a455191861a20018668e6d85f2877c5cd6bd9881de538b638a2ba08e6d
BLAKE2b-256 checksum
How to use checksums
49b0809971fe627c8220e6037b942d4cde6f3b9bf3daa8f56e286f230b7df79b
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":"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.8.1-py3-none-musllinux_1_2_aarch64.whl

Download URL odooscan-0.8.1-py3-none-musllinux_1_2_aarch64.whl
Size 2.8 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
782e16a8e4f106ec533ebfc46add48f1682eae571b892cbdc076378d2730624b
BLAKE2b-256 checksum
How to use checksums
61bdf2138944bb078486ef57748c3cf6f945c01b3db86e3173f5351ed6c45cd3
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":"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.8.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL odooscan-0.8.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 3.0 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e3ee0c5522f5b0793682e986ad217f3d8c919bd38e9b877643b6864fcc2b1601
BLAKE2b-256 checksum
How to use checksums
419f1c8106da53bfebfb5b7693939ec6ea3349dc98320b70cf8340c15b4502fb
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":"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.8.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL odooscan-0.8.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 2.8 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
8eef98a98d7be1fe4533d69f427d1eceff1e8e8308b523526962b1493a023775
BLAKE2b-256 checksum
How to use checksums
6c19ce199e28a31e28705f08e5a952ba45ed909b379f48dd6f552f821a91060e
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":"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.8.1-py3-none-macosx_11_0_arm64.whl

Download URL odooscan-0.8.1-py3-none-macosx_11_0_arm64.whl
Size 2.7 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b51d1bee2af69ea6096c131e984b1d4d57926dd8227251fd6dd3b1aa81b39963
BLAKE2b-256 checksum
How to use checksums
a88381b938b961151b324916ccd0f3200c8398c44fc91c2de2187f8ed8cda207
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":"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.8.1-py3-none-macosx_10_12_x86_64.whl

Download URL odooscan-0.8.1-py3-none-macosx_10_12_x86_64.whl
Size 2.9 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
021db9de4402e51ef16ae19792f66072ef543920d9bf10277dd23b94a6f7dd39
BLAKE2b-256 checksum
How to use checksums
f59d1097aba75f42b89cf31ce4f2ff3c77e2e033b98354c1b162e1cb5df6e376
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":"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.8.1

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