diff --git a/odoo-stubs/models.pyi b/odoo-stubs/models.pyi index d53a9d6..626b946 100644 --- a/odoo-stubs/models.pyi +++ b/odoo-stubs/models.pyi @@ -28,6 +28,7 @@ from .sql_db import Cursor _T = TypeVar("_T") _ModelT = TypeVar("_ModelT", bound=BaseModel) +_Model2T = TypeVar("_Model2T", bound=BaseModel) _Domain = list regex_order: Pattern[str] @@ -454,12 +455,25 @@ class BaseModel(metaclass=MetaModel): def _convert_to_record(self, values: dict[str, Any]): ... def _convert_to_write(self, values: dict[str, Any]) -> dict[str, Any]: ... def _mapped_func(self, func: Callable): ... - def mapped(self, func: Callable | str): ... + @overload + def mapped(self: _ModelT, func: Callable[[_ModelT], _Model2T]) -> _Model2T: ... + @overload + def mapped(self: _ModelT, func: Callable[[_ModelT], _T]) -> list[_T]: ... + @overload + def mapped(self, func: str) -> Any: ... def _mapped_cache(self, name_seq: str): ... - def filtered(self: _ModelT, func: Callable | str) -> _ModelT: ... + @overload + def filtered(self: _ModelT, func: Callable[[_ModelT], bool]) -> _ModelT: ... + @overload + def filtered(self: _ModelT, func: str) -> _ModelT: ... def filtered_domain(self: _ModelT, domain: _Domain) -> _ModelT: ... + @overload def sorted( - self: _ModelT, key: Callable | str | None = ..., reverse: bool = ... + self: _ModelT, key: Callable[[_ModelT], Any] = ..., reverse: bool = ... + ) -> _ModelT: ... + @overload + def sorted( + self: _ModelT, key: str | None = ..., reverse: bool = ... ) -> _ModelT: ... def update(self, values: dict[str, Any]) -> None: ... def flush( @@ -492,7 +506,10 @@ class BaseModel(metaclass=MetaModel): def __str__(self) -> str: ... def __repr__(self) -> str: ... def __hash__(self) -> int: ... - def __getitem__(self, key: str | int | slice): ... + @overload + def __getitem__(self: _ModelT, key: int | slice) -> _ModelT: ... + @overload + def __getitem__(self, key: str) -> Any: ... def __setitem__(self, key: str, value): ... def _cache(self) -> RecordCache: ... def _in_cache_without(self: _ModelT, field: Field, limit: int = ...) -> _ModelT: ...