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.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.8.0
File Size Uploaded Provenance Actions
odooscan-0.8.0.tar.gz 262.4 kB Without provenance Details for odooscan-0.8.0.tar.gz

Built distributions (wheels)

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

Total release size: 20.4 MB

Release files / odooscan-0.8.0.tar.gz

Download URL odooscan-0.8.0.tar.gz
Size 262.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d144fbcec3213c27a9d302f504690eda2fed4cfbd580cffd1b9e130603595dbe
BLAKE2b-256 checksum
How to use checksums
5f1ffdb724dcf07071992bc789c52e511f31a863751ef2b5183d722d587fe45e
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.8.0-py3-none-win_amd64.whl

Download URL odooscan-0.8.0-py3-none-win_amd64.whl
Size 3.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
7e2b01b482f6540d562729201bd8a63b0a2d2704dc7709e90eff45bf4ee94705
BLAKE2b-256 checksum
How to use checksums
03d8099680a6924d6bab237f2d4aae91b10983a36723dc911a58ae15ef94fa47
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.8.0-py3-none-musllinux_1_2_x86_64.whl

Download URL odooscan-0.8.0-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
b9363ec696601a12798a6516be6c0fd0dfa52f302fe5d88300768c3ed6482dec
BLAKE2b-256 checksum
How to use checksums
48537b54bca78019371c6dab4ebc095ba28cb52eaf9a50114fb7d31454bcb2da
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.8.0-py3-none-musllinux_1_2_aarch64.whl

Download URL odooscan-0.8.0-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
3b823a44f448967814149b8a1948aac721f3b4b7d23ad7277445014ddc0f533e
BLAKE2b-256 checksum
How to use checksums
bd3149e6b521638c17b7594898d0372a1a3a01a5d6f4b22024ba1e4d3affc615
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.8.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL odooscan-0.8.0-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
613723b5221c02f6a748a3d7aaa22fdd55459310b3aa30450b0e4ec4c9d99428
BLAKE2b-256 checksum
How to use checksums
39b94279d0420cf87b129a5878c88a72075615423c8afdd0ee1339bc1e869749
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.8.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL odooscan-0.8.0-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
a47fc393c73687639de57eed4f097dc7a3cba825b87aec2f74d17f6d5a4d5343
BLAKE2b-256 checksum
How to use checksums
2c331c37e774d63f0a0319223f7d2ea5b39ba9856c60ee6249bd0ac306f3be25
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.8.0-py3-none-macosx_11_0_arm64.whl

Download URL odooscan-0.8.0-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
1f8f6b6efb0daf0335886a639b99ddbc1d9723b955ad88f1ec79bbbc1485e437
BLAKE2b-256 checksum
How to use checksums
a00a7e9ff640c23302cb7a2f1273e577e1cb09e7e045b07d63e49a934dcb44b7
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.8.0-py3-none-macosx_10_12_x86_64.whl

Download URL odooscan-0.8.0-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
ebb981582425d69ffed66abc8557eb7c8b8fb23d6a067f0f723a994e21e9a644
BLAKE2b-256 checksum
How to use checksums
9dc6e4b0b86cf57200d69bd36b3dfa54218fc5d806e84ed6631a0783dfbfc346
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.8.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