odooscan
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.rsfinds modules, parses every file in parallel, and keeps per-file facts.python.rs,xml.rs,csvdata.rs,js.rsandmanifest.rsextract those facts and raise the single-file rules.
index.rsmerges the facts. It resolves fields through_inherit,_inheritsanddelegate=True, related comodels, view inheritance, JS module paths and the scripts bundles load, and the dependency scope of each module.checks.rsholds the cross-file rules.rules.rsis the registry: code, series range, severity and category.docs/rules/has a page per rule.crates/odooscanis 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.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| odooscan-0.6.0.tar.gz | 107.3 kB | Without provenance | Details for odooscan-0.6.0.tar.gz |
Built distributions (wheels)
Total release size: 17.9 MB
Release files / odooscan-0.6.0.tar.gz
| Download URL | odooscan-0.6.0.tar.gz |
|---|---|
| Size | 107.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4dda77a688d5ede0123a92436a9d87b875b8e5208eb0d0576ca98832ad8a9819
|
|
BLAKE2b-256 checksum How to use checksums |
84fec6737ccb2a944b9c7276784fbd88c3d44118ed8fadee69e89276913c154e
|
| 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.6.0-py3-none-win_amd64.whl
| Download URL | odooscan-0.6.0-py3-none-win_amd64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
770e9b11b47a61204bc27356d34a350ccadf3f2c1549011965043d0068f64f7a
|
|
BLAKE2b-256 checksum How to use checksums |
1bc38f725304a39001f99a5db56c8bf4c3a8101b32150467327f5d0c5da867d9
|
| 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.6.0-py3-none-musllinux_1_2_x86_64.whl
| Download URL | odooscan-0.6.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 |
1d30138e6bbc393df1469f0c3269bfc738320394f38739b71e795a6f0a266a17
|
|
BLAKE2b-256 checksum How to use checksums |
d33a77e7e5d55c7801108c0e1dc6bb2a0c2ae0142034744c8ad9a6e9a919152d
|
| 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.6.0-py3-none-musllinux_1_2_aarch64.whl
| Download URL | odooscan-0.6.0-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
5b9ee26a19b97e24c251878c4499167f6ce48dc8a36364e01df6cf535574dabc
|
|
BLAKE2b-256 checksum How to use checksums |
65a9a820df93e5b4dc5dd3e989b7cdcd77e43dad48c2da2c50ac8558bf3a3d93
|
| 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.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | odooscan-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
3944857e67b2b409e1e787195fad93d0c89f68f0e4a8945e4a1f207dd79b8ff8
|
|
BLAKE2b-256 checksum How to use checksums |
bfe039b6fef57badcd625618d240789341fca51e981d80306f12295428adb492
|
| 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.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | odooscan-0.6.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 |
088476186c1e1580862eb57c180cc6d384d1cbd9fa5a5f99e649591fcd13e2b3
|
|
BLAKE2b-256 checksum How to use checksums |
5ef05aab0f22f7c7d82f0cd52d50bdd00db8e2fb3626df11e1539f12ac46a6b4
|
| 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.6.0-py3-none-macosx_11_0_arm64.whl
| Download URL | odooscan-0.6.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
bdd00cfdfbc0c907732ee76e916b7b83e6124433c7cf5fbb55aecbbc7a20bd79
|
|
BLAKE2b-256 checksum How to use checksums |
b5533467e81826060947bca601be0b568ff834eba33d96f633007d2d5066c1b2
|
| 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.6.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | odooscan-0.6.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
c6ab185c04be02b9f5009e720601213ea967a3ccd1742bad055fba797335d98c
|
|
BLAKE2b-256 checksum How to use checksums |
9f71a793aa0e727f173c4946c0b9ca5f854e10f0a1d6deda250cfe63ec60f0ba
|
| 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.6.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.