diff --git a/odoo-stubs/fields.pyi b/odoo-stubs/fields.pyi index 9ae2168..20acfdf 100644 --- a/odoo-stubs/fields.pyi +++ b/odoo-stubs/fields.pyi @@ -1,469 +1,484 @@ import datetime -from typing import Any, Optional +from typing import Any, Callable, Collection, Iterator, Sequence, TypeVar, Union -from .tools import date_utils +import psycopg2 +from markupsafe import Markup -DATE_LENGTH: Any -DATETIME_LENGTH: Any +from .api import Environment, Registry +from .models import BaseModel +from .tools import date_utils, float_utils + +_ModelT = TypeVar('_ModelT', bound=BaseModel) +_Selection = list[tuple[str, str]] +_SelectionRaw = _Selection | Callable[..., _Selection] | str +_Domain = list +_DomainRaw = _Domain | Callable[..., _Domain] +_CommandList = list[tuple[BaseModel, list]] +_SeqIntT = TypeVar('_SeqIntT', bound=Sequence[int]) + +DATE_LENGTH: int +DATETIME_LENGTH: int NO_ACCESS: str -IR_MODELS: Any -_logger: Any -_schema: Any -Default: Any +IR_MODELS: tuple[str, ...] +Default: object -def first(records: Any): ... -def resolve_mro(model: Any, name: Any, predicate: Any): ... +def first(records: _ModelT) -> _ModelT: ... +def resolve_mro(model: BaseModel, name: str, predicate: Callable[..., bool]): ... class MetaField(type): - by_type: Any = ... - def __init__(cls, name: Any, bases: Any, attrs: Any) -> None: ... + by_type: dict + def __init__(cls: type[Field], name, bases, attrs) -> None: ... -_global_seq: Any - -class Field(MetaField('DummyField', (object,), {})): - type: Any = ... - relational: bool = ... - translate: bool = ... - column_type: Any = ... - column_format: str = ... - column_cast_from: Any = ... - args: Any = ... - _module: Any = ... - _modules: Any = ... - _setup_done: Any = ... - _sequence: Any = ... - automatic: bool = ... - inherited: bool = ... - inherited_field: Any = ... - name: Any = ... - model_name: Any = ... - comodel_name: Any = ... - store: bool = ... - index: bool = ... - manual: bool = ... - copy: bool = ... - _depends: Any = ... - _depends_context: Any = ... - recursive: bool = ... - compute: Any = ... - compute_sudo: bool = ... - inverse: Any = ... - search: Any = ... - related: Any = ... - company_dependent: bool = ... - default: Any = ... - string: Any = ... - help: Any = ... - invisible: bool = ... - readonly: bool = ... - required: bool = ... - states: Any = ... - groups: Any = ... - change_default: bool = ... - deprecated: Any = ... - related_field: Any = ... - group_operator: Any = ... - group_expand: Any = ... - prefetch: bool = ... - def __init__(self, string: Any = ..., **kwargs: Any) -> None: ... - def new(self, **kwargs: Any): ... - def __str__(self): ... - def __repr__(self): ... - def setup_base(self, model: Any, name: Any) -> None: ... - def _can_setup_from(self, field: Any): ... - def _get_attrs(self, model: Any, name: Any): ... - def _setup_attrs(self, model: Any, name: Any): ... - def setup_full(self, model: Any) -> None: ... - def _setup_regular_base(self, model: Any) -> None: ... - depends: Any = ... - depends_context: Any = ... - def _setup_regular_full(self, model: Any) -> None: ... - def _setup_related_full(self, model: Any) -> None: ... - def traverse_related(self, record: Any): ... - def _compute_related(self, records: Any) -> None: ... - def _process_related(self, value: Any): ... - def _inverse_related(self, records: Any) -> None: ... - def _search_related(self, records: Any, operator: Any, value: Any): ... - _related_comodel_name: Any = ... - _related_string: Any = ... - _related_help: Any = ... - _related_groups: Any = ... - _related_group_operator: Any = ... +class Field(metaclass=MetaField): + type: str | None + relational: bool + translate: bool + column_type: tuple[str, str] | None + column_format: str + column_cast_from: tuple[str, ...] + args: dict[str, Any] | None + _module: str + _modules: set[str] + _setup_done: str | None + _sequence: int | None + automatic: bool + inherited: bool + inherited_field: Field | None + name: str + model_name: str + comodel_name: str | None + store: bool + index: bool + manual: bool + copy: bool + _depends: Collection[str] | None + _depends_context: Collection[str] | None + recursive: bool + compute: str | Callable | None + compute_sudo: bool + inverse: str | Callable | None + search: str | Callable | None + related: str| Sequence[str] | None + company_dependent: bool + default: Any + string: str | None + help: str | None + invisible: bool + readonly: bool + required: bool + states: dict[str, list[tuple]] | None + groups: str | None + change_default: bool + deprecated: bool | None + related_field: Field | None + group_operator: str | None + group_expand: str | None + prefetch: bool + related_attrs: list[tuple[str, str]] + description_attrs: list[tuple[str, str]] + def __init__(self, string: str = ..., **kwargs) -> None: ... + def new(self, **kwargs): ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def setup_base(self, model: BaseModel, name: str) -> None: ... + def _can_setup_from(self, field: Field) -> bool: ... + def _get_attrs(self, model: BaseModel, name: str) -> dict[str, Any]: ... + def _setup_attrs(self, model: BaseModel, name: str): ... + def setup_full(self, model: BaseModel) -> None: ... + def _setup_regular_base(self, model: BaseModel) -> None: ... + depends: Collection[str] | None + depends_context: Collection[str] | None + def _setup_regular_full(self, model: BaseModel) -> None: ... + def _setup_related_full(self, model: BaseModel) -> None: ... + def traverse_related(self, record: _ModelT) -> tuple[_ModelT, Field]: ... + def _compute_related(self, records: BaseModel) -> None: ... + def _process_related(self, value): ... + def _inverse_related(self, records: BaseModel) -> None: ... + def _search_related(self, records: BaseModel, operator: str, value) -> list: ... + _related_comodel_name: str | None + _related_string: str | None + _related_help: str | None + _related_groups: str | None + _related_group_operator: str | None @property - def base_field(self): ... - def _default_company_dependent(self, model: Any): ... - def _compute_company_dependent(self, records: Any) -> None: ... - def _inverse_company_dependent(self, records: Any) -> None: ... - def _search_company_dependent(self, records: Any, operator: Any, value: Any): ... - def resolve_depends(self, registry: Any) -> None: ... - def get_description(self, env: Any): ... - _description_store: Any = ... - _description_manual: Any = ... - _description_depends: Any = ... - _description_related: Any = ... - _description_company_dependent: Any = ... - _description_readonly: Any = ... - _description_required: Any = ... - _description_states: Any = ... - _description_groups: Any = ... - _description_change_default: Any = ... - _description_deprecated: Any = ... - _description_group_operator: Any = ... + def base_field(self) -> Field: ... + def _default_company_dependent(self, model: BaseModel): ... + def _compute_company_dependent(self, records: BaseModel) -> None: ... + def _inverse_company_dependent(self, records: BaseModel) -> None: ... + def _search_company_dependent(self, records: BaseModel, operator: str, value): ... + def resolve_depends(self, registry: Registry) -> Iterator[tuple]: ... + def get_description(self, env: Environment) -> dict[str, Any]: ... + _description_store: bool | None + _description_manual: Any + _description_depends: Collection[str] | None + _description_related: str | Sequence[str] | None + _description_company_dependent: bool + _description_readonly: bool + _description_required: bool + _description_states: dict[str, list[tuple]] | None + _description_groups: str | None + _description_change_default: bool + _description_deprecated: bool | None + _description_group_operator: str | None @property - def _description_searchable(self): ... + def _description_searchable(self) -> bool: ... @property - def _description_sortable(self): ... - def _description_string(self, env: Any): ... - def _description_help(self, env: Any): ... - def is_editable(self): ... - def null(self, record: 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_record(self, value: Any, record: Any): ... - def convert_to_record_multi(self, values: Any, records: Any): ... - def convert_to_read(self, value: Any, record: Any, use_name_get: bool = ...): ... - def convert_to_write(self, value: Any, record: Any): ... - def convert_to_onchange(self, value: Any, record: Any, names: Any): ... - def convert_to_export(self, value: Any, record: Any): ... - def convert_to_display_name(self, value: Any, record: Any): ... - def update_db(self, model: Any, columns: Any): ... - def update_db_column(self, model: Any, column: Any) -> None: ... - def update_db_notnull(self, model: Any, column: Any) -> None: ... - def read(self, records: Any) -> None: ... - def create(self, record_values: Any) -> None: ... - def write(self, records: Any, value: Any): ... - # def __get__(self, record: Any, owner: Any): ... - def mapped(self, records: Any): ... - def __set__(self, records: Any, value: Any): ... - def compute_value(self, records: Any) -> None: ... - def determine_inverse(self, records: Any) -> None: ... - def determine_domain(self, records: Any, operator: Any, value: Any): ... + def _description_sortable(self) -> bool: ... + def _description_string(self, env: Environment) -> str | None: ... + def _description_help(self, env: Environment) -> str | None: ... + def is_editable(self) -> bool: ... + def null(self, record: BaseModel) -> bool: ... + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...): ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...): ... + def convert_to_record(self, value, record: BaseModel): ... + def convert_to_record_multi(self, values, records: BaseModel): ... + def convert_to_read(self, value, record: BaseModel, use_name_get: bool = ...): ... + def convert_to_write(self, value, record: BaseModel): ... + def convert_to_onchange(self, value, record: BaseModel, names): ... + def convert_to_export(self, value, record: BaseModel): ... + def convert_to_display_name(self, value, record: BaseModel): ... + def update_db(self, model: BaseModel, columns: dict[str, Any]): ... + def update_db_column(self, model: BaseModel, column: dict | None) -> None: ... + def update_db_notnull(self, model: BaseModel, column: dict | None) -> None: ... + def update_db_related(self, model: BaseModel) -> None: ... + def read(self, records: BaseModel) -> None: ... + def create(self, record_values: list[tuple[BaseModel, Any]]) -> None: ... + def write(self, records: _ModelT, value) -> _ModelT: ... + def __get__(self, record: Union[BaseModel, None], owner): ... + def mapped(self, records: BaseModel): ... + def __set__(self, records: BaseModel, value): ... + def recompute(self, records: BaseModel) -> None: ... + def compute_value(self, records: BaseModel) -> None: ... + def determine_inverse(self, records: BaseModel) -> None: ... + def determine_domain(self, records: BaseModel, operator: str, value) -> list: ... class Boolean(Field): - 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): ... + type: str + column_type: type[str, str] + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> bool: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> bool: ... + def convert_to_export(self, value, record: BaseModel): ... class Integer(Field): - type: str = ... - column_type: Any = ... - group_operator: str = ... - 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_record(self, value: Any, record: Any): ... - def convert_to_read(self, value: Any, record: Any, use_name_get: bool = ...): ... - def _update(self, records: Any, value: Any) -> None: ... - def convert_to_export(self, value: Any, record: Any): ... + type: str + column_type: type[str, str] + group_operator: str + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> int: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> int | None: ... + def convert_to_record(self, value, record: BaseModel): ... + def convert_to_read(self, value, record: BaseModel, use_name_get: bool = ...): ... + def _update(self, records: BaseModel, value) -> None: ... + def convert_to_export(self, value, record): ... class Float(Field): - type: str = ... - column_cast_from: Any = ... - _digits: Any = ... - group_operator: str = ... - def __init__(self, string: Any = ..., digits: Any = ..., **kwargs: Any) -> None: ... + type: str + column_cast_from: tuple[str, str, str] + _digits: tuple[int, int] | str | None + group_operator: str + def __init__(self, string: str = ..., digits: tuple[int, int] | str | None =..., **kwargs) -> None: ... @property def column_type(self): ... - def get_digits(self, env: Any): ... - _related__digits: Any = ... - def _description_digits(self, env: 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_record(self, value: Any, record: Any): ... - def convert_to_export(self, value: Any, record: Any): ... - round: Any = ... - is_zero: Any = ... - compare: Any = ... + def get_digits(self, env: Environment) -> tuple[int, int]: ... + _related__digits: Any + def _description_digits(self, env: Environment) -> type[int, int]: ... + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> float: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> float: ... + def convert_to_record(self, value, record: BaseModel): ... + def convert_to_export(self, value, record: BaseModel): ... + round = float_utils.float_round + is_zero = float_utils.float_is_zero + compare = float_utils.float_compare class Monetary(Field): - type: str = ... - column_type: Any = ... - column_cast_from: Any = ... - currency_field: Any = ... - group_operator: str = ... - def __init__(self, string: Any = ..., currency_field: Any = ..., **kwargs: Any) -> None: ... - _description_currency_field: Any = ... - def _setup_currency_field(self, model: Any) -> None: ... - def _setup_regular_full(self, model: Any) -> None: ... - def _setup_related_full(self, model: Any) -> None: ... - 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_record(self, value: Any, record: Any): ... - def convert_to_read(self, value: Any, record: Any, use_name_get: bool = ...): ... - def convert_to_write(self, value: Any, record: Any): ... + type: str + column_type: tuple[str, str] + column_cast_from: tuple[str] + currency_field: str | None + group_operator: str + def __init__(self, string: str = ..., currency_field : str =..., **kwargs) -> None: ... + _description_currency_field: str | None + def _setup_currency_field(self, model: BaseModel) -> None: ... + def _setup_regular_full(self, model: BaseModel) -> None: ... + def _setup_related_full(self, model: BaseModel) -> None: ... + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> float: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> float: ... + def convert_to_record(self, value, record: BaseModel): ... + def convert_to_read(self, value, record: BaseModel, use_name_get: bool = ...): ... + def convert_to_write(self, value, record: BaseModel): ... class _String(Field): - translate: bool = ... - prefetch: Any = ... - def __init__(self, string: Any = ..., **kwargs: Any) -> None: ... - def _setup_attrs(self, model: Any, name: Any) -> None: ... - _related_translate: Any = ... - def _description_translate(self, env: Any): ... - def get_trans_terms(self, value: Any): ... - def get_trans_func(self, records: Any): ... - def check_trans_value(self, value: Any): ... - def write(self, records: Any, value: Any): ... + translate: Callable | bool + prefetch: Any + def __init__(self, string: str = ..., **kwargs) -> None: ... + def _setup_attrs(self, model: BaseModel, name: str) -> None: ... + _related_translate: bool + def _description_translate(self, env: Environment) -> bool: ... + def get_trans_terms(self, value) -> list: ... + def get_trans_func(self, records: BaseModel) -> Callable: ... + def check_trans_value(self, value): ... + def write(self, records: _ModelT, value) -> _ModelT: ... class Char(_String): - type: str = ... - column_cast_from: Any = ... - size: Any = ... - trim: bool = ... + type: str + column_cast_from: tuple[str] + size: int | None + trim: bool @property - def column_type(self): ... - def update_db_column(self, model: Any, column: Any) -> None: ... - _related_size: Any = ... - _related_trim: Any = ... - _description_size: Any = ... - _description_trim: Any = ... - def _setup_regular_base(self, model: Any) -> None: ... - 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 column_type(self) -> tuple[str, str]: ... + def update_db_column(self, model: BaseModel, column: dict | None) -> None: ... + _related_size: int | None + _related_trim: bool + _description_size: int | None + _description_trim: bool + def _setup_regular_base(self, model: BaseModel) -> None: ... + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> str | None: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> str | None: ... class Text(_String): - type: str = ... - column_type: Any = ... - column_cast_from: Any = ... - def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... + type: str + column_type: tuple[str, str] + column_cast_from: tuple[str] + def convert_to_cache(self, value, record, validate: bool = ...) -> str | None: ... class Html(_String): - type: str = ... - column_type: Any = ... - sanitize: bool = ... - sanitize_tags: bool = ... - sanitize_attributes: bool = ... - sanitize_style: bool = ... - sanitize_form: bool = ... - strip_style: bool = ... - strip_classes: bool = ... - def _get_attrs(self, model: Any, name: Any): ... - _related_sanitize: Any = ... - _related_sanitize_tags: Any = ... - _related_sanitize_attributes: Any = ... - _related_sanitize_style: Any = ... - _related_strip_style: Any = ... - _related_strip_classes: Any = ... - _description_sanitize: Any = ... - _description_sanitize_tags: Any = ... - _description_sanitize_attributes: Any = ... - _description_sanitize_style: Any = ... - _description_strip_style: Any = ... - _description_strip_classes: 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 = ...): ... + type: str + column_type: tuple[str, str] + sanitize: bool + sanitize_tags: bool + sanitize_attributes: bool + sanitize_style: bool + sanitize_form: bool + strip_style: bool + strip_classes: bool + def _get_attrs(self, model: BaseModel, name: str) -> dict[str, Any]: ... + _related_sanitize: bool + _related_sanitize_tags: bool + _related_sanitize_attributes: bool + _related_sanitize_style: bool + _related_strip_style: bool + _related_strip_classes: bool + _description_sanitize: bool + _description_sanitize_tags: bool + _description_sanitize_attributes: bool + _description_sanitize_style: bool + _description_strip_style: bool + _description_strip_classes: bool + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> Markup | None: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> Markup | None: ... class Date(Field): - type: str = ... - column_type: Any = ... - column_cast_from: Any = ... - start_of = date_utils.start_of - end_of = date_utils.end_of - add: date_utils.add - subtract: date_utils.subtract - @staticmethod - def today(*args: Any) -> datetime.date: ... - @staticmethod - def context_today(record: Any, timestamp: Optional[Any] = ...) -> datetime.date: ... - @staticmethod - def to_date(value: Any) -> datetime.date: ... - from_string = to_date - @staticmethod - def to_string(value: Any): ... - def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... - def convert_to_export(self, value: Any, record: Any): ... - -class Datetime(Field): - type: str = ... - column_type: Any = ... - column_cast_from: Any = ... + type: str + column_type: tuple[str, str] + column_cast_from: tuple[str] start_of = date_utils.start_of end_of = date_utils.end_of add = date_utils.add - subtract: date_utils.subtract + subtract = date_utils.subtract @staticmethod - def now(*args: Any) -> datetime.datetime: ... + def today(*args) -> datetime.date: ... @staticmethod - def today(*args: Any) -> datetime.datetime: ... + def context_today(record: BaseModel, timestamp: datetime.datetime | None = ...) -> datetime.date: ... @staticmethod - def context_timestamp(record: Any, timestamp: Any) -> datetime.datetime: ... + def to_date(value) -> datetime.date | None: ... + from_string = to_date @staticmethod - def to_datetime(value: Any) -> datetime.datetime: ... + def to_string(value: datetime.datetime | datetime.date) -> str: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> datetime.date | None: ... + def convert_to_export(self, value, record: BaseModel): ... + +class Datetime(Field): + type: str + column_type: tuple[str, str] + column_cast_from: tuple[str] + start_of = date_utils.start_of + end_of = date_utils.end_of + add = date_utils.add + subtract = date_utils.subtract + @staticmethod + def now(*args) -> datetime.datetime: ... + @staticmethod + def today(*args) -> datetime.datetime: ... + @staticmethod + def context_timestamp(record: BaseModel, timestamp: datetime.datetime) -> datetime.datetime: ... + @staticmethod + def to_datetime(value) -> datetime.datetime | None: ... from_string = to_datetime @staticmethod - def to_string(value: Any) -> str: ... - def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... - def convert_to_export(self, value: Any, record: Any): ... - def convert_to_display_name(self, value: Any, record: Any): ... + def to_string(value: datetime.datetime | datetime.date) -> str: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> datetime.datetime | None: ... + def convert_to_export(self, value, record: BaseModel): ... + def convert_to_display_name(self, value, record: BaseModel) -> str: ... + _BINARY = memoryview class Binary(Field): - type: str = ... - prefetch: bool = ... - _depends_context: Any = ... - attachment: bool = ... + type: str + prefetch: bool + _depends_context: tuple[str] + attachment: bool @property - def column_type(self): ... - def _get_attrs(self, model: Any, name: Any): ... - _description_attachment: 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_record(self, value: Any, record: Any): ... - def compute_value(self, records: Any) -> None: ... - def read(self, records: Any) -> None: ... - def create(self, record_values: Any) -> None: ... - def write(self, records: Any, value: Any): ... + def column_type(self) -> tuple[str, str] | None: ... + def _get_attrs(self, model: BaseModel, name: str) -> dict[str, Any]: ... + _description_attachment: bool + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> psycopg2.Binary | None: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> bytes | None: ... + def convert_to_record(self, value, record: BaseModel) -> bytes: ... + def compute_value(self, records: BaseModel) -> None: ... + def read(self, records: BaseModel) -> None: ... + def create(self, record_values: list[tuple[BaseModel, Any]]) -> None: ... + def write(self, records: _ModelT, value) -> _ModelT: ... class Image(Binary): - max_width: int = ... - max_height: int = ... - verify_resolution: bool = ... - def create(self, record_values: Any) -> None: ... - def write(self, records: Any, value: Any) -> None: ... - def _image_process(self, value: Any): ... - def _process_related(self, value: Any): ... + max_width: int + max_height: int + verify_resolution: bool + def create(self, record_values: list[tuple[BaseModel, Any]]) -> None: ... + def write(self, records: BaseModel, value) -> None: ... + def _image_process(self, value): ... + def _process_related(self, value): ... class Selection(Field): - type: str = ... - column_type: Any = ... - selection: Any = ... - validate: bool = ... - ondelete: Any = ... - def __init__(self, selection: Any = ..., string: Any = ..., **kwargs: Any) -> None: ... - def _setup_regular_base(self, model: Any) -> None: ... - def _setup_related_full(self, model: Any): ... - def _get_attrs(self, model: Any, name: Any): ... - def _setup_attrs(self, model: Any, name: Any) -> None: ... - def _selection_modules(self, model: Any): ... - def _description_selection(self, env: Any): ... - def get_values(self, env: 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): ... + type: str + column_type: tuple[str, str] + selection: _SelectionRaw + validate: bool + ondelete: dict[str, Any] | None + def __init__(self, selection: _SelectionRaw = ..., string: str = ..., **kwargs) -> None: ... + def _setup_regular_base(self, model: BaseModel) -> None: ... + def _setup_related_full(self, model: BaseModel) -> None: ... + def _get_attrs(self, model: BaseModel, name: str) -> dict[str, Any]: ... + def _setup_attrs(self, model: BaseModel, name: str) -> None: ... + def _selection_modules(self, model: BaseModel) -> dict[str, set[str, str]]: ... + def _description_selection(self, env: Environment) -> _Selection: ... + def get_values(self, env: Environment) -> _Selection: ... + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...): ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...): ... + def convert_to_export(self, value, record: BaseModel): ... class Reference(Selection): - type: str = ... + type: str @property - def column_type(self): ... - 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_record(self, value: Any, record: Any): ... - def convert_to_read(self, value: Any, record: Any, use_name_get: bool = ...): ... - def convert_to_export(self, value: Any, record: Any): ... - def convert_to_display_name(self, value: Any, record: Any): ... + def column_type(self) -> tuple[str, str]: ... + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...) -> str | None: ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...) -> str | None: ... + def convert_to_record(self, value, record: BaseModel) -> Union[BaseModel, None]: ... + def convert_to_read(self, value, record: BaseModel, use_name_get: bool = ...) -> str | bool: ... + def convert_to_export(self, value, record: BaseModel) -> str: ... + def convert_to_display_name(self, value, record: BaseModel) -> str: ... class _Relational(Field): - relational: bool = ... - domain: Any = ... - context: Any = ... - check_company: bool = ... - def __get__(self, records: Any, owner: Any): ... - comodel_name: str = ... - def _setup_regular_base(self, model: Any) -> None: ... - def get_domain_list(self, model: Any): ... + relational: bool + domain: _DomainRaw + context: dict + check_company: bool + def __get__(self, records: Union[BaseModel, None], owner) -> BaseModel: ... + comodel_name: str + def _setup_regular_base(self, model: BaseModel) -> None: ... + def get_domain_list(self, model: BaseModel) -> _Domain: ... @property - def _related_domain(self): ... - _related_context: Any = ... - _description_relation: Any = ... - _description_context: Any = ... - def _description_domain(self, env: Any): ... - def null(self, record: Any): ... + def _related_domain(self) -> _DomainRaw: ... + _related_context: dict + _description_relation: str | None + _description_context: dict + def _description_domain(self, env: Environment) -> _Domain: ... + def null(self, record: BaseModel) -> BaseModel: ... class Many2one(_Relational): - type: str = ... - column_type: Any = ... - ondelete: Any = ... - auto_join: bool = ... - delegate: bool = ... - def __init__(self, comodel_name: Any = ..., string: Any = ..., **kwargs: Any) -> None: ... - def _setup_attrs(self, model: Any, name: Any) -> None: ... - def _setup_regular_base(self, model: Any) -> None: ... - def update_db(self, model: Any, columns: Any): ... - def update_db_column(self, model: Any, column: Any) -> None: ... - def update_db_foreign_key(self, model: Any, column: Any) -> None: ... - def _update(self, records: Any, value: Any) -> None: ... - 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_record(self, value: Any, record: Any): ... - def convert_to_record_multi(self, values: Any, records: Any): ... - def convert_to_read(self, value: Any, record: Any, use_name_get: bool = ...): ... - def convert_to_write(self, value: Any, record: Any): ... - def convert_to_export(self, value: Any, record: Any): ... - def convert_to_display_name(self, value: Any, record: Any): ... - def convert_to_onchange(self, value: Any, record: Any, names: Any): ... - def write(self, records: Any, value: Any): ... - def _remove_inverses(self, records: Any, value: Any): ... - def _update_inverses(self, records: Any, value: Any) -> None: ... + type: str + column_type: tuple[str, str] + ondelete: str | None + auto_join: bool + delegate: bool + def __init__(self, comodel_name: str = ..., string: str = ..., **kwargs) -> None: ... + def _setup_attrs(self, model: BaseModel, name: str) -> None: ... + def _setup_regular_base(self, model: BaseModel) -> None: ... + def update_db(self, model: BaseModel, columns): ... + def update_db_column(self, model: BaseModel, column) -> None: ... + def update_db_foreign_key(self, model: BaseModel, column) -> None: ... + def _update(self, records: BaseModel, value) -> None: ... + def convert_to_column(self, value, record: BaseModel, values: Any | None = ..., validate: bool = ...): ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...): ... + def convert_to_record(self, value, record: BaseModel): ... + def convert_to_record_multi(self, values, records: BaseModel): ... + def convert_to_read(self, value, record: BaseModel, use_name_get: bool = ...): ... + def convert_to_write(self, value, record: BaseModel): ... + def convert_to_export(self, value, record: BaseModel) -> str: ... + def convert_to_display_name(self, value, record: BaseModel) -> str: ... + def convert_to_onchange(self, value, record: BaseModel, names): ... + def write(self, records: _ModelT, value) -> _ModelT: ... + def _remove_inverses(self, records: BaseModel, value): ... + def _update_inverses(self, records: BaseModel, value) -> None: ... class Many2oneReference(Integer): - type: str = ... - model_field: Any = ... - _related_model_field: Any = ... - def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... - def _remove_inverses(self, records: Any, value: Any) -> None: ... - def _update_inverses(self, records: Any, value: Any) -> None: ... - def _record_ids_per_res_model(self, records: Any): ... + type: str + model_field: str | None + _related_model_field: str | None + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...): ... + def _remove_inverses(self, records: BaseModel, value) -> None: ... + def _update_inverses(self, records: BaseModel, value) -> None: ... + def _record_ids_per_res_model(self, records: BaseModel) -> dict[str, set]: ... class _RelationalMulti(_Relational): - def _update(self, records: Any, value: Any): ... - def convert_to_cache(self, value: Any, record: Any, validate: bool = ...): ... - def convert_to_record(self, value: Any, record: Any): ... - def convert_to_record_multi(self, values: Any, records: Any): ... - def convert_to_read(self, value: Any, record: Any, use_name_get: bool = ...): ... - def convert_to_write(self, value: Any, record: Any): ... - def convert_to_export(self, value: Any, record: Any): ... - def convert_to_display_name(self, value: Any, record: Any) -> None: ... - depends: Any = ... - def _setup_regular_full(self, model: Any) -> None: ... - def create(self, record_values: Any) -> None: ... - def write(self, records: Any, value: Any): ... - def write_batch(self, records_commands_list: Any, create: bool = ...): ... + write_sequence: int + def _update(self, records: BaseModel, value): ... + def convert_to_cache(self, value, record: BaseModel, validate: bool = ...): ... + def convert_to_record(self, value, record: BaseModel): ... + def convert_to_record_multi(self, values, records: BaseModel): ... + def convert_to_read(self, value, record: BaseModel, use_name_get: bool = ...): ... + def convert_to_write(self, value, record: BaseModel): ... + def convert_to_export(self, value, record: BaseModel) -> str: ... + def convert_to_display_name(self, value, record: BaseModel) -> None: ... + depends: tuple[str] + def _setup_regular_full(self, model: BaseModel) -> None: ... + def create(self, record_values: list[tuple[BaseModel, Any]]) -> None: ... + def write(self, records: BaseModel, value): ... + def write_batch(self, records_commands_list: _CommandList, create: bool = ...): ... class One2many(_RelationalMulti): - type: str = ... - inverse_name: Any = ... - auto_join: bool = ... - limit: Any = ... - copy: bool = ... - def __init__(self, comodel_name: Any = ..., inverse_name: Any = ..., string: Any = ..., **kwargs: Any) -> None: ... - def _setup_regular_full(self, model: Any) -> None: ... - _description_relation_field: Any = ... - def update_db(self, model: Any, columns: Any) -> None: ... - def get_domain_list(self, records: Any): ... - # def __get__(self, records: Any, owner: Any): ... - def read(self, records: Any): ... - def write_real(self, records_commands_list: Any, create: bool = ...): ... - def write_new(self, records_commands_list: Any): ... + type: str + inverse_name: str | None + auto_join: bool + limit: int | None + copy: bool + def __init__(self, comodel_name: str = ..., inverse_name: str = ..., string: str = ..., **kwargs) -> None: ... + def _setup_regular_full(self, model: BaseModel) -> None: ... + _description_relation_field: str | None + def update_db(self, model: BaseModel, columns) -> None: ... + def get_domain_list(self, records: BaseModel): ... + def __get__(self, records: BaseModel, owner) -> BaseModel: ... + def read(self, records: BaseModel): ... + def write_real(self, records_commands_list: _CommandList, create: bool = ...): ... + def write_new(self, records_commands_list: _CommandList): ... class Many2many(_RelationalMulti): - type: str = ... - _explicit: bool = ... - relation: Any = ... - column1: Any = ... - column2: Any = ... - auto_join: bool = ... - limit: Any = ... - ondelete: Any = ... - def __init__(self, comodel_name: Any = ..., relation: Any = ..., column1: Any = ..., column2: Any = ..., string: Any = ..., **kwargs: Any) -> None: ... - def _setup_regular_base(self, model: Any) -> None: ... - def _setup_regular_full(self, model: Any) -> None: ... - def update_db(self, model: Any, columns: Any) -> None: ... - def update_db_foreign_keys(self, model: Any) -> None: ... - def read(self, records: Any) -> None: ... - def write_real(self, records_commands_list: Any, create: bool = ...): ... - def write_new(self, records_commands_list: Any): ... + type: str + _explicit: bool + relation: str | None + column1: str | None + column2: str | None + auto_join: bool + limit: int | None + ondelete: str + def __init__(self, comodel_name: str =..., relation: str = ..., column1: str = ..., column2: str = ..., string: str = ..., **kwargs) -> None: ... + def _setup_regular_base(self, model: BaseModel) -> None: ... + def _setup_regular_full(self, model: BaseModel) -> None: ... + def update_db(self, model: BaseModel, columns) -> None: ... + def update_db_foreign_keys(self, model: BaseModel) -> None: ... + def read(self, records: BaseModel) -> None: ... + def write_real(self, records_commands_list: _CommandList, create: bool = ...): ... + def write_new(self, records_commands_list: _CommandList): ... class Id(Field): - type: str = ... - column_type: Any = ... - string: str = ... - store: bool = ... - readonly: bool = ... - prefetch: bool = ... - def update_db(self, model: Any, columns: Any) -> None: ... - def __get__(self, record: Any, owner: Any): ... - def __set__(self, record: Any, value: Any) -> None: ... + type: str + column_type: tuple[str, str] + string: str + store: bool + readonly: bool + prefetch: bool + def update_db(self, model: BaseModel, columns) -> None: ... + def __get__(self, record: BaseModel, owner): ... + def __set__(self, record: BaseModel, value) -> None: ... -def prefetch_many2one_ids(record: Any, field: Any): ... -def prefetch_x2many_ids(record: Any, field: Any): ... -def apply_required(model: Any, field_name: Any) -> None: ... +def prefetch_many2one_ids(record: BaseModel, field: Field) -> Iterator: ... +def prefetch_x2many_ids(record: BaseModel, field: Field) -> Iterator: ... +def apply_required(model: BaseModel, field_name: str) -> None: ...