diff --git a/odoo-stubs/models.pyi b/odoo-stubs/models.pyi index 3ccf298..76fb19e 100644 --- a/odoo-stubs/models.pyi +++ b/odoo-stubs/models.pyi @@ -1,12 +1,13 @@ from collections import MutableMapping - -from typing import Any, Optional, List, Dict, Generator +from typing import Any, Optional, List, Dict, Generator, TypeVar from . import api, fields from .api import Environment from .modules.registry import Registry from .sql_db import Cursor +_M = TypeVar('_M') + _logger: Any _schema: Any _unlink: Any @@ -103,7 +104,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): def _constraint_methods(self): ... @property def _onchange_methods(self): ... - def __new__(cls) -> BaseModel: ... + def __new__(cls) -> None: ... def __init__(self, pool: Any, cr: Any) -> None: ... def _is_an_ordinary_table(self): ... def __ensure_xml_id(self, skip: bool = ...): ... @@ -135,7 +136,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): def get_formview_action(self, access_uid: Optional[Any] = ...): ... def get_access_action(self, access_uid: Optional[Any] = ...): ... def search_count(self, args: Any) -> int: ... - def search(self, args: Any, offset: int = ..., limit: Optional[Any] = ..., order: Optional[Any] = ..., count: bool = ...) -> BaseModel: ... + def search(self: _M, args: Any, offset: int = ..., limit: Optional[Any] = ..., order: Optional[Any] = ..., count: bool = ...) -> _M: ... def _compute_display_name(self) -> None: ... def name_get(self): ... def name_create(self, name: Any): ... @@ -184,7 +185,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): def unlink(self): ... def write(self, vals: Any): ... def _write(self, vals: Any): ... - def create(self, vals_list: Any) -> BaseModel: ... + def create(self: _M, vals_list: Any) -> _M: ... def _create(self, data_list: Any): ... def _parent_store_create(self) -> None: ... def _parent_store_update_prepare(self, vals: Any): ... @@ -202,8 +203,8 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): def _search(self, args: Any, offset: int = ..., limit: Optional[Any] = ..., order: Optional[Any] = ..., count: bool = ..., access_rights_uid: Optional[Any] = ...): ... def copy_data(self, default: Optional[Any] = ...): ... def copy_translations(old: Any, new: Any, excluded: Any = ...): ... - def copy(self, default: Optional[Any] = ...) -> BaseModel: ... - def exists(self) -> BaseModel: ... + def copy(self: _M, default: Optional[Any] = ...) -> _M: ... + def exists(self: _M) -> _M: ... def _check_recursion(self, parent: Optional[Any] = ...): ... def _check_m2m_recursion(self, field_name: Any): ... def _get_external_ids(self): ... @@ -226,41 +227,41 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): def _revert_method(cls, name: Any) -> None: ... @classmethod def _browse(cls, ids: Any, env: Any, prefetch: Optional[Any] = ..., add_prefetch: bool = ...): ... - def browse(self, arg: Optional[Any] = ..., prefetch: Optional[Any] = ...) -> BaseModel: ... + def browse(self: _M, arg: Optional[Any] = ..., prefetch: Optional[Any] = ...) -> _M: ... @property def ids(self) -> List[int]: ... _cr: Cursor _uid: int _context: dict def ensure_one(self): ... - def with_env(self, env: Any) -> BaseModel: ... - def sudo(self, user: Any = ...) -> BaseModel: ... - def with_context(self, *args: Any, **kwargs: Any) -> BaseModel: ... - def with_prefetch(self, prefetch: Optional[Any] = ...) -> BaseModel: ... + def with_env(self: _M, env: Any) -> _M: ... + def sudo(self: _M, user: Any = ...) -> _M: ... + def with_context(self: _M, *args: Any, **kwargs: Any) -> _M: ... + def with_prefetch(self: _M, prefetch: Optional[Any] = ...) -> _M: ... def _convert_to_cache(self, values: Any, update: bool = ..., validate: bool = ...): ... def _convert_to_record(self, values: Any): ... def _convert_to_write(self, values: Any): ... def _mapped_func(self, func: Any): ... def mapped(self, func: Any): ... def _mapped_cache(self, name_seq: Any): ... - def filtered(self, func: Any) -> BaseModel: ... - def sorted(self, key: Optional[Any] = ..., reverse: bool = ...) -> BaseModel: ... + def filtered(self: _M, func: Any) -> _M: ... + def sorted(self: _M, key: Optional[Any] = ..., reverse: bool = ...) -> _M: ... def update(self, values: Any) -> None: ... - def new(self, values: Any = ..., ref: Optional[Any] = ...) -> BaseModel: ... + def new(self: _M, values: Any = ..., ref: Optional[Any] = ...) -> _M: ... def _is_dirty(self): ... def _get_dirty(self): ... def _set_dirty(self, field_name: Any) -> None: ... def __bool__(self) -> bool: ... __nonzero__: Any = ... def __len__(self) -> int: ... - def __iter__(self) -> Generator[BaseModel]: ... + def __iter__(self: _M) -> Generator[_M]: ... def __contains__(self, item: Any) -> bool: ... - def __add__(self, other: Any) -> BaseModel: ... - def concat(self, *args: Any) -> BaseModel: ... - def __sub__(self, other: Any) -> BaseModel: ... - def __and__(self, other: Any) -> BaseModel: ... - def __or__(self, other: Any) -> BaseModel: ... - def union(self, *args: Any) -> BaseModel: ... + def __add__(self: _M, other: Any) -> _M: ... + def concat(self: _M, *args: Any) -> _M: ... + def __sub__(self: _M, other: Any) -> _M: ... + def __and__(self: _M, other: Any) -> _M: ... + def __or__(self: _M, other: Any) -> _M: ... + def union(self: _M, *args: Any) -> _M: ... def __eq__(self, other: Any) -> bool: ... def __lt__(self, other: Any) -> bool: ... def __le__(self, other: Any) -> bool: ...