Typed API Models

oduit.api_models contains the typed dataclasses returned by the preferred high-level Python inspection API.

Typed public Python API models for high-level inspection workflows.

class oduit.api_models.DictModel[source]

Bases: object

Mixin that exposes a stable to_dict() helper.

to_dict() dict[str, Any][source]

Return the dataclass as a plain dictionary.

__init__() None
class oduit.api_models.EnvironmentSource(name: str | None = None, source: str | None = None, config_path: str | None = None)[source]

Bases: DictModel

Source metadata for an inspected environment.

name: str | None = None
source: str | None = None
config_path: str | None = None
__init__(name: str | None = None, source: str | None = None, config_path: str | None = None) None
class oduit.api_models.BinaryProbe(value: str | None = None, resolved_path: str | None = None, exists: bool = False, executable: bool = False, configured: bool = False, auto_detected: bool = False)[source]

Bases: DictModel

Resolved binary metadata for an environment.

value: str | None = None
resolved_path: str | None = None
exists: bool = False
executable: bool = False
configured: bool = False
auto_detected: bool = False
__init__(value: str | None = None, resolved_path: str | None = None, exists: bool = False, executable: bool = False, configured: bool = False, auto_detected: bool = False) None
class oduit.api_models.AddonsPathStatus(configured: list[str] = <factory>, base: list[str] = <factory>, all: list[str] = <factory>, valid: list[str] = <factory>, invalid: list[str] = <factory>)[source]

Bases: DictModel

Resolved addon path information.

configured: list[str]
base: list[str]
all: list[str]
valid: list[str]
invalid: list[str]
__init__(configured: list[str] = <factory>, base: list[str] = <factory>, all: list[str] = <factory>, valid: list[str] = <factory>, invalid: list[str] = <factory>) None
class oduit.api_models.OdooVersionInfo(version: str | None = None, series: str | None = None)[source]

Bases: DictModel

Resolved Odoo version and series information.

version: str | None = None
series: str | None = None
__init__(version: str | None = None, series: str | None = None) None
class oduit.api_models.DatabaseSummary(db_name: str | None = None, db_host: str | None = None, db_user: str | None = None)[source]

Bases: DictModel

Safe database configuration summary.

