From c01c20aabd197186226fb451764ddf2ed912d3da Mon Sep 17 00:00:00 2001 From: Trinh Anh Ngoc Date: Fri, 26 May 2023 11:41:00 +0700 Subject: [PATCH] Update stubs --- odoo-stubs/models.pyi | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/odoo-stubs/models.pyi b/odoo-stubs/models.pyi index 4cf2fdf..3bfcd5a 100644 --- a/odoo-stubs/models.pyi +++ b/odoo-stubs/models.pyi @@ -1,12 +1,14 @@ from collections import MutableMapping -from typing import Any, Dict, Generator, List, Optional, TypeVar +from typing import Any, Callable, Dict, Generator, List, Optional, TypeVar, overload from . import api, fields from .api import Environment from .modules.registry import Registry from .sql_db import Cursor +_T = TypeVar("_T") _ModelT = TypeVar("_ModelT", bound=BaseModel) +_Model2T = TypeVar("_Model2T", bound=BaseModel) regex_order: Any regex_object_name: Any @@ -327,11 +329,24 @@ class BaseModel(metaclass=MetaModel): def _convert_to_record(self, values): ... def _convert_to_write(self, values): ... def _mapped_func(self, func): ... - def mapped(self, func): ... + @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): ... - def filtered(self: _ModelT, func) -> _ModelT: ... + @overload + def filtered(self: _ModelT, func: Callable[[_ModelT], bool]) -> _ModelT: ... + @overload + def filtered(self: _ModelT, func: str) -> _ModelT: ... + @overload def sorted( - self: _ModelT, key: Optional[Any] = ..., 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) -> None: ... def new(self: _ModelT, values=..., ref: Optional[Any] = ...) -> _ModelT: ... @@ -359,7 +374,10 @@ class BaseModel(metaclass=MetaModel): def __str__(self): ... def __repr__(self): ... def __hash__(self) -> Any: ... - def __getitem__(self, key): ... + @overload + def __getitem__(self: _ModelT, key: int | slice) -> _ModelT: ... + @overload + def __getitem__(self, key: str) -> Any: ... def __setitem__(self, key, value): ... def _cache(self): ... def _in_cache_without(self, field, limit=...): ...