From 9a22b2b0a9677ab806b53a43139c6dd501fce002 Mon Sep 17 00:00:00 2001 From: Trinh Anh Ngoc Date: Thu, 11 May 2023 13:21:17 +0700 Subject: [PATCH] Update stubs --- odoo-stubs/fields.pyi | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/odoo-stubs/fields.pyi b/odoo-stubs/fields.pyi index bb470ae..9b5725c 100644 --- a/odoo-stubs/fields.pyi +++ b/odoo-stubs/fields.pyi @@ -1,8 +1,12 @@ import datetime -from typing import Any, Optional +from typing import Any, Generic, Optional, TypeVar, overload +from .models import BaseModel from .tools import date_utils +_FieldT = TypeVar('_FieldT', bound=Field) +_FieldValueT = TypeVar('_FieldValueT') + DATE_LENGTH: Any DATETIME_LENGTH: Any EMPTY_DICT: Any @@ -22,7 +26,7 @@ class MetaField(type): _global_seq: Any -class Field(MetaField('DummyField', (object,), {})): +class Field(Generic[_FieldValueT], metaclass=MetaField): type: Any = ... relational: bool = ... translate: bool = ... @@ -115,7 +119,10 @@ class Field(MetaField('DummyField', (object,), {})): def read(self, records: Any): ... def create(self, record_values: Any) -> None: ... def write(self, records: Any, value: Any): ... - # def __get__(self, record: Any, owner: Any): ... + @overload + def __get__(self, record: BaseModel, owner: Any) -> _FieldValueT: ... + @overload + def __get__(self: _FieldT, record: None, owner: Any) -> _FieldT: ... def __set__(self, record: Any, value: Any) -> None: ... def _compute_value(self, records: Any) -> None: ... def compute_value(self, records: Any) -> None: ... @@ -125,14 +132,14 @@ class Field(MetaField('DummyField', (object,), {})): def determine_domain(self, records: Any, operator: Any, value: Any): ... def modified_draft(self, records: Any): ... -class Boolean(Field): +class Boolean(Field[bool]): type: str = ... column_type: Any = ... def convert_to_column(self, value: Any, record: Any, values: Optional[Any] = ..., validate: bool = ...): ... def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... def convert_to_export(self, value: Any, record: Any): ... -class Integer(Field): +class Integer(Field[int]): type: str = ... column_type: Any = ... _slots: Any = ... @@ -142,7 +149,7 @@ class Integer(Field): def _update(self, records: Any, value: Any) -> None: ... def convert_to_export(self, value: Any, record: Any): ... -class Float(Field): +class Float(Field[float]): type: str = ... column_cast_from: Any = ... _slots: Any = ... @@ -157,7 +164,7 @@ class Float(Field): def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... def convert_to_export(self, value: Any, record: Any): ... -class Monetary(Field): +class Monetary(Field[float]): type: str = ... column_type: Any = ... column_cast_from: Any = ... @@ -173,7 +180,7 @@ class Monetary(Field): def convert_to_read(self, value: Any, record: Any, use_name_get: bool = ...): ... def convert_to_write(self, value: Any, record: Any): ... -class _String(Field): +class _String(Field[str]): _slots: Any = ... def __init__(self, string: Any = ..., **kwargs: Any) -> None: ... prefetch: Any = ... @@ -225,7 +232,7 @@ class Html(_String): def convert_to_column(self, value: Any, record: Any, values: Optional[Any] = ..., validate: bool = ...): ... def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... -class Date(Field): +class Date(Field[datetime.date]): type: str = ... column_type: Any = ... column_cast_from: Any = ... @@ -245,7 +252,7 @@ class Date(Field): def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... def convert_to_export(self, value: Any, record: Any): ... -class Datetime(Field): +class Datetime(Field[datetime.datetime]): type: str = ... column_type: Any = ... column_cast_from: Any = ... @@ -269,7 +276,7 @@ class Datetime(Field): def convert_to_display_name(self, value: Any, record: Any): ... _BINARY = memoryview -class Binary(Field): +class Binary(Field[bytes]): type: str = ... _slots: Any = ... @property @@ -281,7 +288,7 @@ class Binary(Field): def create(self, record_values: Any) -> None: ... def write(self, records: Any, value: Any) -> None: ... -class Selection(Field): +class Selection(Field[str]): type: str = ... _slots: Any = ... def __init__(self, selection: Any = ..., string: Any = ..., **kwargs: Any) -> None: ... @@ -308,7 +315,7 @@ class Reference(Selection): def convert_to_export(self, value: Any, record: Any): ... def convert_to_display_name(self, value: Any, record: Any): ... -class _Relational(Field): +class _Relational(Field[BaseModel]): relational: bool = ... _slots: Any = ... comodel_name: str = ... @@ -390,10 +397,9 @@ class Many2many(_RelationalMulti): def create(self, record_values: Any) -> None: ... def write(self, records: Any, value: Any) -> None: ... -class Id(Field): +class Id(Field[int]): type: str = ... column_type: Any = ... _slots: Any = ... def update_db(self, model: Any, columns: Any) -> None: ... - def __get__(self, record: Any, owner: Any): ... def __set__(self, record: Any, value: Any) -> None: ...