1- import re
21from dataclasses import asdict
32from importlib .metadata import version
43from pathlib import Path
54from typing import Annotated
65
76import typer
8- from odoo_addons_path import get_addons_path
9- from odoo_addons_path .main import _detect_codebase_layout
7+ from odoo_addons_path import (
8+ detect_codebase_layout ,
9+ get_addons_path ,
10+ get_odoo_version_from_release ,
11+ )
1012
1113from odoo_venv .exceptions import PresetNotFoundError
1214from odoo_venv .launcher import create_launcher
@@ -51,18 +53,6 @@ def preset_callback(ctx: typer.Context, param: typer.CallbackParam, value: str):
5153 return value
5254
5355
54- def _get_odoo_version_from_release (odoo_dir : Path ) -> str | None :
55- """Read the Odoo version (e.g. '18.0') from ``odoo/release.py``."""
56- release_py = odoo_dir / "odoo" / "release.py"
57- if not release_py .is_file ():
58- return None
59- content = release_py .read_text ()
60- match = re .search (r"version_info\s*=\s*\((\d+),\s*(\d+)" , content )
61- if match :
62- return f"{ match .group (1 )} .{ match .group (2 )} "
63- return None
64-
65-
6656def project_dir_callback (ctx : typer .Context , param : typer .CallbackParam , value : str | None ):
6757 if not value :
6858 return None
@@ -200,8 +190,11 @@ def create( # noqa: C901
200190 detected_addons_path = None
201191 if project_dir_value :
202192 project_dir_path = Path (project_dir_value ).expanduser ().resolve ()
203- detected_paths = _detect_codebase_layout (project_dir_path )
204- detected_addons_path = get_addons_path (project_dir_path )
193+ detected_paths = detect_codebase_layout (project_dir_path )
194+ detected_addons_path = get_addons_path (
195+ project_dir_path ,
196+ detected_paths = detected_paths ,
197+ )
205198
206199 # Resolve odoo_dir (before odoo_version, which may be inferred from it)
207200 if odoo_dir :
@@ -219,7 +212,7 @@ def create( # noqa: C901
219212
220213 # Infer odoo_version from release.py if not provided
221214 if not odoo_version :
222- odoo_version = _get_odoo_version_from_release (odoo_dir_path )
215+ odoo_version = get_odoo_version_from_release (odoo_dir_path )
223216 if not odoo_version :
224217 typer .secho (
225218 "error: Could not detect Odoo version from source. Provide ODOO_VERSION explicitly." ,
0 commit comments