diff --git a/odoo-stubs/addons/component/__init__.pyi b/odoo-stubs/addons/component/__init__.pyi new file mode 100644 index 0000000..b0ef022 --- /dev/null +++ b/odoo-stubs/addons/component/__init__.pyi @@ -0,0 +1,4 @@ +from . import builder as builder +from . import components as components +from . import core as core +from . import models as models diff --git a/odoo-stubs/addons/component/builder.pyi b/odoo-stubs/addons/component/builder.pyi new file mode 100644 index 0000000..43da8fa --- /dev/null +++ b/odoo-stubs/addons/component/builder.pyi @@ -0,0 +1,16 @@ +from typing import Iterable + +from ...models import AbstractModel +from .core import DEFAULT_CACHE_SIZE as DEFAULT_CACHE_SIZE +from .core import ComponentRegistry as ComponentRegistry + +class ComponentBuilder(AbstractModel): + def build_registry( + self, + components_registry: ComponentRegistry, + states: Iterable[str] | None = None, + exclude_addons: Iterable[str] | None = None, + ) -> None: ... + def load_components( + self, module: str, components_registry: ComponentRegistry | None = None + ) -> None: ... diff --git a/odoo-stubs/addons/component/components/__init__.pyi b/odoo-stubs/addons/component/components/__init__.pyi new file mode 100644 index 0000000..1e8e933 --- /dev/null +++ b/odoo-stubs/addons/component/components/__init__.pyi @@ -0,0 +1 @@ +from . import base as base diff --git a/odoo-stubs/addons/component/components/base.pyi b/odoo-stubs/addons/component/components/base.pyi new file mode 100644 index 0000000..fb4478e --- /dev/null +++ b/odoo-stubs/addons/component/components/base.pyi @@ -0,0 +1,3 @@ +from ..core import AbstractComponent as AbstractComponent + +class BaseComponent(AbstractComponent): ... diff --git a/odoo-stubs/addons/component/core.pyi b/odoo-stubs/addons/component/core.pyi new file mode 100644 index 0000000..1fb754c --- /dev/null +++ b/odoo-stubs/addons/component/core.pyi @@ -0,0 +1,80 @@ +from typing import Any, Optional + +from ...api import Environment +from ...models import BaseModel +from .exception import NoComponentError as NoComponentError +from .exception import SeveralComponentError as SeveralComponentError +from .models.collection import Collection + +DEFAULT_CACHE_SIZE: int + +class ComponentDatabases(dict): ... + +class ComponentRegistry: + ready: bool + def __init__(self, cachesize=...) -> None: ... + def __getitem__(self, key): ... + def __setitem__(self, key, value) -> None: ... + def __contains__(self, key) -> bool: ... + def get(self, key, default: Any | None = None): ... + def __iter__(self): ... + def load_components(self, module) -> None: ... + def lookup( + self, + collection_name: str | None = None, + usage: str | None = None, + model_name: str | None = None, + ): ... + +class WorkContext: + collection: Collection + model_name: str + model: BaseModel + components_registry: ComponentRegistry + def __init__( + self, + model_name: str | None = None, + collection: Optional[Collection] = None, + components_registry: ComponentRegistry | None = None, + **kwargs + ) -> None: ... + @property + def env(self) -> Environment: ... + def work_on( + self, model_name: str | None = None, collection: Optional[Collection] = None + ) -> WorkContext: ... + def component_by_name( + self, name: str, model_name: str | BaseModel | None = None + ) -> Component: ... + def component( + self, usage: str | None = None, model_name: str | BaseModel | None = None, **kw + ) -> Component: ... + def many_components( + self, usage: str | None = None, model_name: str | BaseModel | None = None, **kw + ) -> list[Component]: ... + +class MetaComponent(type): + def __init__(cls: type[AbstractComponent], name, bases, attrs) -> None: ... + @property + def apply_on_models(cls: type[AbstractComponent]): ... + +class AbstractComponent(metaclass=MetaComponent): + work: WorkContext + def __init__(self, work_context: WorkContext) -> None: ... + @property + def collection(self) -> Collection: ... + @property + def env(self) -> Environment: ... + @property + def model(self) -> BaseModel: ... + def component_by_name( + self, name: str, model_name: str | BaseModel | None = None + ) -> Component: ... + def component( + self, usage: str | None = None, model_name: str | BaseModel | None = None, **kw + ) -> Component: ... + def many_components( + self, usage: str | None = None, model_name: str | BaseModel | None = None, **kw + ) -> list[Component]: ... + +class Component(AbstractComponent): ... diff --git a/odoo-stubs/addons/component/exception.pyi b/odoo-stubs/addons/component/exception.pyi new file mode 100644 index 0000000..46bb085 --- /dev/null +++ b/odoo-stubs/addons/component/exception.pyi @@ -0,0 +1,4 @@ +class ComponentException(Exception): ... +class NoComponentError(ComponentException): ... +class SeveralComponentError(ComponentException): ... +class RegistryNotReadyError(ComponentException): ... diff --git a/odoo-stubs/addons/component/models/__init__.pyi b/odoo-stubs/addons/component/models/__init__.pyi new file mode 100644 index 0000000..d9f4dc1 --- /dev/null +++ b/odoo-stubs/addons/component/models/__init__.pyi @@ -0,0 +1 @@ +from . import collection as collection diff --git a/odoo-stubs/addons/component/models/collection.pyi b/odoo-stubs/addons/component/models/collection.pyi new file mode 100644 index 0000000..d1cf85d --- /dev/null +++ b/odoo-stubs/addons/component/models/collection.pyi @@ -0,0 +1,9 @@ +from contextlib import contextmanager +from typing import Iterator + +from ....models import AbstractModel +from ..core import WorkContext + +class Collection(AbstractModel): + @contextmanager + def work_on(self, model_name: str, **kwargs) -> Iterator[WorkContext]: ... diff --git a/odoo-stubs/addons/component/utils.pyi b/odoo-stubs/addons/component/utils.pyi new file mode 100644 index 0000000..2fc2616 --- /dev/null +++ b/odoo-stubs/addons/component/utils.pyi @@ -0,0 +1,4 @@ +from .core import ComponentRegistry + +def get_component_registry(dbname: str) -> ComponentRegistry: ... +def is_component_registry_ready(dbname: str) -> bool: ...