diff --git a/odoo-stubs/fields.pyi b/odoo-stubs/fields.pyi index fda4899..2286636 100644 --- a/odoo-stubs/fields.pyi +++ b/odoo-stubs/fields.pyi @@ -137,7 +137,6 @@ class Field(metaclass=MetaField): 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): ... @@ -156,7 +155,7 @@ class Field(metaclass=MetaField): 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 write(self, records: _ModelT, value) -> None: ... def __get__(self, record: Union[BaseModel, None], owner): ... def mapped(self, records: BaseModel): ... def __set__(self, records: BaseModel, value): ... @@ -235,7 +234,7 @@ class _String(Field): def get_trans_func(self, records: BaseModel) -> Callable: ... def get_translation_dictionary(self, from_lang_value: str, to_lang_values: dict) -> dict: ... def _get_stored_translations(self, record: BaseModel) -> dict[str, str]: ... - def write(self, records: _ModelT, value) -> _ModelT: ... + def write(self, records: _ModelT, value) -> None: ... class Char(_String): type: str @@ -348,7 +347,7 @@ class Binary(Field): 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: ... + def write(self, records: _ModelT, value) -> None: ... class Image(Binary): max_width: int @@ -405,7 +404,6 @@ class _Relational(Field): _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 @@ -429,7 +427,7 @@ class Many2one(_Relational): 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 write(self, records: _ModelT, value) -> None: ... def _remove_inverses(self, records: BaseModel, value): ... def _update_inverses(self, records: BaseModel, value) -> None: ... @@ -438,7 +436,6 @@ class Many2oneReference(Integer): 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]: ... @@ -475,7 +472,7 @@ class Properties(Field): def convert_to_write(self, value, record: BaseModel): ... def convert_to_onchange(self, value, record: BaseModel, names): ... def read(self, records: BaseModel) -> None: ... - def write(self, records: _ModelT, value) -> _ModelT: ... + def write(self, records: _ModelT, value) -> None: ... def _compute(self, records: BaseModel) -> None: ... def _add_default_values(self, env: Environment, values: dict[str, Any]): ... def _get_properties_definition(self, record: BaseModel): ... @@ -532,7 +529,7 @@ class Command(enum.IntEnum): class _RelationalMulti(_Relational): write_sequence: int - def _update(self, records: BaseModel, value): ... + def _update(self, records: BaseModel, value) -> None: ... 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): ... @@ -542,8 +539,8 @@ class _RelationalMulti(_Relational): def convert_to_display_name(self, value, record: BaseModel) -> None: ... def get_depends(self, model: BaseModel): ... 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 = ...): ... + def write(self, records: BaseModel, value) -> None: ... + def write_batch(self, records_commands_list: _CommandList, create: bool = ...) -> None: ... class One2many(_RelationalMulti): type: str @@ -557,7 +554,7 @@ class One2many(_RelationalMulti): 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_real(self, records_commands_list: _CommandList, create: bool = ...) -> None: ... def write_new(self, records_commands_list: _CommandList): ... class Many2many(_RelationalMulti): @@ -575,8 +572,8 @@ class Many2many(_RelationalMulti): @property def groupable(self) -> bool: ... def read(self, records: BaseModel) -> None: ... - def write_real(self, records_commands_list: _CommandList, create: bool = ...): ... - def write_new(self, records_commands_list: _CommandList): ... + def write_real(self, records_commands_list: _CommandList, create: bool = ...) -> None: ... + def write_new(self, records_commands_list: _CommandList) -> None: ... class Id(Field): type: str diff --git a/odoo-stubs/http.pyi b/odoo-stubs/http.pyi index c03af1f..ae5d47f 100644 --- a/odoo-stubs/http.pyi +++ b/odoo-stubs/http.pyi @@ -198,6 +198,8 @@ class Request: @cr.setter def cr(self, value) -> None: ... _cr: Cursor + @property + def best_lang(self) -> str | None: ... def csrf_token(self, time_limit: int | None = ...) -> str: ... def validate_csrf(self, csrf: str) -> bool: ... def default_context(self) -> dict: ... @@ -239,14 +241,14 @@ class Dispatcher(ABC): def dispatch(self, endpoint, args): ... def post_dispatch(self, response: werkzeug.Response) -> None: ... @abstractmethod - def handle_error(self, exc: Exception): ... + def handle_error(self, exc: Exception) -> Callable: ... class HttpDispatcher(Dispatcher): routing_type: str @classmethod def is_compatible_with(cls, request: Request) -> Literal[True]: ... def dispatch(self, endpoint, args): ... - def handle_error(self, exc: Exception): ... + def handle_error(self, exc: Exception) -> Callable: ... class JsonRPCDispatcher(Dispatcher): routing_type: str @@ -255,7 +257,7 @@ class JsonRPCDispatcher(Dispatcher): @classmethod def is_compatible_with(cls, request: Request) -> bool: ... def dispatch(self, endpoint, args): ... - def handle_error(self, exc: Exception) -> Response: ... + def handle_error(self, exc: Exception) -> Callable: ... def _response(self, result: Any | None = ..., error: Any | None = ...) -> Response: ... class Application: diff --git a/odoo-stubs/models.pyi b/odoo-stubs/models.pyi index 636b324..f6fc311 100644 --- a/odoo-stubs/models.pyi +++ b/odoo-stubs/models.pyi @@ -142,7 +142,6 @@ class BaseModel(metaclass=MetaModel): def _convert_records(self, records, log: Callable = ...) -> Iterator[tuple[Any, Any, Any, dict]]: ... def _validate_fields(self, field_names: Iterable[str], excluded_names: Iterable[str] = ...) -> None: ... def default_get(self, fields_list: list[str]) -> dict[str, Any]: ... - def fields_get_keys(self) -> list[str]: ... def _rec_name_fallback(self) -> str: ... def user_has_groups(self, groups: str) -> bool: ... def search_count(self, domain: _Domain, limit: int | None = ...) -> int: ... @@ -228,7 +227,6 @@ class BaseModel(metaclass=MetaModel): def _check_m2m_recursion(self, field_name: str) -> bool: ... def _get_external_ids(self) -> dict[int, list[str]]: ... def get_external_id(self) -> dict[int, str]: ... - def get_xml_id(self) -> dict[int, str]: ... @classmethod def is_transient(cls) -> bool: ... def search_read(self, domain: _Domain | None = ..., fields: list[str] | None = ..., offset: int = ..., limit: int | None = ..., order: str | None = ..., **read_kwargs: str) -> list[dict[str, Any]]: ... @@ -261,7 +259,6 @@ class BaseModel(metaclass=MetaModel): def filtered_domain(self: _ModelT, domain: _Domain) -> _ModelT: ... def sorted(self: _ModelT, key: Callable | str | None = ..., reverse: bool = ...) -> _ModelT: ... def update(self, values: dict[str, Any]) -> None: ... - def flush(self, fnames: Collection[str] | None = ..., records: BaseModel | None = ...) -> None: ... def flush_model(self, fnames: Iterable[str] | None = ...) -> None: ... def flush_recordset(self, fnames: Iterable[str] | None = ...) -> None: ... def _flush(self, fnames: Iterable[str] | None = ...) -> None: ... @@ -292,14 +289,11 @@ class BaseModel(metaclass=MetaModel): @property def _cache(self) -> RecordCache: ... def _in_cache_without(self: _ModelT, field: Field, limit: int = ...) -> _ModelT: ... - def refresh(self) -> None: ... - def invalidate_cache(self, fnames: Collection[str] | None = ..., ids: Iterable[int] | None = ...) -> None: ... def invalidate_model(self, fnames: Iterable[str] | None = ..., flush: bool = ...) -> None: ... def invalidate_recordset(self, fnames: Iterable[str] | None = ..., flush: bool = ...) -> None: ... def _invalidate_cache(self, fnames: Iterable[str] | None = ..., ids: Iterable[int] | None = ...) -> None: ... def modified(self, fnames: Collection[str], create: bool = ..., before: bool = ...) -> None: ... def _modified_triggers(self: _ModelT, tree: dict[Field | None, Any], create: bool = ...) -> Iterator[tuple[Field, _ModelT, bool]]: ... - def recompute(self, fnames: Collection[str] | None = ..., records: Union[BaseModel, None] = ...) -> None: ... def _recompute_model(self, fnames: Iterable[str] | None = ...) -> None: ... def _recompute_recordset(self, fnames: Iterable[str] | None = ...) -> None: ... def _recompute_field(self, field: Field, ids: Iterable[int] | None = ...) -> None: ... diff --git a/odoo-stubs/modules/registry.pyi b/odoo-stubs/modules/registry.pyi index e763948..f2374a8 100644 --- a/odoo-stubs/modules/registry.pyi +++ b/odoo-stubs/modules/registry.pyi @@ -2,7 +2,7 @@ import threading from collections import defaultdict, deque from collections.abc import Mapping from threading import RLock -from typing import Any, Callable, ClassVar, Iterable, Iterator +from typing import Any, Callable, ClassVar, Collection, Iterable, Iterator from .graph import Node from ..models import BaseModel @@ -22,6 +22,7 @@ class Registry(Mapping[str, type[BaseModel]]): models: dict[str, type[BaseModel]] _sql_constraints: set _init: bool + _database_translated_fields: Collection[str] _assertion_report: OdooTestResult _fields_by_model: Any _ordinary_tables: set[str] | None diff --git a/odoo-stubs/netsvc.pyi b/odoo-stubs/netsvc.pyi index 89d65e6..452e196 100644 --- a/odoo-stubs/netsvc.pyi +++ b/odoo-stubs/netsvc.pyi @@ -1,10 +1,16 @@ import logging.handlers import warnings from logging import Logger, LogRecord -from typing import TextIO +from typing import IO, TextIO def log(logger: Logger, level: int, prefix: str, msg, depth: int | None = ...) -> None: ... +class WatchedFileHandler(logging.handlers.WatchedFileHandler): + errors: None + _builtin_open: None + def __init__(self, filename: str) -> None: ... + def _open(self) -> IO: ... + class PostgreSQLHandler(logging.Handler): def emit(self, record: LogRecord) -> None: ... diff --git a/odoo-stubs/service/server.pyi b/odoo-stubs/service/server.pyi index 180c654..9373368 100644 --- a/odoo-stubs/service/server.pyi +++ b/odoo-stubs/service/server.pyi @@ -34,6 +34,8 @@ class RequestHandler(werkzeug.serving.WSGIRequestHandler): def setup(self) -> None: ... protocol_version: str def make_environ(self) -> dict[str, Any]: ... + close_connection: bool + def send_header(self, keyword, value) -> None: ... class ThreadedWSGIServerReloadable(LoggingBaseWSGIServerMixIn, werkzeug.serving.ThreadedWSGIServer): max_http_threads: Any diff --git a/odoo-stubs/sql_db.pyi b/odoo-stubs/sql_db.pyi index f62c44b..d2812ff 100644 --- a/odoo-stubs/sql_db.pyi +++ b/odoo-stubs/sql_db.pyi @@ -19,6 +19,7 @@ real_time: Callable re_from: Pattern re_into: Pattern sql_counter: int +MAX_IDLE_TIMEOUT: int class Savepoint: name: str @@ -68,7 +69,7 @@ class Cursor(BaseCursor): __caller: tuple[str, int | str] | Literal[False] cache: dict _now: datetime | None - def __init__(self, pool: ConnectionPool, dbname: str, dsn: dict, **kwargs) -> None: ... + def __init__(self, pool: ConnectionPool, dbname: str, dsn: dict) -> None: ... def __build_dict(self, row: Sequence) -> dict[str, Any]: ... def dictfetchone(self) -> dict[str, Any] | None: ... def dictfetchmany(self, size) -> list[dict[str, Any]]: ... @@ -81,7 +82,6 @@ class Cursor(BaseCursor): def _enable_logging(self) -> Generator[None, None, None]: ... def close(self): ... def _close(self, leak: bool = ...) -> None: ... - def autocommit(self, on: bool) -> None: ... def commit(self): ... def rollback(self): ... def __getattr__(self, name: str): ... @@ -99,7 +99,6 @@ class TestCursor(BaseCursor): def __init__(self, cursor: Cursor, lock: RLock) -> None: ... def execute(self, *args, **kwargs): ... def close(self) -> None: ... - def autocommit(self, on: bool) -> None: ... def commit(self) -> None: ... def rollback(self) -> None: ... def __getattr__(self, name: str): ... @@ -123,8 +122,7 @@ class Connection: dsn: dict __pool: ConnectionPool def __init__(self, pool: ConnectionPool, dbname: str, dsn: dict) -> None: ... - def cursor(self, **kwargs) -> Cursor: ... - def serialized_cursor(self, **kwargs) -> Cursor: ... + def cursor(self) -> Cursor: ... def __bool__(self) -> NoReturn: ... def connection_info_for(db_or_uri: str) -> tuple[str, dict]: ... diff --git a/odoo-stubs/tools/pdf.pyi b/odoo-stubs/tools/pdf.pyi index 235d2c9..40741dd 100644 --- a/odoo-stubs/tools/pdf.pyi +++ b/odoo-stubs/tools/pdf.pyi @@ -18,6 +18,7 @@ PdfFileWriter = BrandedFileWriter def merge_pdf(pdf_data: Iterable[bytes]) -> bytes: ... def rotate_pdf(pdf: bytes) -> bytes: ... +def to_pdf_stream(attachment: 'odoo.model.ir_attachment') -> BytesIO: ... def add_banner(pdf_stream: str | BinaryIO, text: str | None = ..., logo: bool = ..., thickness: float = ...) -> BytesIO: ... class OdooPdfFileReader(PdfFileReader):