# initos/odoo-analyse architecture

> Architecture diagram of the GitHub repository initos/odoo-analyse, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/initos/odoo-analyse
- Repository: https://github.com/initos/odoo-analyse

## Overview

odoo-analyse is a command-line tool and Python library for inspecting Odoo addon modules, caching their analysis, filtering results, and producing reports and dependency/structure graphs. The main workflow is: provide addon paths or cached JSON, discover and parse modules, optionally query or estimate installation state and apply filters, then save analysis or render graphs. The graph separates orchestration, addon parsing, and output. Source excerpts are partial, so uncertain internal wiring is omitted; documented capabilities without sampled implementation are represented at the Odoo orchestration level.

Main entry points: [`src/odoo_analyse/odoo.py`](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/odoo.py) (Odoo coordinator), [`src/odoo_analyse/__main__.py`](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/__main__.py) (CLI), [`src/odoo_analyse/module.py`](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/module.py) (Module discovery), [`src/odoo_analyse/model.py`](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/model.py) (Python models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and orchestration"]
  node_cli["CLI<br/>[__main__.py]"]
  node_odoo["Odoo coordinator<br/>[odoo.py]"]
end

subgraph group_parsing["Addon analysis"]
  node_module["Module discovery<br/>[module.py]"]
  node_model["Python models<br/>[model.py]"]
  node_record["XML records and views<br/>[record.py]"]
  node_js["JavaScript modules<br/>[js_module.py]"]
  node_utils["Analysis utilities<br/>[utils.py]"]
end

subgraph group_results["Filtering and results"]
  node_module_data["Module inventory<br/>[module.py]"]
  node_filters["Filters and state<br/>[odoo.py]"]
  node_reports["Analysis and graphs<br/>[odoo.py]"]
end

subgraph group_integrations["External systems"]
  node_cache["JSON cache"]
  node_addons["Addon files"]
  node_database[("Odoo database")]
  node_graphviz["Graphviz renderer"]
  node_analysis_output["Report output"]
end

node_user(("CLI user"))

node_user -->|"runs"| node_cli
node_cli -->|"configures"| node_odoo
node_cli -->|"dispatches options"| node_odoo
node_cli -->|"selects paths"| node_addons
node_odoo -->|"discovers modules"| node_module
node_module -->|"reads files"| node_addons
node_module -->|"parses Python"| node_model
node_module -->|"parses XML"| node_record
node_module -->|"parses assets"| node_js
node_module -->|"measures language"| node_utils
node_module -->|"builds inventory"| node_module_data
node_cli -->|"loads cache"| node_odoo
node_odoo -->|"reads or writes JSON"| node_cache
node_cli -->|"requests state"| node_odoo
node_odoo -.->|"queries installation"| node_database
node_odoo -->|"filters or estimates"| node_filters
node_cli -->|"requests reports"| node_odoo
node_odoo -->|"builds analysis and graphs"| node_reports
node_reports -->|"writes report"| node_analysis_output
node_reports -.->|"renders graphs"| node_graphviz

click node_cli "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/__main__.py"
click node_odoo "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/odoo.py"
click node_module "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/module.py"
click node_model "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/model.py"
click node_record "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/record.py"
click node_js "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/js_module.py"
click node_utils "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/utils.py"
click node_module_data "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/module.py"
click node_filters "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/odoo.py"
click node_reports "https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/odoo.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_odoo,node_user toneBlue
class node_module,node_model,node_record,node_js,node_utils toneAmber
class node_module_data,node_filters,node_reports toneMint
class node_cache,node_addons,node_database,node_graphviz,node_analysis_output toneRose
```

## Components

### Entry and orchestration

- [CLI](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/__main__.py): `src/odoo_analyse/__main__.py`
- [Odoo coordinator](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/odoo.py): `src/odoo_analyse/odoo.py`

### Addon analysis

- [Module discovery](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/module.py): `src/odoo_analyse/module.py`
- [Python models](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/model.py): `src/odoo_analyse/model.py`
- [XML records and views](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/record.py): `src/odoo_analyse/record.py`
- [JavaScript modules](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/js_module.py): `src/odoo_analyse/js_module.py`
- [Analysis utilities](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/utils.py): `src/odoo_analyse/utils.py`

### Filtering and results

- [Module inventory](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/module.py): `src/odoo_analyse/module.py`
- [Filters and state](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/odoo.py): `src/odoo_analyse/odoo.py`
- [Analysis and graphs](https://github.com/initos/odoo-analyse/blob/master/src/odoo_analyse/odoo.py): `src/odoo_analyse/odoo.py`

### External systems

- **JSON cache**
- **Addon files**
- **Odoo database**
- **Graphviz renderer**
- **Report output**

### Other components

- **CLI user**

## Connections

- CLI user → CLI: runs
- CLI → Odoo coordinator: configures
- CLI → Odoo coordinator: dispatches options
- CLI → Addon files: selects paths
- Odoo coordinator → Module discovery: discovers modules
- Module discovery → Addon files: reads files
- Module discovery → Python models: parses Python
- Module discovery → XML records and views: parses XML
- Module discovery → JavaScript modules: parses assets
- Module discovery → Analysis utilities: measures language
- Module discovery → Module inventory: builds inventory
- CLI → Odoo coordinator: loads cache
- Odoo coordinator → JSON cache: reads or writes JSON
- CLI → Odoo coordinator: requests state
- Odoo coordinator → Odoo database: queries installation
- Odoo coordinator → Filters and state: filters or estimates
- CLI → Odoo coordinator: requests reports
- Odoo coordinator → Analysis and graphs: builds analysis and graphs
- Analysis and graphs → Report output: writes report
- Analysis and graphs → Graphviz renderer: renders graphs