db_name: str | None = None
db_host: str | None = None
db_user: str | None = None
__init__(db_name: str | None = None, db_host: str | None = None, db_user: str | None = None) None
class oduit.api_models.EnvironmentContext(environment: ~oduit.api_models.EnvironmentSource, resolved_binaries: dict[str, ~oduit.api_models.BinaryProbe], addons_paths: ~oduit.api_models.AddonsPathStatus, odoo: ~oduit.api_models.OdooVersionInfo, database: ~oduit.api_models.DatabaseSummary, duplicate_modules: dict[str, list[str]] = <factory>, available_module_count: int = 0, invalid_addon_paths: list[str] = <factory>, missing_critical_config: list[str] = <factory>, doctor_summary: dict[str, int] = <factory>, doctor_checks: list[dict[str, ~typing.Any]] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Typed environment snapshot for planning and inspection.

environment: EnvironmentSource
resolved_binaries: dict[str, BinaryProbe]
addons_paths: AddonsPathStatus
odoo: OdooVersionInfo
database: DatabaseSummary
duplicate_modules: dict[str, list[str]]
available_module_count: int = 0
invalid_addon_paths: list[str]
missing_critical_config: list[str]
doctor_summary: dict[str, int]
doctor_checks: list[dict[str, Any]]
warnings: list[str]
remediation: list[str]
__init__(environment: ~oduit.api_models.EnvironmentSource, resolved_binaries: dict[str, ~oduit.api_models.BinaryProbe], addons_paths: ~oduit.api_models.AddonsPathStatus, odoo: ~oduit.api_models.OdooVersionInfo, database: ~oduit.api_models.DatabaseSummary, duplicate_modules: dict[str, list[str]] = <factory>, available_module_count: int = 0, invalid_addon_paths: list[str] = <factory>, missing_critical_config: list[str] = <factory>, doctor_summary: dict[str, int] = <factory>, doctor_checks: list[dict[str, ~typing.Any]] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.AddonInspection(module: str, exists: bool, module_path: str | None, addon_type: str, version_display: str, manifest: dict[str, ~typing.Any], manifest_fields: list[str], direct_dependencies: list[str] = <factory>, reverse_dependencies: list[str] = <factory>, reverse_dependency_count: int = 0, install_order_slice: list[str] = <factory>, install_order_available: bool = False, dependency_cycle: list[str] = <factory>, missing_dependencies: list[str] = <factory>, impacted_modules: list[str] = <factory>, series: str | None = None, python_dependencies: list[str] = <factory>, binary_dependencies: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Typed addon inspection payload.

module: str
exists: bool
module_path: str | None
addon_type: str
version_display: str
manifest: dict[str, Any]
manifest_fields: list[str]
direct_dependencies: list[str]
reverse_dependencies: list[str]
reverse_dependency_count: int = 0
install_order_slice: list[str]
install_order_available: bool = False
dependency_cycle: list[str]
missing_dependencies: list[str]
impacted_modules: list[str]
series: str | None = None
python_dependencies: list[str]
binary_dependencies: list[str]
warnings: list[str]
remediation: list[str]
__init__(module: str, exists: bool, module_path: str | None, addon_type: str, version_display: str, manifest: dict[str, ~typing.Any], manifest_fields: list[str], direct_dependencies: list[str] = <factory>, reverse_dependencies: list[str] = <factory>, reverse_dependency_count: int = 0, install_order_slice: list[str] = <factory>, install_order_available: bool = False, dependency_cycle: list[str] = <factory>, missing_dependencies: list[str] = <factory>, impacted_modules: list[str] = <factory>, series: str | None = None, python_dependencies: list[str] = <factory>, binary_dependencies: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.AddonInstallState(success: bool, operation: str, module: str, record_found: bool = False, state: str = 'uninstalled', installed: bool = False, database: str | None = None, error: str | None = None, error_type: str | None = None)[source]

Bases: DictModel

Typed runtime install-state lookup result for one addon.

success: bool
operation: str
module: str
record_found: bool = False
state: str = 'uninstalled'
installed: bool = False
database: str | None = None
error: str | None = None
error_type: str | None = None
__init__(success: bool, operation: str, module: str, record_found: bool = False, state: str = 'uninstalled', installed: bool = False, database: str | None = None, error: str | None = None, error_type: str | None = None) None
class oduit.api_models.InstalledAddonRecord(module: str, state: str, installed: bool, shortdesc: str | None = None, application: bool | None = None, auto_install: bool | None = None)[source]

Bases: DictModel

One runtime addon record read from ir.module.module.

module: str
state: str
installed: bool
shortdesc: str | None = None
application: bool | None = None
auto_install: bool | None = None
__init__(module: str, state: str, installed: bool, shortdesc: str | None = None, application: bool | None = None, auto_install: bool | None = None) None
class oduit.api_models.InstalledAddonInventory(success: bool, operation: str, addons: list[InstalledAddonRecord] = <factory>, total: int = 0, states: list[str] = <factory>, modules_filter: list[str] = <factory>, database: str | None = None, error: str | None = None, error_type: str | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Typed runtime addon inventory for one environment.

success: bool
operation: str
addons: list[InstalledAddonRecord]
total: int = 0
states: list[str]
modules_filter: list[str]
database: str | None = None
error: str | None = None
error_type: str | None = None
warnings: list[str]
remediation: list[str]
__init__(success: bool, operation: str, addons: list[InstalledAddonRecord] = <factory>, total: int = 0, states: list[str] = <factory>, modules_filter: list[str] = <factory>, database: str | None = None, error: str | None = None, error_type: str | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.UpdatePlan(module: str, exists: bool, impact_set: list[str] = <factory>, impact_count: int = 0, missing_dependencies: list[str] = <factory>, duplicate_name_risk: bool = False, duplicate_module_locations: list[str] = <factory>, dependency_cycle: list[str] = <factory>, cycle_risk: bool = False, ordering_constraints: list[str] = <factory>, recommended_sequence: list[str] = <factory>, backup_advised: bool = False, write_protect_db: bool = False, agent_write_protect_db: bool = False, needs_mutation_flag: bool = False, agent_needs_mutation_flag: bool = False, human_runtime_db_mutation_policy: str = 'allow', human_runtime_db_mutation_allowed: bool = True, human_runtime_db_mutation_requires_flag: bool = False, agent_runtime_db_mutation_policy: str = 'allow', agent_runtime_db_mutation_allowed: bool = True, agent_runtime_db_mutation_requires_flag: bool = False, risk_score: int = 0, risk_level: str = 'low', risk_factors: list[str] = <factory>, verification_steps: list[str] = <factory>, inspection: AddonInspection | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Typed read-only update planning payload.

module: str
exists: bool
impact_set: list[str]
impact_count: int = 0
missing_dependencies: list[str]
duplicate_name_risk: bool = False
duplicate_module_locations: list[str]
dependency_cycle: list[str]
cycle_risk: bool = False
ordering_constraints: list[str]
recommended_sequence: list[str]
backup_advised: bool = False
write_protect_db: bool = False
agent_write_protect_db: bool = False
needs_mutation_flag: bool = False
agent_needs_mutation_flag: bool = False
human_runtime_db_mutation_policy: str = 'allow'
human_runtime_db_mutation_allowed: bool = True
human_runtime_db_mutation_requires_flag: bool = False
agent_runtime_db_mutation_policy: str = 'allow'
agent_runtime_db_mutation_allowed: bool = True
agent_runtime_db_mutation_requires_flag: bool = False
risk_score: int = 0
risk_level: str = 'low'
risk_factors: list[str]
verification_steps: list[str]
inspection: AddonInspection | None = None
warnings: list[str]
remediation: list[str]
__init__(module: str, exists: bool, impact_set: list[str] = <factory>, impact_count: int = 0, missing_dependencies: list[str] = <factory>, duplicate_name_risk: bool = False, duplicate_module_locations: list[str] = <factory>, dependency_cycle: list[str] = <factory>, cycle_risk: bool = False, ordering_constraints: list[str] = <factory>, recommended_sequence: list[str] = <factory>, backup_advised: bool = False, write_protect_db: bool = False, agent_write_protect_db: bool = False, needs_mutation_flag: bool = False, agent_needs_mutation_flag: bool = False, human_runtime_db_mutation_policy: str = 'allow', human_runtime_db_mutation_allowed: bool = True, human_runtime_db_mutation_requires_flag: bool = False, agent_runtime_db_mutation_policy: str = 'allow', agent_runtime_db_mutation_allowed: bool = True, agent_runtime_db_mutation_requires_flag: bool = False, risk_score: int = 0, risk_level: str = 'low', risk_factors: list[str] = <factory>, verification_steps: list[str] = <factory>, inspection: AddonInspection | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.QueryModelResult(success: bool, operation: str, model: str, domain: list[Any] = <factory>, fields: list[str] | None = None, limit: int = 0, count: int = 0, total_count: int | None = None, limited: bool = False, ids: list[int] = <factory>, records: list[dict[str, ~typing.Any]]=<factory>, database: str | None = None, error: str | None = None, error_type: str | None = None)[source]

Bases: DictModel

Typed wrapper for OdooQuery.query_model() results.

success: bool
operation: str
model: str
domain: list[Any]
fields: list[str] | None = None
limit: int = 0
count: int = 0
total_count: int | None = None
limited: bool = False
ids: list[int]
records: list[dict[str, Any]]
database: str | None = None
error: str | None = None
error_type: str | None = None
classmethod from_dict(result: dict[str, Any]) QueryModelResult[source]

Create a typed result from a raw OdooQuery dictionary.

__init__(success: bool, operation: str, model: str, domain: list[Any] = <factory>, fields: list[str] | None = None, limit: int = 0, count: int = 0, total_count: int | None = None, limited: bool = False, ids: list[int] = <factory>, records: list[dict[str, ~typing.Any]]=<factory>, database: str | None = None, error: str | None = None, error_type: str | None = None) None
class oduit.api_models.RecordReadResult(success: bool, operation: str, model: str, record_id: int, found: bool, record: dict[str, Any] | None, fields: list[str] | None = None, database: str | None = None, error: str | None = None, error_type: str | None = None)[source]

Bases: DictModel

Typed wrapper for OdooQuery.read_record() results.

success: bool
operation: str
model: str
record_id: int
found: bool
record: dict[str, Any] | None
fields: list[str] | None = None
database: str | None = None
error: str | None = None
error_type: str | None = None
classmethod from_dict(result: dict[str, Any]) RecordReadResult[source]

Create a typed result from a raw OdooQuery dictionary.

__init__(success: bool, operation: str, model: str, record_id: int, found: bool, record: dict[str, Any] | None, fields: list[str] | None = None, database: str | None = None, error: str | None = None, error_type: str | None = None) None
class oduit.api_models.SearchCountResult(success: bool, operation: str, model: str, domain: list[Any] = <factory>, count: int = 0, database: str | None = None, error: str | None = None, error_type: str | None = None)[source]

Bases: DictModel

Typed wrapper for OdooQuery.search_count() results.

success: bool
operation: str
model: str
domain: list[Any]
count: int = 0
database: str | None = None
error: str | None = None
error_type: str | None = None
classmethod from_dict(result: dict[str, Any]) SearchCountResult[source]

Create a typed result from a raw OdooQuery dictionary.

__init__(success: bool, operation: str, model: str, domain: list[Any] = <factory>, count: int = 0, database: str | None = None, error: str | None = None, error_type: str | None = None) None
class oduit.api_models.ModelFieldsResult(success: bool, operation: str, model: str, attributes: list[str] | None = None, module: str | None = None, field_names: list[str] = <factory>, field_definitions: dict[str, dict[str, ~typing.Any]]=<factory>, database: str | None = None, error: str | None = None, error_type: str | None = None)[source]

Bases: DictModel

Typed wrapper for OdooQuery.get_model_fields() results.

success: bool
operation: str
model: str
attributes: list[str] | None = None
module: str | None = None
field_names: list[str]
field_definitions: dict[str, dict[str, Any]]
database: str | None = None
error: str | None = None
error_type: str | None = None
classmethod from_dict(result: dict[str, Any]) ModelFieldsResult[source]

Create a typed result from a raw OdooQuery dictionary.

__init__(success: bool, operation: str, model: str, attributes: list[str] | None = None, module: str | None = None, field_names: list[str] = <factory>, field_definitions: dict[str, dict[str, ~typing.Any]]=<factory>, database: str | None = None, error: str | None = None, error_type: str | None = None) None
class oduit.api_models.ModelViewRecord(id: int, name: str, view_type: str, mode: str | None = None, priority: int | None = None, inherit_id: list[Any] | None = None, key: str | None = None, active: bool | None = None, arch_db: str | None = None)[source]

Bases: DictModel

One database-backed view record for a model.

id: int
name: str
view_type: str
mode: str | None = None
priority: int | None = None
inherit_id: list[Any] | None = None
key: str | None = None
active: bool | None = None
arch_db: str | None = None
__init__(id: int, name: str, view_type: str, mode: str | None = None, priority: int | None = None, inherit_id: list[Any] | None = None, key: str | None = None, active: bool | None = None, arch_db: str | None = None) None
class oduit.api_models.ModelViewInventory(model: str, requested_types: list[str] = <factory>, primary_views: list[ModelViewRecord] = <factory>, extension_views: list[ModelViewRecord] = <factory>, view_counts: dict[str, int]=<factory>, database: str | None = None, error: str | None = None, error_type: str | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Database-backed view inventory for a model.

model: str
requested_types: list[str]
primary_views: list[ModelViewRecord]
extension_views: list[ModelViewRecord]
view_counts: dict[str, int]
database: str | None = None
error: str | None = None
error_type: str | None = None
warnings: list[str]
remediation: list[str]
__init__(model: str, requested_types: list[str] = <factory>, primary_views: list[ModelViewRecord] = <factory>, extension_views: list[ModelViewRecord] = <factory>, view_counts: dict[str, int]=<factory>, database: str | None = None, error: str | None = None, error_type: str | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.DocumentationRuntimeInventory(models: dict[str, ~oduit.api_models.ModelFieldsResult]=<factory>, views: dict[str, ~oduit.api_models.ModelViewInventory]=<factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Batched runtime metadata for many models in documentation flows.

models: dict[str, ModelFieldsResult]
views: dict[str, ModelViewInventory]
warnings: list[str]
remediation: list[str]
__init__(models: dict[str, ~oduit.api_models.ModelFieldsResult]=<factory>, views: dict[str, ~oduit.api_models.ModelViewInventory]=<factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.SourceEvidence(kind: str, message: str, path: str, line_hint: int | None = None)[source]

Bases: DictModel

Machine-readable evidence attached to source-location candidates.

kind: str
message: str
path: str
line_hint: int | None = None
__init__(kind: str, message: str, path: str, line_hint: int | None = None) None
class oduit.api_models.ModelSourceCandidate(path: str, class_name: str, match_kind: str, declared_model: str, confidence: float, match_strength: str = 'confirmed', evidence: list[SourceEvidence] = <factory>, line_hint: int | None = None, reason: str | None = None)[source]

Bases: DictModel

Ranked model source candidate for static source localization.

path: str
class_name: str
match_kind: str
declared_model: str
confidence: float
match_strength: str = 'confirmed'
evidence: list[SourceEvidence]
line_hint: int | None = None
reason: str | None = None
__init__(path: str, class_name: str, match_kind: str, declared_model: str, confidence: float, match_strength: str = 'confirmed', evidence: list[SourceEvidence] = <factory>, line_hint: int | None = None, reason: str | None = None) None
class oduit.api_models.ModelSourceLocation(model: str, module: str, addon_root: str, resolution: str = 'not_found', ambiguous: bool = False, ambiguity_reason: str | None = None, candidates: list[ModelSourceCandidate] = <factory>, scanned_python_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Static source localization result for one addon/model pair.

model: str
module: str
addon_root: str
resolution: str = 'not_found'
ambiguous: bool = False
ambiguity_reason: str | None = None
candidates: list[ModelSourceCandidate]
scanned_python_files: list[str]
warnings: list[str]
remediation: list[str]
__init__(model: str, module: str, addon_root: str, resolution: str = 'not_found', ambiguous: bool = False, ambiguity_reason: str | None = None, candidates: list[ModelSourceCandidate] = <factory>, scanned_python_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.FieldSourceCandidate(path: str, class_name: str, field_name: str, match_kind: str, declared_model: str, confidence: float, match_strength: str = 'confirmed', evidence: list[SourceEvidence] = <factory>, line_hint: int | None = None, reason: str | None = None)[source]

Bases: DictModel

Ranked field source candidate for static source localization.

path: str
class_name: str
field_name: str
match_kind: str
declared_model: str
confidence: float
match_strength: str = 'confirmed'
evidence: list[SourceEvidence]
line_hint: int | None = None
reason: str | None = None
__init__(path: str, class_name: str, field_name: str, match_kind: str, declared_model: str, confidence: float, match_strength: str = 'confirmed', evidence: list[SourceEvidence] = <factory>, line_hint: int | None = None, reason: str | None = None) None
class oduit.api_models.FieldSourceLocation(model: str, field: str, module: str, addon_root: str, exists: bool, resolution: str = 'not_found', ambiguous: bool = False, ambiguity_reason: str | None = None, source_exists: bool = False, runtime_exists: bool | None = None, runtime_only: bool = False, runtime_source_modules: list[str] = <factory>, candidates: list[FieldSourceCandidate] = <factory>, insertion_candidate: ModelSourceCandidate | None = None, insertion_line_range: list[int] | None = None, insertion_reason: str | None = None, insertion_confidence: float | None = None, related_files: list[str] = <factory>, scanned_python_files: list[str] = <factory>, rationale: str | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Static source localization result for one addon/model/field target.

model: str
field: str
module: str
addon_root: str
exists: bool
resolution: str = 'not_found'
ambiguous: bool = False
ambiguity_reason: str | None = None
source_exists: bool = False
runtime_exists: bool | None = None
runtime_only: bool = False
runtime_source_modules: list[str]
candidates: list[FieldSourceCandidate]
insertion_candidate: ModelSourceCandidate | None = None
insertion_line_range: list[int] | None = None
insertion_reason: str | None = None
insertion_confidence: float | None = None
related_files: list[str]
scanned_python_files: list[str]
rationale: str | None = None
warnings: list[str]
remediation: list[str]
__init__(model: str, field: str, module: str, addon_root: str, exists: bool, resolution: str = 'not_found', ambiguous: bool = False, ambiguity_reason: str | None = None, source_exists: bool = False, runtime_exists: bool | None = None, runtime_only: bool = False, runtime_source_modules: list[str] = <factory>, candidates: list[FieldSourceCandidate] = <factory>, insertion_candidate: ModelSourceCandidate | None = None, insertion_line_range: list[int] | None = None, insertion_reason: str | None = None, insertion_confidence: float | None = None, related_files: list[str] = <factory>, scanned_python_files: list[str] = <factory>, rationale: str | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.AddonTestFile(path: str, test_type: str, references_model: bool = False, references_field: bool = False, confidence: float = 0.0, ranking_signals: list[str] = <factory>, related_paths: list[str] = <factory>)[source]

Bases: DictModel

Ranked addon test file entry.

path: str
test_type: str
references_model: bool = False
references_field: bool = False
confidence: float = 0.0
ranking_signals: list[str]
related_paths: list[str]
__init__(path: str, test_type: str, references_model: bool = False, references_field: bool = False, confidence: float = 0.0, ranking_signals: list[str] = <factory>, related_paths: list[str] = <factory>) None
class oduit.api_models.AddonTestInventory(module: str, addon_root: str, model: str | None = None, field: str | None = None, tests: list[AddonTestFile] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Static addon test inventory for coding-agent test selection.

module: str
addon_root: str
model: str | None = None
field: str | None = None
tests: list[AddonTestFile]
warnings: list[str]
remediation: list[str]
__init__(module: str, addon_root: str, model: str | None = None, field: str | None = None, tests: list[AddonTestFile] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.AddonInfo(module: str, module_path: str | None, addon_type: str, version_display: str, name: str = '', summary: str = '', description: str = '', category: str = '', author: str = '', website: str = '', license: str = '', external_dependencies: dict[str, list[str]]=<factory>, depends: list[str] = <factory>, reverse_dependencies: list[str] = <factory>, reverse_dependency_count: int = 0, missing_dependencies: list[str] = <factory>, installable: bool = False, auto_install: bool = False, models: list[str] = <factory>, inherit_models: list[str] = <factory>, model_count: int = 0, test_cases: list[AddonTestFile] = <factory>, test_count: int = 0, languages: list[str] = <factory>, installed_state: AddonInstallState | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Combined static and runtime addon summary for onboarding workflows.

module: str
module_path: str | None
addon_type: str
version_display: str
name: str = ''
summary: str = ''
description: str = ''
category: str = ''
author: str = ''
website: str = ''
license: str = ''
external_dependencies: dict[str, list[str]]
depends: list[str]
reverse_dependencies: list[str]
reverse_dependency_count: int = 0
missing_dependencies: list[str]
installable: bool = False
auto_install: bool = False
models: list[str]
inherit_models: list[str]
model_count: int = 0
test_cases: list[AddonTestFile]
test_count: int = 0
languages: list[str]
installed_state: AddonInstallState | None = None
warnings: list[str]
remediation: list[str]
__init__(module: str, module_path: str | None, addon_type: str, version_display: str, name: str = '', summary: str = '', description: str = '', category: str = '', author: str = '', website: str = '', license: str = '', external_dependencies: dict[str, list[str]]=<factory>, depends: list[str] = <factory>, reverse_dependencies: list[str] = <factory>, reverse_dependency_count: int = 0, missing_dependencies: list[str] = <factory>, installable: bool = False, auto_install: bool = False, models: list[str] = <factory>, inherit_models: list[str] = <factory>, model_count: int = 0, test_cases: list[AddonTestFile] = <factory>, test_count: int = 0, languages: list[str] = <factory>, installed_state: AddonInstallState | None = None, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.AddonDocTarget(module: str, addon_root: str, target_kind: str, manifest_path: str, inside_configured_addons_path: bool = False, warnings: list[str] = <factory>, candidate_addon_roots: list[str] = <factory>, ambiguous: bool = False)[source]

Bases: DictModel

Resolved addon target for technical documentation workflows.

module: str
addon_root: str
target_kind: str
manifest_path: str
inside_configured_addons_path: bool = False
warnings: list[str]
candidate_addon_roots: list[str]
ambiguous: bool = False
__init__(module: str, addon_root: str, target_kind: str, manifest_path: str, inside_configured_addons_path: bool = False, warnings: list[str] = <factory>, candidate_addon_roots: list[str] = <factory>, ambiguous: bool = False) None
class oduit.api_models.AddonTechnicalFile(path: str, category: str, size_bytes: int | None = None)[source]

Bases: DictModel

Compact file entry used for technical documentation inventories.

path: str
category: str
size_bytes: int | None = None
__init__(path: str, category: str, size_bytes: int | None = None) None
class oduit.api_models.AddonXmlRecord(path: str, record_id: str | None = None, model: str | None = None, name: str | None = None, xml_tag: str = 'record', attributes: dict[str, str]=<factory>)[source]

Bases: DictModel

Compact XML inventory record for addon-local architecture evidence.

path: str
record_id: str | None = None
model: str | None = None
name: str | None = None
xml_tag: str = 'record'
attributes: dict[str, str]
__init__(path: str, record_id: str | None = None, model: str | None = None, name: str | None = None, xml_tag: str = 'record', attributes: dict[str, str]=<factory>) None
class oduit.api_models.AddonHttpRoute(path: str, class_name: str, method_name: str, route: str | list[str], auth: str | None = None, route_type: str | None = None, methods: list[str] = <factory>, csrf: bool | None = None, website: bool | None = None, line_hint: int | None = None)[source]

Bases: DictModel

Static controller route discovered from addon Python sources.

path: str
class_name: str
method_name: str
route: str | list[str]
auth: str | None = None
route_type: str | None = None
methods: list[str]
csrf: bool | None = None
website: bool | None = None
line_hint: int | None = None
__init__(path: str, class_name: str, method_name: str, route: str | list[str], auth: str | None = None, route_type: str | None = None, methods: list[str] = <factory>, csrf: bool | None = None, website: bool | None = None, line_hint: int | None = None) None
class oduit.api_models.AddonTechnicalInventory(module: str, addon_root: str, files: list[AddonTechnicalFile] = <factory>, xml_records: list[AddonXmlRecord] = <factory>, http_routes: list[AddonHttpRoute] = <factory>, security_files: list[str] = <factory>, migration_files: list[str] = <factory>, todo_markers: list[SourceEvidence] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Read-only technical inventory for addon-local architecture docs.

module: str
addon_root: str
files: list[AddonTechnicalFile]
xml_records: list[AddonXmlRecord]
http_routes: list[AddonHttpRoute]
security_files: list[str]
migration_files: list[str]
todo_markers: list[SourceEvidence]
warnings: list[str]
remediation: list[str]
__init__(module: str, addon_root: str, files: list[AddonTechnicalFile] = <factory>, xml_records: list[AddonXmlRecord] = <factory>, http_routes: list[AddonHttpRoute] = <factory>, security_files: list[str] = <factory>, migration_files: list[str] = <factory>, todo_markers: list[SourceEvidence] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.DocumentationTrackedFile(path: str, category: str, size_bytes: int | None = None, sha256: str | None = None)[source]

Bases: DictModel

Tracked addon source file entry used for documentation freshness checks.

path: str
category: str
size_bytes: int | None = None
sha256: str | None = None
__init__(path: str, category: str, size_bytes: int | None = None, sha256: str | None = None) None
class oduit.api_models.DocumentationSourceSnapshot(algorithm: str = 'sha256', fingerprint: str = '', file_count: int = 0, files: list[DocumentationTrackedFile] = <factory>)[source]

Bases: DictModel

Deterministic fingerprint of addon source inputs.

algorithm: str = 'sha256'
fingerprint: str = ''
file_count: int = 0
files: list[DocumentationTrackedFile]
__init__(algorithm: str = 'sha256', fingerprint: str = '', file_count: int = 0, files: list[DocumentationTrackedFile] = <factory>) None
class oduit.api_models.DocumentationDocumentSnapshot(algorithm: str = 'sha256', fingerprint: str = '', size_bytes: int | None = None, line_count: int | None = None)[source]

Bases: DictModel

Fingerprint of the generated Markdown document.

algorithm: str = 'sha256'
fingerprint: str = ''
size_bytes: int | None = None
line_count: int | None = None
__init__(algorithm: str = 'sha256', fingerprint: str = '', size_bytes: int | None = None, line_count: int | None = None) None
class oduit.api_models.TechnicalDocumentationGeneratedBlock(id: str, renderer: str, schema_version: str = 'oduit.generated_markdown_block.v1', source_sha256: str = '', content_sha256: str = '', line_count: int | None = None, updated_at: str | None = None)[source]

Bases: DictModel

Persisted metadata for one managed generated markdown block.

id: str
renderer: str
schema_version: str = 'oduit.generated_markdown_block.v1'
source_sha256: str = ''
content_sha256: str = ''
line_count: int | None = None
updated_at: str | None = None
__init__(id: str, renderer: str, schema_version: str = 'oduit.generated_markdown_block.v1', source_sha256: str = '', content_sha256: str = '', line_count: int | None = None, updated_at: str | None = None) None
class oduit.api_models.TechnicalDocumentationMetadata(schema_version: str = 'oduit.technical_documentation.v1', module: str = '', addon_root: str = '', doc_path: str = 'docs/architecture.md', metadata_path: str = 'docs/architecture.oduit.json', template: str = 'arc42-addon-v1', created_at: str | None = None, last_generated_at: str | None = None, generation_count: int = 0, generator: dict[str, str]=<factory>, generation_options: dict[str, ~typing.Any]=<factory>, evidence_counts: dict[str, int]=<factory>, source_snapshot: DocumentationSourceSnapshot | None = None, document_snapshot: DocumentationDocumentSnapshot | None = None, generated_blocks: list[TechnicalDocumentationGeneratedBlock] = <factory>, refresh_count: int = 0, last_refreshed_at: str | None = None, reviewed_at: str | None = None, reviewed_by: str | None = None, review_note: str | None = None, warnings: list[str] = <factory>)[source]

Bases: DictModel

Durable addon-local metadata persisted next to generated docs.

schema_version: str = 'oduit.technical_documentation.v1'
module: str = ''
addon_root: str = ''
doc_path: str = 'docs/architecture.md'
metadata_path: str = 'docs/architecture.oduit.json'
template: str = 'arc42-addon-v1'
created_at: str | None = None
last_generated_at: str | None = None
generation_count: int = 0
generator: dict[str, str]
generation_options: dict[str, Any]
evidence_counts: dict[str, int]
source_snapshot: DocumentationSourceSnapshot | None = None
document_snapshot: DocumentationDocumentSnapshot | None = None
generated_blocks: list[TechnicalDocumentationGeneratedBlock]
refresh_count: int = 0
last_refreshed_at: str | None = None
reviewed_at: str | None = None
reviewed_by: str | None = None
review_note: str | None = None
warnings: list[str]
__init__(schema_version: str = 'oduit.technical_documentation.v1', module: str = '', addon_root: str = '', doc_path: str = 'docs/architecture.md', metadata_path: str = 'docs/architecture.oduit.json', template: str = 'arc42-addon-v1', created_at: str | None = None, last_generated_at: str | None = None, generation_count: int = 0, generator: dict[str, str]=<factory>, generation_options: dict[str, ~typing.Any]=<factory>, evidence_counts: dict[str, int]=<factory>, source_snapshot: DocumentationSourceSnapshot | None = None, document_snapshot: DocumentationDocumentSnapshot | None = None, generated_blocks: list[TechnicalDocumentationGeneratedBlock] = <factory>, refresh_count: int = 0, last_refreshed_at: str | None = None, reviewed_at: str | None = None, reviewed_by: str | None = None, review_note: str | None = None, warnings: list[str] = <factory>) None
class oduit.api_models.TechnicalEvidenceMetadata(schema_version: str = 'oduit.technical_evidence.v1', module: str = '', addon_root: str = '', evidence_path: str = 'docs/architecture.evidence.md', metadata_path: str = 'docs/architecture.evidence.oduit.json', template: str = 'arc42-evidence-v1', evidence_version: int = 0, created_at: str | None = None, last_generated_at: str | None = None, generator: dict[str, str]=<factory>, generation_options: dict[str, ~typing.Any]=<factory>, evidence_counts: dict[str, int]=<factory>, source_snapshot: DocumentationSourceSnapshot | None = None, evidence_document_snapshot: DocumentationDocumentSnapshot | None = None, generated_blocks: list[TechnicalDocumentationGeneratedBlock] = <factory>, warnings: list[str] = <factory>)[source]

Bases: DictModel

Durable addon-local metadata persisted next to generated evidence docs.

schema_version: str = 'oduit.technical_evidence.v1'
module: str = ''
addon_root: str = ''
evidence_path: str = 'docs/architecture.evidence.md'
metadata_path: str = 'docs/architecture.evidence.oduit.json'
template: str = 'arc42-evidence-v1'
evidence_version: int = 0
created_at: str | None = None
last_generated_at: str | None = None
generator: dict[str, str]
generation_options: dict[str, Any]
evidence_counts: dict[str, int]
source_snapshot: DocumentationSourceSnapshot | None = None
evidence_document_snapshot: DocumentationDocumentSnapshot | None = None
generated_blocks: list[TechnicalDocumentationGeneratedBlock]
warnings: list[str]
__init__(schema_version: str = 'oduit.technical_evidence.v1', module: str = '', addon_root: str = '', evidence_path: str = 'docs/architecture.evidence.md', metadata_path: str = 'docs/architecture.evidence.oduit.json', template: str = 'arc42-evidence-v1', evidence_version: int = 0, created_at: str | None = None, last_generated_at: str | None = None, generator: dict[str, str]=<factory>, generation_options: dict[str, ~typing.Any]=<factory>, evidence_counts: dict[str, int]=<factory>, source_snapshot: DocumentationSourceSnapshot | None = None, evidence_document_snapshot: DocumentationDocumentSnapshot | None = None, generated_blocks: list[TechnicalDocumentationGeneratedBlock] = <factory>, warnings: list[str] = <factory>) None
class oduit.api_models.TechnicalEvidenceSnapshot(block_id: 'str', renderer: 'str', evidence_path: 'str', evidence_version: 'int', source_sha256: 'str', content_sha256: 'str', snapshot_sha256: 'str', start_line: 'int | None' = None, end_line: 'int | None' = None, body: 'str' = '')[source]

Bases: DictModel

block_id: str
renderer: str
evidence_path: str
evidence_version: int
source_sha256: str
content_sha256: str
snapshot_sha256: str
start_line: int | None = None
end_line: int | None = None
body: str = ''
__init__(block_id: str, renderer: str, evidence_path: str, evidence_version: int, source_sha256: str, content_sha256: str, snapshot_sha256: str, start_line: int | None = None, end_line: int | None = None, body: str = '') None
class oduit.api_models.TechnicalEvidenceDiffEntry(block_id: 'str', renderer: 'str' = '', status: 'str' = 'unknown', old_evidence_version: 'int | None' = None, current_evidence_version: 'int | None' = None, old_source_sha256: 'str | None' = None, current_source_sha256: 'str | None' = None, old_content_sha256: 'str | None' = None, current_content_sha256: 'str | None' = None, snapshot_sha256: 'str | None' = None, current_snapshot_sha256: 'str | None' = None, significant: 'bool' = False, diff: 'str | None' = None, message: 'str | None' = None)[source]

Bases: DictModel

block_id: str
renderer: str = ''
status: str = 'unknown'
old_evidence_version: int | None = None
current_evidence_version: int | None = None
old_source_sha256: str | None = None
current_source_sha256: str | None = None
old_content_sha256: str | None = None
current_content_sha256: str | None = None
snapshot_sha256: str | None = None
current_snapshot_sha256: str | None = None
significant: bool = False
diff: str | None = None
message: str | None = None
__init__(block_id: str, renderer: str = '', status: str = 'unknown', old_evidence_version: int | None = None, current_evidence_version: int | None = None, old_source_sha256: str | None = None, current_source_sha256: str | None = None, old_content_sha256: str | None = None, current_content_sha256: str | None = None, snapshot_sha256: str | None = None, current_snapshot_sha256: str | None = None, significant: bool = False, diff: str | None = None, message: str | None = None) None
class oduit.api_models.TechnicalEvidenceDiffResult(module: 'str', addon_root: 'str', report_path: 'str', evidence_path: 'str', evidence_metadata_path: 'str', status: 'str', current_evidence_version: 'int | None' = None, snapshot_count: 'int' = 0, stale_count: 'int' = 0, edited_snapshot_count: 'int' = 0, missing_current_block_count: 'int' = 0, entries: 'list[TechnicalEvidenceDiffEntry]' = <factory>, warnings: 'list[str]' = <factory>, remediation: 'list[str]' = <factory>)[source]

Bases: DictModel

module: str
addon_root: str
report_path: str
evidence_path: str
evidence_metadata_path: str
status: str
current_evidence_version: int | None = None
snapshot_count: int = 0
stale_count: int = 0
edited_snapshot_count: int = 0
missing_current_block_count: int = 0
entries: list[TechnicalEvidenceDiffEntry]
warnings: list[str]
remediation: list[str]
__init__(module: str, addon_root: str, report_path: str, evidence_path: str, evidence_metadata_path: str, status: str, current_evidence_version: int | None = None, snapshot_count: int = 0, stale_count: int = 0, edited_snapshot_count: int = 0, missing_current_block_count: int = 0, entries: list[TechnicalEvidenceDiffEntry] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.TechnicalDocumentationStatus(module: str, addon_root: str, doc_path: str, metadata_path: str, status: str, has_document: bool = False, has_metadata: bool = False, generated_by_oduit: bool = False, up_to_date: bool = False, document_edited_since_last_generation: bool = False, source_changed_since_last_generation: bool = False, generated_block_count: int = 0, stale_generated_blocks: list[str] = <factory>, edited_generated_blocks: list[str] = <factory>, missing_generated_blocks: list[str] = <factory>, unknown_generated_blocks: list[str] = <factory>, generated_blocks_up_to_date: bool = False, created_at: str | None = None, last_generated_at: str | None = None, generation_count: int | None = None, generation_options: dict[str, ~typing.Any]=<factory>, evidence_counts: dict[str, int]=<factory>, template: str | None = None, changed_files: list[str] = <factory>, added_files: list[str] = <factory>, removed_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Current tracking status for one addon-local technical document.

module: str
addon_root: str
doc_path: str
metadata_path: str
status: str
has_document: bool = False
has_metadata: bool = False
generated_by_oduit: bool = False
up_to_date: bool = False
document_edited_since_last_generation: bool = False
source_changed_since_last_generation: bool = False
generated_block_count: int = 0
stale_generated_blocks: list[str]
edited_generated_blocks: list[str]
missing_generated_blocks: list[str]
unknown_generated_blocks: list[str]
generated_blocks_up_to_date: bool = False
created_at: str | None = None
last_generated_at: str | None = None
generation_count: int | None = None
generation_options: dict[str, Any]
evidence_counts: dict[str, int]
template: str | None = None
changed_files: list[str]
added_files: list[str]
removed_files: list[str]
warnings: list[str]
remediation: list[str]
__init__(module: str, addon_root: str, doc_path: str, metadata_path: str, status: str, has_document: bool = False, has_metadata: bool = False, generated_by_oduit: bool = False, up_to_date: bool = False, document_edited_since_last_generation: bool = False, source_changed_since_last_generation: bool = False, generated_block_count: int = 0, stale_generated_blocks: list[str] = <factory>, edited_generated_blocks: list[str] = <factory>, missing_generated_blocks: list[str] = <factory>, unknown_generated_blocks: list[str] = <factory>, generated_blocks_up_to_date: bool = False, created_at: str | None = None, last_generated_at: str | None = None, generation_count: int | None = None, generation_options: dict[str, ~typing.Any]=<factory>, evidence_counts: dict[str, int]=<factory>, template: str | None = None, changed_files: list[str] = <factory>, added_files: list[str] = <factory>, removed_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.TechnicalDocumentation(module: str, addon_root: str, source_addon_root: str | None = None, template: str = 'arc42', target: AddonDocTarget | None = None, output_path: str | None = None, metadata_path: str | None = None, generated_at: str | None = None, source_only: bool = False, addon_documentation: AddonDocumentation | None = None, technical_inventory: AddonTechnicalInventory | None = None, sections: list[DocumentSection] = <factory>, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>, used_existing_evidence: bool = False)[source]

Bases: DictModel

Typed architecture-documentation bundle for one addon.

module: str
addon_root: str
source_addon_root: str | None = None
template: str = 'arc42'
target: AddonDocTarget | None = None
output_path: str | None = None
metadata_path: str | None = None
generated_at: str | None = None
source_only: bool = False
addon_documentation: AddonDocumentation | None = None
technical_inventory: AddonTechnicalInventory | None = None
sections: list[DocumentSection]
markdown: str = ''
warnings: list[str]
remediation: list[str]
used_existing_evidence: bool = False
__init__(module: str, addon_root: str, source_addon_root: str | None = None, template: str = 'arc42', target: AddonDocTarget | None = None, output_path: str | None = None, metadata_path: str | None = None, generated_at: str | None = None, source_only: bool = False, addon_documentation: AddonDocumentation | None = None, technical_inventory: AddonTechnicalInventory | None = None, sections: list[DocumentSection] = <factory>, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>, used_existing_evidence: bool = False) None
class oduit.api_models.RecommendedTestPlan(module: str, addon_root: str, paths: list[str] = <factory>, tests: list[AddonTestFile] = <factory>, suggested_test_tags: list[str] = <factory>, full_addon_suite_recommended: bool = False, rationale: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Changed-file to test recommendation plan for coding-agent workflows.

module: str
addon_root: str
paths: list[str]
tests: list[AddonTestFile]
suggested_test_tags: list[str]
rationale: list[str]
warnings: list[str]
remediation: list[str]
__init__(module: str, addon_root: str, paths: list[str] = <factory>, tests: list[AddonTestFile] = <factory>, suggested_test_tags: list[str] = <factory>, full_addon_suite_recommended: bool = False, rationale: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.AddonModelEntry(model: str, relation_kind: str, class_name: str, path: str, line_hint: int | None = None, added_fields: list[str] = <factory>, added_methods: list[str] = <factory>, inherited_models: list[str] = <factory>, delegated_models: list[str] = <factory>)[source]

Bases: DictModel

One model declaration or extension discovered in addon source.

model: str
relation_kind: str
class_name: str
path: str
line_hint: int | None = None
added_fields: list[str]
added_methods: list[str]
inherited_models: list[str]
delegated_models: list[str]
__init__(model: str, relation_kind: str, class_name: str, path: str, line_hint: int | None = None, added_fields: list[str] = <factory>, added_methods: list[str] = <factory>, inherited_models: list[str] = <factory>, delegated_models: list[str] = <factory>) None
class oduit.api_models.AddonModelInventory(module: str, addon_root: str, models: list[AddonModelEntry] = <factory>, model_count: int = 0, scanned_python_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Static addon model inventory for coding-agent inspection workflows.

module: str
addon_root: str
models: list[AddonModelEntry]
model_count: int = 0
scanned_python_files: list[str]
warnings: list[str]
remediation: list[str]
__init__(module: str, addon_root: str, models: list[AddonModelEntry] = <factory>, model_count: int = 0, scanned_python_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.ModelExtensionSource(module: str, addon_root: str, path: str, class_name: str, line_hint: int | None = None, relation_kind: str = 'extends', added_fields: list[str] = <factory>, added_methods: list[str] = <factory>, inherited_models: list[str] = <factory>, delegated_models: list[str] = <factory>)[source]

Bases: DictModel

Static Python source extension for a model across addons.

module: str
addon_root: str
path: str
class_name: str
line_hint: int | None = None
relation_kind: str = 'extends'
added_fields: list[str]
added_methods: list[str]
inherited_models: list[str]
delegated_models: list[str]
__init__(module: str, addon_root: str, path: str, class_name: str, line_hint: int | None = None, relation_kind: str = 'extends', added_fields: list[str] = <factory>, added_methods: list[str] = <factory>, inherited_models: list[str] = <factory>, delegated_models: list[str] = <factory>) None
class oduit.api_models.ModelDeclarationSource(module: str, addon_root: str, path: str, class_name: str, line_hint: int | None = None, added_fields: list[str] = <factory>, added_methods: list[str] = <factory>)[source]

Bases: DictModel

Static source declaration for the model itself.

module: str
addon_root: str
path: str
class_name: str
line_hint: int | None = None
added_fields: list[str]
added_methods: list[str]
__init__(module: str, addon_root: str, path: str, class_name: str, line_hint: int | None = None, added_fields: list[str] = <factory>, added_methods: list[str] = <factory>) None
class oduit.api_models.InstalledModelField(name: str, ttype: str, relation: str | None = None, modules: str | None = None, state: str | None = None)[source]

Bases: DictModel

Runtime field metadata for one installed model field.

name: str
ttype: str
relation: str | None = None
modules: str | None = None
state: str | None = None
__init__(name: str, ttype: str, relation: str | None = None, modules: str | None = None, state: str | None = None) None
class oduit.api_models.InstalledViewExtension(name: str, key: str | None = None, priority: int | None = None, inherit_id: list[Any] | None = None)[source]

Bases: DictModel

Installed inherited view metadata for a model.

name: str
key: str | None = None
priority: int | None = None
inherit_id: list[Any] | None = None
__init__(name: str, key: str | None = None, priority: int | None = None, inherit_id: list[Any] | None = None) None
class oduit.api_models.ViewExtensionSource(module: str, addon_root: str, path: str, record_id: str | None = None, name: str | None = None, priority: int | None = None, inherit_ref: str | None = None)[source]

Bases: DictModel

Static XML view extension for a model across addons.

module: str
addon_root: str
path: str
record_id: str | None = None
name: str | None = None
priority: int | None = None
inherit_ref: str | None = None
__init__(module: str, addon_root: str, path: str, record_id: str | None = None, name: str | None = None, priority: int | None = None, inherit_ref: str | None = None) None
class oduit.api_models.ModelExtensionInventory(model: str, base_declarations: list[ModelDeclarationSource] = <factory>, source_extensions: list[ModelExtensionSource] = <factory>, source_extension_modules: list[str] = <factory>, installed_fields: list[InstalledModelField] = <factory>, installed_extension_fields: list[InstalledModelField] = <factory>, source_view_extensions: list[ViewExtensionSource] = <factory>, installed_view_extensions: list[InstalledViewExtension] = <factory>, installed_extension_modules: list[str] = <factory>, scanned_python_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Combined source and runtime inventory for model extensions.

model: str
base_declarations: list[ModelDeclarationSource]
source_extensions: list[ModelExtensionSource]
source_extension_modules: list[str]
installed_fields: list[InstalledModelField]
installed_extension_fields: list[InstalledModelField]
source_view_extensions: list[ViewExtensionSource]
installed_view_extensions: list[InstalledViewExtension]
installed_extension_modules: list[str]
scanned_python_files: list[str]
warnings: list[str]
remediation: list[str]
__init__(model: str, base_declarations: list[ModelDeclarationSource] = <factory>, source_extensions: list[ModelExtensionSource] = <factory>, source_extension_modules: list[str] = <factory>, installed_fields: list[InstalledModelField] = <factory>, installed_extension_fields: list[InstalledModelField] = <factory>, source_view_extensions: list[ViewExtensionSource] = <factory>, installed_view_extensions: list[InstalledViewExtension] = <factory>, installed_extension_modules: list[str] = <factory>, scanned_python_files: list[str] = <factory>, warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.DocumentationDiagram(kind: str, title: str, format: str, content: str)[source]

Bases: DictModel

Rendered documentation diagram artifact.

kind: str
title: str
format: str
content: str
__init__(kind: str, title: str, format: str, content: str) None
class oduit.api_models.DocumentSection(title: str, markdown: str, summary: str = '', order: int = 0)[source]

Bases: DictModel

Rendered documentation section.

title: str
markdown: str
summary: str = ''
order: int = 0
__init__(title: str, markdown: str, summary: str = '', order: int = 0) None
class oduit.api_models.ModelDocumentation(model: str, database: str | None = None, source_only: bool = False, field_attributes: list[str] = <factory>, requested_view_types: list[str] = <factory>, extension_inventory: ModelExtensionInventory | None = None, field_metadata: ModelFieldsResult | None = None, view_inventory: ModelViewInventory | None = None, diagrams: list[DocumentationDiagram] = <factory>, sections: list[DocumentSection] = <factory>, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Documentation bundle for one model.

model: str
database: str | None = None
source_only: bool = False
field_attributes: list[str]
requested_view_types: list[str]
extension_inventory: ModelExtensionInventory | None = None
field_metadata: ModelFieldsResult | None = None
view_inventory: ModelViewInventory | None = None
diagrams: list[DocumentationDiagram]
sections: list[DocumentSection]
markdown: str = ''
warnings: list[str]
remediation: list[str]
__init__(model: str, database: str | None = None, source_only: bool = False, field_attributes: list[str] = <factory>, requested_view_types: list[str] = <factory>, extension_inventory: ModelExtensionInventory | None = None, field_metadata: ModelFieldsResult | None = None, view_inventory: ModelViewInventory | None = None, diagrams: list[DocumentationDiagram] = <factory>, sections: list[DocumentSection] = <factory>, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.AddonDocumentationModel(model: str, relation_kinds: list[str] = <factory>, source_entries: list[AddonModelEntry] = <factory>, documentation: ModelDocumentation | None = None)[source]

Bases: DictModel

Per-model documentation detail inside one addon bundle.

model: str
relation_kinds: list[str]
source_entries: list[AddonModelEntry]
documentation: ModelDocumentation | None = None
__init__(model: str, relation_kinds: list[str] = <factory>, source_entries: list[AddonModelEntry] = <factory>, documentation: ModelDocumentation | None = None) None
class oduit.api_models.AddonContributionSummary(model: str, module: str, relation_kinds: list[str] = <factory>, class_names: list[str] = <factory>, added_fields: list[str] = <factory>, added_methods: list[str] = <factory>, source_paths: list[str] = <factory>, line_hints: list[int] = <factory>, shared_model_doc_path: str | None = None, shared_model_doc_anchor: str | None = None)[source]

Bases: DictModel

Compact per-addon summary for one shared model.

model: str
module: str
relation_kinds: list[str]
class_names: list[str]
added_fields: list[str]
added_methods: list[str]
source_paths: list[str]
line_hints: list[int]
shared_model_doc_path: str | None = None
shared_model_doc_anchor: str | None = None
__init__(model: str, module: str, relation_kinds: list[str] = <factory>, class_names: list[str] = <factory>, added_fields: list[str] = <factory>, added_methods: list[str] = <factory>, source_paths: list[str] = <factory>, line_hints: list[int] = <factory>, shared_model_doc_path: str | None = None, shared_model_doc_anchor: str | None = None) None
class oduit.api_models.SharedModelDocumentation(model: str, owning_modules: list[str] = <factory>, contributing_modules: list[str] = <factory>, documentation: ModelDocumentation | None = None, output_path: str | None = None, markdown: str = '')[source]

Bases: DictModel

Full shared-model documentation within a multi-addon bundle.

model: str
owning_modules: list[str]
contributing_modules: list[str]
documentation: ModelDocumentation | None = None
output_path: str | None = None
markdown: str = ''
__init__(model: str, owning_modules: list[str] = <factory>, contributing_modules: list[str] = <factory>, documentation: ModelDocumentation | None = None, output_path: str | None = None, markdown: str = '') None
class oduit.api_models.AddonDocumentation(module: str, database: str | None = None, source_only: bool = False, addon_info: AddonInfo | None = None, dependency_graph: dict[str, ~typing.Any]=<factory>, model_inventory: AddonModelInventory | None = None, models: list[AddonDocumentationModel] = <factory>, shared_model_contributions: list[AddonContributionSummary] = <factory>, recommended_tests: dict[str, ~typing.Any]=<factory>, diagrams: list[DocumentationDiagram] = <factory>, sections: list[DocumentSection] = <factory>, output_path: str | None = None, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Documentation bundle for one addon.

module: str
database: str | None = None
source_only: bool = False
addon_info: AddonInfo | None = None
dependency_graph: dict[str, Any]
model_inventory: AddonModelInventory | None = None
models: list[AddonDocumentationModel]
shared_model_contributions: list[AddonContributionSummary]
recommended_tests: dict[str, Any]
diagrams: list[DocumentationDiagram]
sections: list[DocumentSection]
output_path: str | None = None
markdown: str = ''
warnings: list[str]
remediation: list[str]
__init__(module: str, database: str | None = None, source_only: bool = False, addon_info: AddonInfo | None = None, dependency_graph: dict[str, ~typing.Any]=<factory>, model_inventory: AddonModelInventory | None = None, models: list[AddonDocumentationModel] = <factory>, shared_model_contributions: list[AddonContributionSummary] = <factory>, recommended_tests: dict[str, ~typing.Any]=<factory>, diagrams: list[DocumentationDiagram] = <factory>, sections: list[DocumentSection] = <factory>, output_path: str | None = None, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.MultiAddonDocumentation(modules: list[str] = <factory>, database: str | None = None, source_only: bool = False, addon_docs: list[AddonDocumentation] = <factory>, shared_models: list[SharedModelDocumentation] = <factory>, index_markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Documentation bundle for multiple addons in one selected scope.

modules: list[str]
database: str | None = None
source_only: bool = False
addon_docs: list[AddonDocumentation]
shared_models: list[SharedModelDocumentation]
index_markdown: str = ''
warnings: list[str]
remediation: list[str]
__init__(modules: list[str] = <factory>, database: str | None = None, source_only: bool = False, addon_docs: list[AddonDocumentation] = <factory>, shared_models: list[SharedModelDocumentation] = <factory>, index_markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>) None
class oduit.api_models.DependencyGraphDocumentation(modules: list[str] = <factory>, database: str | None = None, source_only: bool = False, installed_only: bool = False, transitive: bool = True, dependency_graph: dict[str, ~typing.Any]=<factory>, installed_addons: InstalledAddonInventory | None = None, diagrams: list[DocumentationDiagram] = <factory>, sections: list[DocumentSection] = <factory>, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>)[source]

Bases: DictModel

Documentation bundle for addon dependency graphs.

modules: list[str]
database: str | None = None
source_only: bool = False
installed_only: bool = False
transitive: bool = True
dependency_graph: dict[str, Any]
installed_addons: InstalledAddonInventory | None = None
diagrams: list[DocumentationDiagram]
sections: list[DocumentSection]
markdown: str = ''
warnings: list[str]
remediation: list[str]
__init__(modules: list[str] = <factory>, database: str | None = None, source_only: bool = False, installed_only: bool = False, transitive: bool = True, dependency_graph: dict[str, ~typing.Any]=<factory>, installed_addons: InstalledAddonInventory | None = None, diagrams: list[DocumentationDiagram] = <factory>, sections: list[DocumentSection] = <factory>, markdown: str = '', warnings: list[str] = <factory>, remediation: list[str] = <factory>) None