Manifestoo Core

1.15.1 · active · verified Thu Apr 16

Manifestoo Core is a Python library designed to reason about Odoo addons manifests. It provides functionalities to detect the Odoo series from an addon's version, offer information about core Odoo Community Edition and Enterprise Edition addons for various Odoo versions, and convert Odoo manifest metadata into Python Packaging Metadata. The library is actively maintained with frequent updates, currently at version 1.15.1, often aligned with new Odoo versions and manifest specifications.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to parse an Odoo addon's manifest, query information about core Odoo addons for a specific series and edition, and generate Python package metadata from an Odoo addon directory. It creates a temporary dummy addon for illustration.

from pathlib import Path
from manifestoo_core.addon import Addon, AddonNotFound
from manifestoo_core.odoo_series import OdooEdition, OdooSeries
from manifestoo_core.core_addons import get_core_addons, is_core_addon, get_core_addon_license
from manifestoo_core.metadata import metadata_from_addon_dir, MetadataOptions
import os

# Create a dummy addon directory for demonstration
addon_path = Path("./my_test_addon")
addon_path.mkdir(exist_ok=True)
manifest_content = '{"name": "My Test Addon", "version": "16.0.1.0.0", "depends": ["base", "sale"], "license": "LGPL-3"}'
(addon_path / "__manifest__.py").write_text(manifest_content)

# Example 1: Parse an addon manifest
try:
    addon = Addon.from_addon_dir(addon_path)
    print(f"Addon Name: {addon.name}")
    print(f"Addon Version: {addon.version}")
    print(f"Detected Odoo Series: {addon.odoo_series}")
    print(f"Dependencies: {addon.depends}")
except AddonNotFound:
    print(f"No valid Odoo addon found at {addon_path}")

# Example 2: Check core Odoo addons
series = OdooSeries.from_str("16.0")
core_addons = get_core_addons(series, OdooEdition.CE)
print(f"\nSample core CE addons for {series.value}: {list(core_addons)[:3]}")
print(f"'sale' is core for {series.value} CE: {is_core_addon('sale', series, OdooEdition.CE)}")

# Example 3: Generate Python Package Metadata
metadata = metadata_from_addon_dir(addon_path)
print(f"\nGenerated Package Name: {metadata['Name']}")
print(f"Generated Package Version: {metadata['Version']}")

# Clean up dummy addon
(addon_path / "__manifest__.py").unlink()
addon_path.rmdir()

view raw JSON →