diff --git a/odoo-stubs/__init__.pyi b/odoo-stubs/__init__.pyi index b7caa79..32744e8 100644 --- a/odoo-stubs/__init__.pyi +++ b/odoo-stubs/__init__.pyi @@ -1,5 +1,3 @@ -from psycopg2 import connection - from . import addons as addons from . import api as api from . import conf as conf @@ -18,13 +16,7 @@ from .tools.translate import _ as _ from .tools.translate import _lt as _lt evented: bool - -def gevent_wait_callback(conn: connection, timeout: float | None = ...) -> None: ... - multi_process: bool - -def _decompress(data: bytes) -> bytes: ... - SUPERUSER_ID: int def registry(database_name: str | None = ...) -> Registry: ... diff --git a/odoo-stubs/api.pyi b/odoo-stubs/api.pyi index 2e3c619..2e05c00 100644 --- a/odoo-stubs/api.pyi +++ b/odoo-stubs/api.pyi @@ -6,7 +6,6 @@ from typing import ( Iterable, Iterator, KeysView, - Literal, Mapping, Optional, TypeVar, @@ -14,7 +13,8 @@ from typing import ( ) from weakref import WeakSet -from werkzeug.local import Local +from odoo.addons.base.models.res_company import Company +from odoo.addons.base.models.res_users import Users from .fields import Field from .models import BaseModel @@ -32,7 +32,6 @@ class Params: args: tuple kwargs: dict def __init__(self, args: tuple, kwargs: dict) -> None: ... - def __str__(self) -> str: ... class Meta(type): def __new__(meta, name: str, bases: tuple, attrs: dict): ... @@ -49,19 +48,8 @@ def returns( def downgrade(method: Callable, value, self, args, kwargs): ... def split_context(method: Callable, args, kwargs) -> tuple: ... def model(method: _CallableT) -> _CallableT: ... -def _model_create_single( - create: Callable[..., _ModelT], self: _ModelT, arg -) -> _ModelT: ... def model_create_single(method: _CallableT) -> _CallableT: ... -def _model_create_multi( - create: Callable[..., _ModelT], self: _ModelT, arg -) -> _ModelT: ... def model_create_multi(method: _CallableT) -> _CallableT: ... -def _call_kw_model(method: Callable[..., _ModelT], self: _ModelT, args, kwargs): ... -def _call_kw_model_create( - method: Callable[..., _ModelT], self: _ModelT, args, kwargs -) -> list[int] | int | Literal[False]: ... -def _call_kw_multi(method: Callable[..., _ModelT], self: _ModelT, args, kwargs): ... def call_kw(model: BaseModel, name: str, args, kwargs): ... class Environment(Mapping[str, BaseModel]): @@ -69,7 +57,6 @@ class Environment(Mapping[str, BaseModel]): uid: int = ... context: dict[str, Any] = ... su: bool = ... - _local: Local envs: Environments args: tuple[Cursor, int, dict, bool] @classmethod @@ -79,7 +66,6 @@ class Environment(Mapping[str, BaseModel]): all: Environments registry: Registry cache: Cache - _protected: StackMap[Field, set[int]] def __new__( cls, cr: Cursor, uid: int, context: dict, su: bool = ... ) -> Environment: ... @@ -93,7 +79,7 @@ class Environment(Mapping[str, BaseModel]): def __call__( self, cr: Cursor | None = ..., - user: Union["odoo.model.res_users", int, None] = ..., + user: "Union[Users, int, None]" = ..., context: dict | None = ..., su: bool | None = ..., ) -> Environment: ... @@ -104,11 +90,11 @@ class Environment(Mapping[str, BaseModel]): def is_admin(self) -> bool: ... def is_system(self) -> bool: ... @property - def user(self) -> "odoo.model.res_users": ... + def user(self) -> "Users": ... @property - def company(self) -> "odoo.model.res_company": ... + def company(self) -> "Company": ... @property - def companies(self) -> "odoo.model.res_company": ... + def companies(self) -> "Company": ... @property def lang(self) -> str: ... def clear(self) -> None: ... @@ -139,7 +125,6 @@ class Environments: NOTHING: object class Cache: - _data: defaultdict[Field, dict] def __init__(self) -> None: ... def contains(self, record: BaseModel, field: Field) -> bool: ... def get(self, record: BaseModel, field: Field, default=...): ... diff --git a/odoo-stubs/fields.pyi b/odoo-stubs/fields.pyi index fc707aa..b652512 100644 --- a/odoo-stubs/fields.pyi +++ b/odoo-stubs/fields.pyi @@ -6,7 +6,6 @@ from typing import ( Generic, Iterator, Sequence, - Type, TypeVar, Union, overload, @@ -51,13 +50,7 @@ class Field(Generic[_FieldValueT], metaclass=MetaField): column_type: tuple[str, str] | None column_format: str column_cast_from: tuple[str, ...] - _slots: dict[str, Any] args: dict[str, Any] | None - _attrs: dict[str | None] - _module: str - _modules: set[str] - _setup_done: str | None - _sequence: int | None automatic: bool inherited: bool inherited_field: Field | None @@ -98,54 +91,15 @@ class Field(Generic[_FieldValueT], metaclass=MetaField): def __setattr__(self, name, value) -> None: ... def set_all_attrs(self, attrs) -> None: ... def __delattr__(self, name) -> None: ... - 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: ... - 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) -> 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 cache_key(self, env: Environment) -> tuple: ... recursive: bool def resolve_depends(self, model: BaseModel) -> 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) -> bool: ... - @property - def _description_sortable(self) -> bool: ... - def _description_string(self, env: Environment) -> str | None: ... - def _description_help(self, env: Environment) -> str | None: ... def null(self, record: BaseModel) -> bool: ... def convert_to_column( self, value, record: BaseModel, values: Any | None = ..., validate: bool = ... @@ -188,7 +142,6 @@ class Boolean(Field[bool]): class Integer(Field[int]): type: str column_type: tuple[str, str] - _slots: dict[str, Any] def convert_to_column( self, value, record: BaseModel, values: Any | None = ..., validate: bool = ... ) -> int: ... @@ -197,22 +150,17 @@ class Integer(Field[int]): ) -> 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[float]): type: str column_cast_from: tuple[str, str, str] - _slots: dict[str, Any] - _digits: tuple[int, int] | str | None def __init__( self, string: str = ..., digits: tuple[int, int] | str | None = ..., **kwargs ) -> None: ... @property def column_type(self): ... def get_digits(self, env: Environment) -> tuple[int, int]: ... - _related__digits: Any - def _description_digits(self, env: Environment) -> tuple[int, int]: ... def convert_to_column( self, value, record: BaseModel, values: Any | None = ..., validate: bool = ... ) -> float: ... @@ -226,16 +174,11 @@ class Monetary(Field[float]): type: str column_type: tuple[str, str] column_cast_from: tuple[str] - _slots: dict[str, Any] 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: ... @@ -247,13 +190,9 @@ class Monetary(Field[float]): def convert_to_write(self, value, record: BaseModel): ... class _String(Field[str]): - _slots: dict[str, 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): ... @@ -262,17 +201,11 @@ class _String(Field[str]): class Char(_String): type: str column_cast_from: tuple[str] - _slots: dict[str, Any] size: int | None trim: bool @property 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: ... @@ -289,7 +222,6 @@ class Text(_String): class Html(_String): type: str column_type: tuple[str, str] - _slots: dict[str, Any] sanitize: bool sanitize_tags: bool sanitize_attributes: bool @@ -297,19 +229,6 @@ class Html(_String): 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: ... @@ -368,18 +287,13 @@ class Datetime(Field[datetime.datetime]): def convert_to_export(self, value, record: BaseModel): ... def convert_to_display_name(self, value, record: BaseModel) -> str: ... -_BINARY = memoryview - class Binary(Field[bytes]): type: str - _slots: dict[str, Any] prefetch: bool depends_context: tuple[str] attachment: bool @property 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: ... @@ -393,29 +307,20 @@ class Binary(Field[bytes]): def write(self, records: _ModelT, value) -> _ModelT: ... class Image(Binary): - _slots: dict[str, 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[str]): type: str column_type: tuple[str, str] - _slots: dict[str, Any] selection: _SelectionRaw validate: bool 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 _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) -> list[str]: ... def convert_to_column( self, value, record: BaseModel, values: Any | None = ..., validate: bool = ... @@ -442,37 +347,25 @@ class Reference(Selection): class _Relational(Field[BaseModel]): relational: bool - _slots: dict[str, Any] domain: _DomainRaw context: dict check_company: bool comodel_name: str - def _setup_regular_base(self, model: BaseModel) -> None: ... def get_domain_list(self, model: BaseModel) -> _Domain: ... - @property - 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: tuple[str, str] - _slots: dict[str, Any] 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 = ... ): ... @@ -484,36 +377,26 @@ class Many2one(_Relational): 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 - _slots: dict[str, Any] 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): 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_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: ... - 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 - _slots: dict[str, Any] inverse_name: str | None auto_join: bool limit: int | None @@ -525,8 +408,6 @@ class One2many(_RelationalMulti): 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 read(self, records: BaseModel): ... @@ -535,8 +416,6 @@ class One2many(_RelationalMulti): class Many2many(_RelationalMulti): type: str - _slots: dict[str, Any] - _explicit: bool relation: str | None column1: str | None column2: str | None @@ -552,8 +431,6 @@ class Many2many(_RelationalMulti): 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: ... @@ -563,7 +440,6 @@ class Many2many(_RelationalMulti): class Id(Field[int]): type: str column_type: tuple[str, str] - _slots: dict[str, Any] string: str store: bool readonly: bool diff --git a/odoo-stubs/http.pyi b/odoo-stubs/http.pyi index 20d868f..7d37220 100644 --- a/odoo-stubs/http.pyi +++ b/odoo-stubs/http.pyi @@ -1,11 +1,12 @@ from logging import Logger -from typing import Any, Callable, Collection, Generator, TypeVar +from typing import Any, Callable, Generator, TypeVar import werkzeug.contrib.sessions import werkzeug.wrappers +from odoo.addons.base.models.res_lang import Lang +from odoo.addons.website.models.website import Website from werkzeug.datastructures import CombinedMultiDict from werkzeug.exceptions import NotFound -from werkzeug.local import LocalStack from werkzeug.routing import Map from .api import Environment @@ -19,7 +20,6 @@ rpc_response: Logger STATIC_CACHE: int STATIC_CACHE_LONG: int ALLOWED_DEBUG_MODES: list[str] -_request_stack: LocalStack request: HttpRequest | JsonRequest def replace_request_password(args) -> tuple: ... @@ -39,16 +39,11 @@ class WebRequest: endpoint: EndPoint | None endpoint_arguments: Any auth_method: str | None - website: "odoo.model.website" + website: "Website" website_routing: int is_frontend: bool is_frontend_multilang: bool - lang: "odoo.model.res_lang" - _cr: Cursor | None - _uid: int | None - _context: dict | None - _env: Environment | None - _failed: Exception | None + lang: "Lang" def __init__(self, httprequest: werkzeug.wrappers.Request) -> None: ... @property def cr(self) -> Cursor: ... @@ -67,8 +62,6 @@ class WebRequest: def __enter__(self: _T) -> _T: ... def __exit__(self, exc_type, exc_value, traceback) -> None: ... def set_handler(self, endpoint: EndPoint, arguments, auth) -> None: ... - def _handle_exception(self, exception: Exception) -> None: ... - def _call_function(self, *args, **kwargs): ... def registry_cr(self) -> Generator[tuple[Registry, Cursor], None, None]: ... @property def registry(self) -> Registry: ... @@ -88,24 +81,17 @@ def route( ): ... class JsonRequest(WebRequest): - _request_type: str params: dict jsonrequest: Any context: dict def __init__(self, *args) -> None: ... - def _json_response( - self, result: Any | None = ..., error: dict | None = ... - ) -> Response: ... - def _handle_exception(self, exception: Exception) -> Response: ... def dispatch(self) -> Response: ... def serialize_exception(e: Exception) -> dict[str, Any]: ... class HttpRequest(WebRequest): - _request_type: str params: dict def __init__(self, *args) -> None: ... - def _handle_exception(self, exception: Exception): ... def dispatch(self): ... def make_response( self, @@ -137,12 +123,6 @@ class EndPoint: def __call__(self, *args, **kw): ... def __eq__(self, other) -> bool: ... def __hash__(self) -> int: ... - def _as_tuple(self) -> tuple[Callable, dict]: ... - def __repr__(self) -> str: ... - -def _generate_routing_rules( - modules: Collection[str], nodb_only: bool, converters: Any | None = ... -) -> Generator[tuple[str, EndPoint, dict], None, None]: ... class AuthenticationError(Exception): ... class SessionExpiredException(Exception): ... @@ -167,10 +147,8 @@ class OpenERPSession(werkzeug.contrib.sessions.Session): ) -> int: ... def check_security(self) -> None: ... def logout(self, keep_db: bool = ...) -> None: ... - def _default_values(self) -> None: ... context: dict def get_context(self) -> dict: ... - def _fix_lang(self, context: dict) -> None: ... def save_action(self, action) -> int: ... def get_action(self, key: int): ... def save_request_data(self) -> None: ... @@ -203,7 +181,6 @@ class DisableCacheMiddleware: def __call__(self, environ: dict, start_response: Callable): ... class Root: - _loaded: bool def __init__(self) -> None: ... @property def session_store(self) -> werkzeug.contrib.sessions.FilesystemSessionStore: ... diff --git a/odoo-stubs/models.pyi b/odoo-stubs/models.pyi index 1bc95b3..d4cee25 100644 --- a/odoo-stubs/models.pyi +++ b/odoo-stubs/models.pyi @@ -17,6 +17,7 @@ from typing import ( import psycopg2 from lxml.etree import _Element +from odoo.addons.base.models.res_partner import Partner from . import api, fields from .api import Environment @@ -51,7 +52,6 @@ class MetaModel(api.Meta): def __init__( self: type[BaseModel], name: str, bases: tuple, attrs: dict ) -> None: ... - def _get_addon_name(self, full_name: str) -> str: ... class NewId: origin: int | None @@ -60,7 +60,6 @@ class NewId: def __bool__(self) -> bool: ... def __eq__(self, other) -> bool: ... def __hash__(self) -> int: ... - def __repr__(self) -> str: ... def origin_ids(ids: Iterable) -> Iterator[int]: ... def expand_ids(id0: _T, ids: Iterable) -> Iterator[_T]: ... @@ -446,9 +445,7 @@ class BaseModel(metaclass=MetaModel): def ensure_one(self: _ModelT) -> _ModelT: ... def with_env(self: _ModelT, env: Environment) -> _ModelT: ... def sudo(self: _ModelT, flag: bool = ...) -> _ModelT: ... - def with_user( - self: _ModelT, user: Union["odoo.model.res_partner", int] - ) -> _ModelT: ... + def with_user(self: _ModelT, user: "Union[Partner, int]") -> _ModelT: ... def with_context(self: _ModelT, *args, **kwargs) -> _ModelT: ... def with_prefetch( self: _ModelT, prefetch_ids: Iterable[int] | None = ... @@ -491,7 +488,7 @@ class BaseModel(metaclass=MetaModel): def __le__(self: _ModelT, other: _ModelT) -> bool: ... def __gt__(self: _ModelT, other: _ModelT) -> bool: ... def __ge__(self: _ModelT, other: _ModelT) -> bool: ... - def __int__(self): ... + def __int__(self) -> int: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... def __hash__(self) -> int: ... @@ -526,7 +523,6 @@ class BaseModel(metaclass=MetaModel): ) -> dict: ... class RecordCache(MutableMapping): - _record: BaseModel def __init__(self, record: BaseModel) -> None: ... def __contains__(self, name: str) -> bool: ... def __getitem__(self, name: str) -> Any: ... diff --git a/odoo-stubs/modules/graph.pyi b/odoo-stubs/modules/graph.pyi index 429cfdc..3ac676e 100644 --- a/odoo-stubs/modules/graph.pyi +++ b/odoo-stubs/modules/graph.pyi @@ -10,7 +10,6 @@ class Graph(dict[str, Node]): self, cr: Cursor, module_list: list[str], force: list | None = ... ): ... def __iter__(self) -> Iterator[Node]: ... - def __str__(self) -> str: ... class Node: def __new__(cls, name: str, graph: Graph, info: dict[str, Any]) -> Node: ... @@ -31,8 +30,6 @@ class Node: def add_child(self, name: str, info: dict[str, Any]): ... def __setattr__(self, name: str, value) -> None: ... def __iter__(self) -> Iterator[Node]: ... - def __str__(self) -> str: ... - def _pprint(self, depth: int = ...) -> str: ... def should_have_demo(self) -> bool: ... @property def parents(self) -> Iterable[Node]: ... diff --git a/odoo-stubs/modules/loading.pyi b/odoo-stubs/modules/loading.pyi index ff82f88..4c7fac4 100644 --- a/odoo-stubs/modules/loading.pyi +++ b/odoo-stubs/modules/loading.pyi @@ -1,4 +1,4 @@ -from typing import Any, Iterable +from typing import Any from ..sql_db import Connection, Cursor from ..tools.assertion_report import assertion_report @@ -30,7 +30,6 @@ def load_module_graph( report: assertion_report | None = ..., models_to_check: set[str] | None = ..., ) -> tuple[list[str], list[str]]: ... -def _check_module_names(cr: Cursor, module_names: Iterable[str]) -> None: ... def load_marked_modules( cr: Cursor, graph: Graph, diff --git a/odoo-stubs/modules/migration.pyi b/odoo-stubs/modules/migration.pyi index 9eb5a72..7435730 100644 --- a/odoo-stubs/modules/migration.pyi +++ b/odoo-stubs/modules/migration.pyi @@ -10,5 +10,4 @@ class MigrationManager: graph: Graph migrations: dict def __init__(self, cr: Cursor, graph: Graph) -> None: ... - def _get_files(self) -> None: ... def migrate_module(self, pkg: Node, stage: str) -> None: ... diff --git a/odoo-stubs/modules/module.pyi b/odoo-stubs/modules/module.pyi index 258b313..9130b3b 100644 --- a/odoo-stubs/modules/module.pyi +++ b/odoo-stubs/modules/module.pyi @@ -42,8 +42,6 @@ def get_modules() -> list[str]: ... def get_modules_with_version() -> dict[str, Any]: ... def adapt_version(version: str) -> str: ... def get_test_modules(module: str) -> list: ... -def _get_tests_modules(path: str, module: str) -> list: ... -def _get_upgrade_test_modules(module) -> Generator[ModuleType, None, None]: ... class OdooTestResult(unittest.result.TestResult): def log( diff --git a/odoo-stubs/modules/registry.pyi b/odoo-stubs/modules/registry.pyi index c8a9d84..1c8f243 100644 --- a/odoo-stubs/modules/registry.pyi +++ b/odoo-stubs/modules/registry.pyi @@ -1,19 +1,14 @@ -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 weakref import WeakValueDictionary from ..models import BaseModel -from ..sql_db import Connection, Cursor -from ..tools.assertion_report import assertion_report +from ..sql_db import Cursor from ..tools.lru import LRU from .graph import Node class Registry(Mapping[str, type[BaseModel]]): - _lock: RLock - _saved_lock: RLock | None model_cache: WeakValueDictionary registries: ClassVar[LRU] def __new__(cls, db_name: str) -> Registry: ... @@ -26,24 +21,15 @@ class Registry(Mapping[str, type[BaseModel]]): update_module: bool = ..., ) -> Registry: ... models: dict[str, type[BaseModel]] - _sql_constraints: set - _init: bool - _assertion_report: assertion_report - _fields_by_model: Any - _post_init_queue: deque - _constraint_queue: deque - _init_modules: set[str] updated_modules: list[str] loaded_xmlids: set db_name: str - _db: Connection test_cr: Cursor | None test_lock: RLock | None loaded: bool ready: bool registry_sequence: int | None cache_sequence: int | None - _invalidation_flags: threading.local has_unaccent: bool populated_models: dict[str, list[int]] def init(self, db_name: str) -> None: ... @@ -58,19 +44,16 @@ class Registry(Mapping[str, type[BaseModel]]): def __setitem__(self, model_name: str, model: type[BaseModel]) -> None: ... def descendants(self, model_names: Iterable[str], *kinds) -> set[str]: ... def load(self, cr: Cursor, module: Node) -> set[str]: ... - _m2m: defaultdict[Any, list] def setup_models(self, cr: Cursor) -> None: ... def post_init(self, func: Callable, *args, **kwargs) -> None: ... def post_constraint(self, func: Callable, *args, **kwargs) -> None: ... def finalize_constraints(self) -> None: ... - _is_install: bool def init_models( self, cr: Cursor, model_names: Iterable[str], context: dict, install: bool = ... ) -> None: ... def check_tables_exist(self, cr: Cursor) -> None: ... @property def cache(self) -> LRU: ... - def _clear_cache(self) -> None: ... def clear_caches(self) -> None: ... @property def registry_invalidated(self) -> bool: ... diff --git a/odoo-stubs/netsvc.pyi b/odoo-stubs/netsvc.pyi index c8b5454..a951081 100644 --- a/odoo-stubs/netsvc.pyi +++ b/odoo-stubs/netsvc.pyi @@ -41,8 +41,6 @@ class DBFormatter(logging.Formatter): class ColoredFormatter(DBFormatter): def format(self, record: LogRecord): ... -_logger_init: bool - def init_logger(): ... DEFAULT_LOG_CONFIGURATION: list[str] diff --git a/odoo-stubs/osv/expression.pyi b/odoo-stubs/osv/expression.pyi index 6a73469..4170f0e 100644 --- a/odoo-stubs/osv/expression.pyi +++ b/odoo-stubs/osv/expression.pyi @@ -27,8 +27,6 @@ def combine(operator: str, unit, zero, domains: list[_Domain]) -> _Domain: ... def AND(domains: list[_Domain]) -> _Domain: ... def OR(domains: list[_Domain]) -> _Domain: ... def distribute_not(domain: _Domain) -> _Domain: ... -def _quote(to_quote: str) -> str: ... -def _shorten_alias(alias: str) -> str: ... def generate_table_alias( src_table_alias: str, joined_tables: list = ... ) -> tuple[str, str]: ... @@ -53,7 +51,6 @@ class ExtendedLeaf: join_context: list[tuple] leaf: Any model: BaseModel - _models: list[BaseModel] def __init__( self, leaf, @@ -61,12 +58,10 @@ class ExtendedLeaf: join_context: list[tuple] | None = ..., internal: bool = ..., ) -> None: ... - def __str__(self) -> str: ... def generate_alias(self) -> str: ... def add_join_context(self, model, lhs_col, table_col, link) -> None: ... def get_join_conditions(self) -> list[str]: ... def get_tables(self) -> set[str]: ... - def _get_context_debug(self) -> list[str]: ... def check_leaf(self, internal: bool = ...) -> None: ... def is_operator(self) -> bool: ... def is_true_leaf(self) -> bool: ... @@ -82,7 +77,6 @@ def create_substitution_leaf( ) -> ExtendedLeaf: ... class expression: - _unaccent: Callable[[Any], str] joins: list root_model: BaseModel expression: _Domain @@ -92,5 +86,4 @@ class expression: result: list stack: list def parse(self): ... - def __leaf_to_sql(self, eleaf: ExtendedLeaf) -> tuple[str, list]: ... def to_sql(self) -> tuple[str, list]: ... diff --git a/odoo-stubs/osv/query.pyi b/odoo-stubs/osv/query.pyi index 4e65320..e26615c 100644 --- a/odoo-stubs/osv/query.pyi +++ b/odoo-stubs/osv/query.pyi @@ -1,5 +1,3 @@ -def _quote(to_quote: str) -> str: ... - class Query: tables: list[str] = ... where_clause: list = ... @@ -14,8 +12,6 @@ class Query: joins: dict | None = ..., extras: dict | None = ..., ) -> None: ... - def _get_table_aliases(self) -> list: ... - def _get_alias_mapping(self) -> dict: ... def add_join( self, connection: tuple, @@ -25,4 +21,3 @@ class Query: extra_params: list = ..., ): ... def get_sql(self) -> str: ... - def __str__(self) -> str: ... diff --git a/odoo-stubs/service/db.pyi b/odoo-stubs/service/db.pyi index 30c239d..1a55e9b 100644 --- a/odoo-stubs/service/db.pyi +++ b/odoo-stubs/service/db.pyi @@ -9,17 +9,6 @@ class DatabaseExists(Warning): ... def check_db_management_enabled(method: _CallableT) -> _CallableT: ... def check_super(passwd: str) -> Literal[True]: ... -def _initialize_db( - id, - db_name: str, - demo: bool, - lang: str, - user_password: str, - login: str = ..., - country_code: str | None = ..., - phone: str | None = ..., -) -> None: ... -def _create_empty_database(name: str) -> None: ... def exp_create_database( db_name: str, demo: bool, @@ -30,7 +19,6 @@ def exp_create_database( phone: str | None = ..., ) -> Literal[True]: ... def exp_duplicate_database(db_original_name: str, db_name: str) -> Literal[True]: ... -def _drop_conn(cr: Cursor, db_name: str) -> None: ... def exp_drop(db_name: str) -> bool: ... def exp_dump(db_name: str, format: str) -> str: ... def dump_db_manifest(cr: Cursor) -> dict[str, Any]: ... diff --git a/odoo-stubs/service/model.pyi b/odoo-stubs/service/model.pyi index edbecc5..e42842f 100644 --- a/odoo-stubs/service/model.pyi +++ b/odoo-stubs/service/model.pyi @@ -2,11 +2,11 @@ from typing import Callable, TypeVar from ..sql_db import Cursor +_CallableT = TypeVar("_CallableT", bound=Callable) + PG_CONCURRENCY_ERRORS_TO_RETRY: tuple[str, str, str] MAX_TRIES_ON_CONCURRENCY_FAILURE: int -_CallableT = TypeVar("_CallableT", bound=Callable) - def dispatch(method: str, params): ... def check(f: _CallableT) -> _CallableT: ... def execute_cr(cr: Cursor, uid: int, obj: str, method: str, *args, **kw): ... diff --git a/odoo-stubs/service/server.pyi b/odoo-stubs/service/server.pyi index 96de13d..92924a0 100644 --- a/odoo-stubs/service/server.pyi +++ b/odoo-stubs/service/server.pyi @@ -1,7 +1,7 @@ from itertools import chain as chain from socket import socket as socket_ from threading import Semaphore, Thread -from typing import Any, Callable, Iterable, Literal, TypeVar +from typing import Any, Callable, Literal, TypeVar import werkzeug.serving from gevent.pywsgi import WSGIServer @@ -10,7 +10,6 @@ from psutil import Process from watchdog.observers import Observer from ..modules.registry import Registry -from ..sql_db import Cursor from ..tests import runner as runner _WorkerT = TypeVar("_WorkerT", bound=Worker) @@ -44,7 +43,6 @@ class ThreadedWSGIServerReloadable( def server_bind(self) -> None: ... def server_activate(self) -> None: ... def process_request(self, request, client_address) -> None: ... - def _handle_request_noblock(self) -> None: ... def shutdown_request(self, request) -> None: ... class FSWatcherBase: @@ -162,7 +160,6 @@ class Worker: def start(self) -> None: ... def stop(self) -> None: ... def run(self) -> None: ... - def _runloop(self) -> None: ... class WorkerHTTP(Worker): sock_timeout: float @@ -177,14 +174,12 @@ class WorkerCron(Worker): watchdog_timeout: int def __init__(self, multi: PreforkServer) -> None: ... def sleep(self) -> None: ... - def _db_list(self): ... def process_work(self) -> None: ... def start(self) -> None: ... server: CommonServer | None def load_server_wide_modules() -> None: ... -def _reexec(updated_modules: Iterable[str] | None = ...) -> None: ... def load_test_file_py(registry: Registry, test_file: str) -> None: ... def preload_registries(dbnames: list[str] | None): ... def start(preload: list[str] | None = ..., stop: bool = ...): ... diff --git a/odoo-stubs/service/wsgi_server.pyi b/odoo-stubs/service/wsgi_server.pyi index 9199e6e..08864b9 100644 --- a/odoo-stubs/service/wsgi_server.pyi +++ b/odoo-stubs/service/wsgi_server.pyi @@ -10,7 +10,6 @@ RPC_FAULT_CODE_ACCESS_ERROR: int def xmlrpc_handle_exception_int(e: Exception) -> str: ... def xmlrpc_handle_exception_string(e: Exception) -> str: ... -def _patch_xmlrpc_marshaller() -> None: ... def application_unproxied(environ, start_response): ... ProxyFix: Callable[..., ProxyFix_] diff --git a/odoo-stubs/sql_db.pyi b/odoo-stubs/sql_db.pyi index 24c7d60..1ce52e1 100644 --- a/odoo-stubs/sql_db.pyi +++ b/odoo-stubs/sql_db.pyi @@ -1,16 +1,6 @@ from re import Pattern -from threading import Lock, RLock -from typing import ( - Any, - Callable, - Generator, - Iterable, - Iterator, - Literal, - NoReturn, - Sequence, - TypeVar, -) +from threading import RLock +from typing import Any, Callable, Generator, Iterable, Iterator, NoReturn, TypeVar import psycopg2.extensions @@ -35,21 +25,11 @@ class Cursor: sql_into_log: dict sql_log: bool sql_log_count: int - _closed: bool - __pool: ConnectionPool dbname: str - _serialized: bool - _cnx: PsycoConnection - _obj: psycopg2.extensions.cursor - __caller: tuple[str, int | str] | Literal[False] - __closer: bool - _default_log_exceptions: bool cache: dict - _event_handlers: dict[str, list[Callable]] def __init__( self, pool: ConnectionPool, dbname: str, dsn: dict, serialized: bool = ... ) -> 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]]: ... def dictfetchall(self) -> list[dict[str, Any]]: ... @@ -62,10 +42,8 @@ class Cursor: ) -> Iterator[tuple]: ... def print_log(self): ... def close(self): ... - def _close(self, leak: bool = ...) -> None: ... def autocommit(self, on: bool) -> None: ... def after(self, event: str, func: Callable) -> None: ... - def _pop_event_handlers(self) -> dict[str, list[Callable]]: ... def commit(self): ... def rollback(self): ... def __enter__(self: _T) -> _T: ... @@ -76,11 +54,6 @@ class Cursor: def closed(self) -> bool: ... class TestCursor: - _savepoint_seq: Iterator[int] - _closed: bool - _cursor: Cursor - _lock: RLock - _savepoint: str def __init__(self, cursor: Cursor, lock: RLock) -> None: ... def close(self) -> None: ... def autocommit(self, on: bool) -> None: ... @@ -94,12 +67,7 @@ class PsycoConnection(psycopg2.extensions.connection): ... class ConnectionPool: def locked(fun: Callable[..., _T]) -> Callable[..., _T]: ... - _connections: list[tuple[psycopg2.extensions.connection, bool]] - _maxconn: int - _lock: Lock def __init__(self, maxconn: int = ...) -> None: ... - def __repr__(self) -> str: ... - def _debug(self, msg, *args) -> None: ... def borrow(self, connection_info: dict) -> PsycoConnection: ... def give_back( self, connection: PsycoConnection, keep_in_pool: bool = ... @@ -109,16 +77,12 @@ class ConnectionPool: class Connection: dbname: str dsn: dict - __pool: ConnectionPool def __init__(self, pool: ConnectionPool, dbname: str, dsn: dict) -> None: ... def cursor(self, serialized: bool = ...) -> Cursor: ... serialized_cursor = cursor def __bool__(self) -> NoReturn: ... def connection_info_for(db_or_uri: str) -> tuple[str, dict]: ... - -_Pool: ConnectionPool | None - def db_connect(to: str, allow_uri: bool = ...) -> Connection: ... def close_db(db_name: str) -> None: ... def close_all() -> None: ... diff --git a/odoo-stubs/tests/common.pyi b/odoo-stubs/tests/common.pyi index b249f82..ecd6e80 100644 --- a/odoo-stubs/tests/common.pyi +++ b/odoo-stubs/tests/common.pyi @@ -3,21 +3,11 @@ import logging import unittest from itertools import count from re import Pattern -from typing import ( - Any, - Callable, - Generator, - Generic, - Iterator, - Literal, - Mapping, - Match, - TypeVar, -) +from typing import Any, Callable, Generator, Generic, Iterator, Mapping, Match, TypeVar from xmlrpc import client as xmlrpclib import requests -from lxml.etree import _Element +from odoo.addons.base.models.res_users import Users from websocket import WebSocket from ..api import Environment @@ -47,20 +37,11 @@ def new_test_user( groups: str = ..., context: dict | None = ..., **kwargs -) -> "odoo.model.res_users": ... +) -> "Users": ... -class OdooSuite(unittest.suite.TestSuite): - def _handleClassSetUp(self, test, result) -> None: ... - def _createClassOrModuleLevelException( - self, result, exc, method_name, parent, info: Any | None = ... - ) -> None: ... - def _addClassOrModuleLevelException( - self, result, exception, errorName, info: Any | None = ... - ) -> None: ... - def _tearDownPreviousClass(self, test, result) -> None: ... +class OdooSuite(unittest.suite.TestSuite): ... class TreeCase(unittest.TestCase): - _class_cleanups: list @classmethod def addClassCleanup(cls, function, *args, **kwargs) -> None: ... @classmethod @@ -72,7 +53,6 @@ class MetaCase(type): def __init__(cls, name, bases, attrs) -> None: ... class BaseCase(TreeCase): - _class_cleanups: list tearDown_exceptions: list registry: Registry env: Environment @@ -90,7 +70,6 @@ class BaseCase(TreeCase): def uid(self, user) -> None: ... def ref(self, xid: str) -> int: ... def browse_ref(self, xid: str) -> BaseModel | None: ... - def _assertRaises(self, exception) -> Generator[Any, None, None]: ... def assertRaises( self, exception, func: Any | None = ..., *args, **kwargs ) -> Generator[Any, None, None] | None: ... @@ -119,7 +98,6 @@ class SingleTransactionCase(BaseCase): savepoint_seq: count[int] class SavepointCase(TransactionCase): - _savepoint_id: int def setUp(self) -> None: ... class ChromeBrowserException(Exception): ... @@ -144,40 +122,20 @@ class ChromeBrowser: def stop(self) -> None: ... @property def executable(self) -> str | None: ... - def _spawn_chrome(self, cmd: list[str]) -> int | None: ... - def _chrome_start(self) -> None: ... - def _find_websocket(self) -> None: ... - def _json_command( - self, command: str, timeout: int = ..., get_key: Any | None = ... - ): ... - def _open_websocket(self) -> None: ... - def _websocket_send(self, method: str, params: Any | None = ...) -> int | None: ... - def _get_message(self, raise_log_error: bool = ...) -> dict: ... - _TO_LEVEL: dict[str, int] - def _websocket_wait_id(self, awaited_id: int, timeout: int = ...) -> dict: ... - def _websocket_wait_event( - self, method: str, params: dict | None = ..., timeout: int = ... - ) -> dict | None: ... def take_screenshot(self, prefix: str = ..., suffix: str | None = ...) -> None: ... - def _save_screencast(self, prefix: str = ...) -> None: ... screencasts_frames_dir: str def start_screencast(self) -> None: ... def set_cookie(self, name: str, value, path, domain) -> dict: ... def delete_cookie(self, name: str, **kwargs) -> dict: ... - def _wait_ready(self, ready_code, timeout: int = ...) -> bool: ... - def _wait_code_ok(self, code, timeout: float) -> Literal[True] | None: ... def navigate_to(self, url: str, wait_stop: bool = ...) -> None: ... def clear(self) -> None: ... - def _from_remoteobject(self, arg: Mapping): ... LINE_PATTERN: str - def _format_stack(self, logrecord: Mapping) -> None: ... def console_formatter(self, args: list) -> Callable[[Match[str]], str]: ... class HttpCase(TransactionCase): registry_test_mode: bool browser: ChromeBrowser | None browser_size: str - _logger: logging.Logger xmlrpc_url: str xmlrpc_common: xmlrpclib.ServerProxy xmlrpc_db: xmlrpclib.ServerProxy @@ -199,7 +157,6 @@ class HttpCase(TransactionCase): timeout: int = ..., headers: Mapping | None = ..., ) -> requests.Response: ... - def _wait_remaining_requests(self, timeout: int = ...) -> None: ... def logout(self, keep_db: bool = ...) -> None: ... def authenticate(self, user, password) -> None: ... def browser_js( @@ -223,90 +180,27 @@ def can_import(module: str) -> bool: ... ref_re: Pattern class Form(Generic[_ModelT]): - _env: Environment - _model: _ModelT - _view: dict - _values: dict - _changed: set def __init__(self, recordp: _ModelT, view: _ModelT | str | None = ...) -> None: ... - def _o2m_set_edition_view( - self, descr: dict, node: _Element, level: int - ) -> None: ... - def __str__(self) -> str: ... - def _process_fvg(self, model: BaseModel, fvg: dict, level: int = ...) -> None: ... - def _init_from_defaults(self, model: BaseModel) -> None: ... - def _init_from_values(self, values: BaseModel) -> None: ... def __getattr__(self, field: str): ... - def _get_modifier( - self, - field: str, - modifier: str, - *, - default: Any = ..., - view: Any = ..., - modmap: Any | None = ..., - vals: Any | None = ... - ): ... - _OPS: dict[str, Callable[..., bool]] - def _get_context(self, field: str): ... def __setattr__(self, field: str, value) -> None: ... def __enter__(self: _FormT) -> _FormT: ... def __exit__(self, etype, _evalue, _etb) -> None: ... def save(self) -> _ModelT: ... - def _values_to_save(self, all_fields: bool = ...) -> dict: ... - def _values_to_save_( - self, - record_values: dict, - fields: dict, - view: Any, - changed: set, - all_fields: bool = ..., - modifiers_values: dict | None = ..., - parent_link: Any | None = ..., - ) -> dict: ... - def _perform_onchange(self, fields: list[str]) -> None: ... - def _onchange_values(self) -> dict: ... - def _onchange_values_(self, fields, record: dict) -> dict: ... - def _cleanup_onchange(self, descr: dict, value, current): ... class O2MForm(Form): - _proxy: O2MProxy - _index: int | None def __init__(self, proxy: O2MProxy, index: int | None = ...) -> None: ... - def _get_modifier( - self, - field: str, - modifier: str, - *, - default: Any = ..., - view: Any = ..., - modmap: Any | None = ..., - vals: Any | None = ... - ): ... - def _onchange_values(self) -> dict: ... def save(self) -> None: ... - def _values_to_save(self, all_fields: bool = ...) -> UpdateDict: ... class UpdateDict(dict): - _changed: set def __init__(self, *args, **kwargs) -> None: ... def changed_items(self) -> Iterator[tuple[Any, Any]]: ... def update(self, *args, **kw) -> None: ... -class X2MProxy: - _parent: Form - _field: str - def _assert_editable(self) -> None: ... +class X2MProxy: ... class O2MProxy(X2MProxy): - _records: list[dict] def __init__(self, parent: Form, field: str) -> None: ... def __len__(self) -> int: ... - @property - def _model(self) -> BaseModel: ... - @property - def _descr(self) -> dict: ... - def _command_index(self, for_record: int) -> int: ... def new(self) -> O2MForm: ... def edit(self, index: int): ... def remove(self, index: int) -> None: ... @@ -318,13 +212,10 @@ class M2MProxy(X2MProxy, collections.Sequence): def __iter__(self) -> Iterator[BaseModel]: ... def __contains__(self, record: BaseModel) -> bool: ... def add(self, record: BaseModel) -> None: ... - def _get_ids(self) -> list[int]: ... def remove(self, id: int | None = ..., index: int | None = ...) -> None: ... def clear(self) -> None: ... def record_to_values(fields: dict, record: BaseModel) -> dict: ... -def _cleanup_from_default(type_: str, value): ... -def _get_node(view, f, *arg): ... def tagged(*tags: str) -> Callable[[_CallableT], _CallableT]: ... class TagsSelector: diff --git a/odoo-stubs/tools/appdirs.pyi b/odoo-stubs/tools/appdirs.pyi index c06bd7b..391e275 100644 --- a/odoo-stubs/tools/appdirs.pyi +++ b/odoo-stubs/tools/appdirs.pyi @@ -1,7 +1,4 @@ -from typing import Callable - __version_info__: tuple -__version__: str def user_data_dir( appname: str | None = ..., @@ -66,9 +63,3 @@ class AppDirs: def user_cache_dir(self) -> str: ... @property def user_log_dir(self) -> str: ... - -def _get_win_folder_from_registry(csidl_name: str) -> str: ... -def _get_win_folder_with_pywin32(csidl_name: str) -> str: ... -def _get_win_folder_with_ctypes(csidl_name: str) -> str: ... - -_get_win_folder: Callable[[str], str] diff --git a/odoo-stubs/tools/assertion_report.pyi b/odoo-stubs/tools/assertion_report.pyi index d4c2a3f..ceae1c2 100644 --- a/odoo-stubs/tools/assertion_report.pyi +++ b/odoo-stubs/tools/assertion_report.pyi @@ -5,4 +5,3 @@ class assertion_report: def record_success(self) -> None: ... def record_failure(self) -> None: ... def record_result(self, result) -> None: ... - def __str__(self) -> str: ... diff --git a/odoo-stubs/tools/config.pyi b/odoo-stubs/tools/config.pyi index 2ae7e17..1fb29e5 100644 --- a/odoo-stubs/tools/config.pyi +++ b/odoo-stubs/tools/config.pyi @@ -11,32 +11,16 @@ class MyOption(Option): DEFAULT_LOG_HANDLER: str -def _get_default_datadir() -> str: ... -def _deduplicate_loggers(loggers) -> tuple[str, ...]: ... - class configmanager: options: dict[str, Any] blacklist_for_save: set[str] casts: dict misc: dict config_file: str - _LOGLEVELS: dict parser: OptionParser def __init__(self, fname: str | None = ...) -> None: ... def parse_config(self, args: list | None = ...) -> None: ... rcfile: str - def _parse_config(self, args: list | None = ...) -> None: ... - def _is_addons_path(self, path: str) -> bool: ... - def _check_addons_path( - self, option: MyOption, opt, value, parser: OptionParser - ) -> None: ... - def _check_upgrade_path( - self, option: MyOption, opt, value, parser: OptionParser - ) -> None: ... - def _is_upgrades_path(self, res: str) -> bool: ... - def _test_enable_callback( - self, option: MyOption, opt, value, parser: OptionParser - ) -> None: ... def load(self) -> None: ... def save(self) -> None: ... def get(self, key, default: Any | None = ...): ... @@ -51,6 +35,5 @@ class configmanager: def filestore(self, dbname: str) -> str: ... def set_admin_password(self, new_password) -> None: ... def verify_admin_password(self, password) -> bool: ... - def _normalize(self, path: str) -> str: ... config: configmanager diff --git a/odoo-stubs/tools/convert.pyi b/odoo-stubs/tools/convert.pyi index 327d19e..1d8ef4f 100644 --- a/odoo-stubs/tools/convert.pyi +++ b/odoo-stubs/tools/convert.pyi @@ -16,16 +16,12 @@ class ParseError(Exception): filename: str lineno: int def __init__(self, msg: str, text: str, filename: str, lineno: int) -> None: ... - def __str__(self) -> str: ... class RecordDictWrapper(dict): record: Any def __init__(self, record) -> None: ... def __getitem__(self, key): ... -def _get_idref(self, env: Environment, model_str: str, idref: dict) -> dict: ... -def _fix_multiple_roots(node: _Element) -> None: ... -def _eval_xml(self, node: _Element, env: Environment): ... def str2bool(value) -> bool: ... def nodeattr2bool(node: _Element, attr, default: bool = ...) -> bool: ... @@ -34,19 +30,10 @@ class xml_import: self, node: _Element, eval_context: dict | None = ... ) -> Environment: ... def make_xml_id(self, xml_id: str) -> str: ... - def _test_xml_id(self, xml_id: str) -> None: ... - def _tag_delete(self, rec: _Element) -> None: ... - def _tag_report(self, rec: _Element): ... - def _tag_function(self, rec: _Element) -> None: ... - def _tag_act_window(self, rec: _Element) -> None: ... - def _tag_menuitem(self, rec: _Element) -> None: ... - def _tag_record(self, rec: _Element) -> tuple[str, int] | None: ... - def _tag_template(self, el: _Element) -> tuple[str, int] | None: ... def id_get(self, id_str: str, raise_if_not_found: bool = ...) -> int | None: ... def model_id_get( self, id_str: str, raise_if_not_found: bool = ... ) -> tuple[Any, Any]: ... - def _tag_root(self, el: _Element) -> None: ... @property def env(self) -> Environment: ... @property @@ -56,9 +43,7 @@ class xml_import: envs: list[Environment] idref: dict assertion_report: AssertionReport - _noupdate: list[bool] xml_filename: str - _tags: dict[str, Callable] def __init__( self, cr: Cursor, diff --git a/odoo-stubs/tools/float_utils.pyi b/odoo-stubs/tools/float_utils.pyi index 4448339..b493a06 100644 --- a/odoo-stubs/tools/float_utils.pyi +++ b/odoo-stubs/tools/float_utils.pyi @@ -1,7 +1,4 @@ def round(f: float) -> float: ... -def _float_check_precision( - precision_digits: int | None = ..., precision_rounding: float | None = ... -) -> float: ... def float_round( value: float, precision_digits: int | None = ..., @@ -20,8 +17,5 @@ def float_compare( precision_rounding: float | None = ..., ) -> int: ... def float_repr(value: float, precision_digits: int) -> str: ... - -_float_repr = float_repr - def float_split_str(value: float, precision_digits: int) -> tuple[str, str]: ... def float_split(value: float, precision_digits: int) -> tuple[int, int]: ... diff --git a/odoo-stubs/tools/func.pyi b/odoo-stubs/tools/func.pyi index 0af5e53..2be1180 100644 --- a/odoo-stubs/tools/func.pyi +++ b/odoo-stubs/tools/func.pyi @@ -27,13 +27,9 @@ def classproperty(func: Callable[..., _T]) -> _ClassProperty[_T]: ... class lazy: def __init__(self, func, *args, **kwargs) -> None: ... - @property - def _value(self): ... def __getattr__(self, name): ... def __setattr__(self, name, value): ... def __delattr__(self, name): ... - def __repr__(self): ... - def __str__(self): ... def __bytes__(self): ... def __format__(self, format_spec): ... def __lt__(self, other): ... diff --git a/odoo-stubs/tools/graph.pyi b/odoo-stubs/tools/graph.pyi index a293526..8d9b742 100644 --- a/odoo-stubs/tools/graph.pyi +++ b/odoo-stubs/tools/graph.pyi @@ -51,7 +51,6 @@ class graph: tree_list: Any = ... start: Any = ... def process(self, starting_node: Any) -> None: ... - def __str__(self): ... def scale( self, maxx: Any, diff --git a/odoo-stubs/tools/json/scriptsafe.pyi b/odoo-stubs/tools/json/scriptsafe.pyi index e45c233..8bb74e8 100644 --- a/odoo-stubs/tools/json/scriptsafe.pyi +++ b/odoo-stubs/tools/json/scriptsafe.pyi @@ -1,4 +1,3 @@ -__all__: list[str] JSON_SCRIPTSAFE_MAPPER: dict[str, str] def dumps(*args, **kwargs) -> str: ... diff --git a/odoo-stubs/tools/lru.pyi b/odoo-stubs/tools/lru.pyi index 6395472..f199732 100644 --- a/odoo-stubs/tools/lru.pyi +++ b/odoo-stubs/tools/lru.pyi @@ -1,8 +1,5 @@ -from threading import RLock from typing import Any, Generator, Iterator -__all__ = ["LRU"] - class LRUNode: prev: Any me: Any @@ -10,7 +7,6 @@ class LRUNode: def __init__(self, prev, me) -> None: ... class LRU: - _lock: RLock count: int d: dict first: Any diff --git a/odoo-stubs/tools/mail.pyi b/odoo-stubs/tools/mail.pyi index 21a2d1f..74091ce 100644 --- a/odoo-stubs/tools/mail.pyi +++ b/odoo-stubs/tools/mail.pyi @@ -2,8 +2,6 @@ from email.message import Message from re import Pattern from typing import Any, FrozenSet, Literal -from lxml.etree import _Element -from lxml.html import clean from markupsafe import Markup tags_to_kill: list[str] @@ -11,16 +9,6 @@ tags_to_remove: list[str] allowed_tags: FrozenSet safe_attrs: FrozenSet -class _Cleaner(clean.Cleaner): - _style_re: Pattern - _style_whitelist: list[str] - strip_classes: bool - sanitize_style: bool - def __call__(self, doc: _Element) -> None: ... - def tag_quote(self, el: _Element) -> None: ... - def strip_class(self, el: _Element) -> None: ... - def parse_style(self, el: _Element) -> None: ... - def html_sanitize( src: str, silent: bool = ..., diff --git a/odoo-stubs/tools/mimetypes.pyi b/odoo-stubs/tools/mimetypes.pyi index db96f0c..629608d 100644 --- a/odoo-stubs/tools/mimetypes.pyi +++ b/odoo-stubs/tools/mimetypes.pyi @@ -1,28 +1,2 @@ -import collections -from re import Pattern -from typing import Any, Literal - -__all__ = ["guess_mimetype"] -_ooxml_dirs: dict[str, str] - -def _check_ooxml(data: bytes) -> str | Literal[False]: ... - -_mime_validator: Pattern - -def _check_open_container_format(data: bytes) -> str | Literal[False]: ... - -_xls_pattern: Pattern -_ppt_pattern: Pattern - -def _check_olecf(data: bytes) -> str | Literal[False]: ... -def _check_svg(data: bytes) -> str | None: ... - -_Entry = collections.namedtuple("_Entry", ["mimetype", "signatures", "discriminants"]) -_mime_mappings: tuple[_Entry, ...] - def guess_mimetype(bin_data: str, default: str | None = ...) -> str: ... - -_guesser: Any -ms: Any - def get_extension(filename: str) -> str: ... diff --git a/odoo-stubs/tools/misc.pyi b/odoo-stubs/tools/misc.pyi index db80d24..4d0c3eb 100644 --- a/odoo-stubs/tools/misc.pyi +++ b/odoo-stubs/tools/misc.pyi @@ -19,6 +19,8 @@ from typing import ( import xlsxwriter import xlwt from babel.core import Locale +from odoo.addons.base.models.res_currency import Currency +from odoo.addons.base.models.res_lang import Lang from xlwt import Worksheet from ..api import Environment @@ -38,9 +40,6 @@ SKIPPED_ELEMENT_TYPES: tuple NON_BREAKING_SPACE: str def find_in_path(name: str) -> str: ... -def _exec_pipe( - prog, args, env: Mapping[str, str] | None = ... -) -> tuple[IO[AnyStr] | None, IO[AnyStr] | None]: ... def exec_command_pipe( name: str, *args ) -> tuple[IO[AnyStr] | None, IO[AnyStr] | None]: ... @@ -57,14 +56,6 @@ def file_open( pathinfo: bool = ..., filter_ext: Any | None = ..., ): ... -def _fileopen( - path: str, - mode: str, - basedir: str, - pathinfo, - basename: str | None = ..., - filter_ext: Any | None = ..., -): ... def flatten(list) -> list: ... def reverse_enumerate(l): ... def partition( @@ -115,8 +106,7 @@ def resolve_attr(obj, attr: str): ... def attrgetter(*items): ... def remove_accents(input_str: str) -> str: ... -class unquote(str): - def __repr__(self) -> str: ... +class unquote(str): ... class UnquoteEvalContext(defaultdict): def __init__(self, *args, **kwargs) -> None: ... @@ -135,8 +125,6 @@ class mute_logger(Filter): ) -> None: ... def __call__(self, func: _CallableT) -> _CallableT: ... -_ph: Any - class CountingStream(Generic[_T]): stream: Iterator[_T] index: int @@ -149,7 +137,6 @@ class CountingStream(Generic[_T]): def stripped_sys_argv(*strip_args: str) -> list[str]: ... class ConstantMapping(Mapping[_KT, _VT]): - _value: _VT def __init__(self, val: _VT) -> None: ... def __len__(self) -> int: ... def __iter__(self) -> Iterator: ... @@ -172,7 +159,6 @@ class frozendict(dict): def __hash__(self) -> int: ... class Collector(Mapping[_KT, _VT]): - _map: dict def __init__(self) -> None: ... def add(self, key: _KT, val: _T) -> None: ... def __getitem__(self, key: _KT) -> tuple[_T]: ... @@ -180,19 +166,16 @@ class Collector(Mapping[_KT, _VT]): def __len__(self) -> int: ... class StackMap(MutableMapping): - _maps: list[MutableMapping] def __init__(self, m: MutableMapping | None = ...) -> None: ... def __getitem__(self, key): ... def __setitem__(self, key, val) -> None: ... def __delitem__(self, key) -> None: ... def __iter__(self) -> Iterator: ... def __len__(self) -> int: ... - def __str__(self) -> str: ... def pushmap(self, m: MutableMapping | None = ...) -> None: ... def popmap(self) -> MutableMapping: ... class OrderedSet(MutableSet): - _map: dict def __init__(self, elems: Iterable = ...) -> None: ... def __contains__(self, elem) -> bool: ... def __iter__(self) -> Iterator: ... @@ -226,7 +209,7 @@ class Reverse: def ignore(*exc) -> None: ... def html_escape(text: str) -> str: ... -def get_lang(env: Environment, lang_code: str = ...) -> "odoo.model.res_lang": ... +def get_lang(env: Environment, lang_code: str = ...) -> "Lang": ... def babel_locale_parse(lang_code: str) -> Locale: ... def formatLang( env: Environment, @@ -235,7 +218,7 @@ def formatLang( grouping: bool = ..., monetary: bool = ..., dp: bool = ..., - currency_obj: "odoo.model.res_currency" = ..., + currency_obj: "Currency" = ..., ) -> str: ... def format_date( env: Environment, @@ -254,20 +237,13 @@ def format_datetime( def format_time( env: Environment, value, tz: str = ..., time_format: str = ..., lang_code: str = ... ) -> str: ... -def _format_time_ago( - env: Environment, - time_delta: datetime.timedelta | int, - lang_code: str = ..., - add_direction: bool = ..., -) -> str: ... def format_amount( env: Environment, amount: float, - currency: "odoo.model.res_currency", + currency: "Currency", lang_code: str = ..., ) -> str: ... def format_duration(value: float) -> str: ... -def _consteq(str1: str, str2: str) -> bool: ... consteq: Callable[[str, str], bool] @@ -275,17 +251,9 @@ class Unpickler(pickle_.Unpickler): find_global: Any find_class: Any -def _pickle_load( - stream: pickle_._ReadableFileobj, encoding: str = ..., errors: bool = ... -): ... - pickle: ModuleType def wrap_values(d): ... - -_missing: object -_cache: dict - def wrap_module(module, attr_list): ... mods: list[str] diff --git a/odoo-stubs/tools/osutil.pyi b/odoo-stubs/tools/osutil.pyi index 1d49b7b..090b04d 100644 --- a/odoo-stubs/tools/osutil.pyi +++ b/odoo-stubs/tools/osutil.pyi @@ -1,4 +1,3 @@ -import ctypes from typing import Any, BinaryIO, Callable, Generator, Iterable, Iterator def listdir(dir: str, recursive: bool = ...) -> Iterable[str]: ... @@ -15,7 +14,3 @@ def zip_dir( getppid: Callable[[], int] is_running_as_nt_service: Callable[[], bool] -_TH32CS_SNAPPROCESS: int - -class _PROCESSENTRY32(ctypes.Structure): - _fields_: list[tuple[str, Any]] diff --git a/odoo-stubs/tools/parse_version.pyi b/odoo-stubs/tools/parse_version.pyi index 245f00f..199069d 100644 --- a/odoo-stubs/tools/parse_version.pyi +++ b/odoo-stubs/tools/parse_version.pyi @@ -1,8 +1,7 @@ from re import Pattern -from typing import Callable, Iterator +from typing import Callable component_re: Pattern replace: Callable -def _parse_version_parts(s: str) -> Iterator[str]: ... def parse_version(s: str) -> tuple[str]: ... diff --git a/odoo-stubs/tools/pdf.pyi b/odoo-stubs/tools/pdf.pyi index b865435..dd27223 100644 --- a/odoo-stubs/tools/pdf.pyi +++ b/odoo-stubs/tools/pdf.pyi @@ -2,7 +2,6 @@ from typing import Any, Iterable from PyPDF2 import PdfFileReader, PdfFileWriter from PyPDF2.generic import ArrayObject as ArrayObject -from PyPDF2.generic import IndirectObject from PyPDF2.utils import b_ as b_ DEFAULT_PDF_DATETIME_FORMAT: str @@ -10,15 +9,9 @@ DEFAULT_PDF_DATETIME_FORMAT: str def merge_pdf(pdf_data: Iterable[bytes]) -> bytes: ... class OdooPdfFileWriter(PdfFileWriter): - _reader: PdfFileReader | None - _header: bytes - _ID: Any def __init__(self, *args, **kwargs): None def addAttachment(self, fname: str, fdata, subtype: str = ...) -> None: ... def cloneReaderDocumentRoot(self, reader: PdfFileReader) -> None: ... def convert_to_pdfa(self) -> None: ... def add_file_metadata(self, metadata_content: bytes) -> None: ... - def _create_attachment_object( - self, attachment: dict[str, Any] - ) -> IndirectObject: ... diff --git a/odoo-stubs/tools/profiler.pyi b/odoo-stubs/tools/profiler.pyi index dd7ef2f..d7bf229 100644 --- a/odoo-stubs/tools/profiler.pyi +++ b/odoo-stubs/tools/profiler.pyi @@ -1,21 +1,5 @@ from typing import Any -class _LogTracer: - profiles: dict - whitelist: Any - blacklist: Any - files: Any - deep: Any - first_frame: Any - def __init__( - self, - whitelist: Any | None = ..., - blacklist: Any | None = ..., - files: Any | None = ..., - deep: bool = ..., - ) -> None: ... - def tracer(self, frame, event, arg): ... - def profile( method: Any | None = ..., whitelist: Any | None = ..., diff --git a/odoo-stubs/tools/pycompat.pyi b/odoo-stubs/tools/pycompat.pyi index bdd9c43..e057d4b 100644 --- a/odoo-stubs/tools/pycompat.pyi +++ b/odoo-stubs/tools/pycompat.pyi @@ -1,12 +1,5 @@ -from codecs import StreamReader, StreamWriter from csv import Dialect -from typing import Any, BinaryIO, Iterable, Iterator, Protocol - -class _StreamReader(Protocol): - def __call__(self, stream: BinaryIO, errors: str = ...) -> StreamReader: ... - -class _StreamWriter(Protocol): - def __call__(self, stream: BinaryIO, errors: str = ...) -> StreamWriter: ... +from typing import Any, BinaryIO, Iterable, Iterator class _CsvReader(Iterator[list[str]]): dialect: Dialect @@ -19,10 +12,6 @@ class _CsvWriter: def writerows(self, rows: Iterable[Iterable]) -> None: ... def reraise(tp, value, tb: Any | None = ...) -> None: ... - -_reader: _StreamReader -_writer: _StreamWriter - def csv_reader(stream: BinaryIO, **params) -> _CsvReader: ... def csv_writer(stream: BinaryIO, **params) -> _CsvWriter: ... def to_text(source) -> str: ... diff --git a/odoo-stubs/tools/safe_eval.pyi b/odoo-stubs/tools/safe_eval.pyi index a35acb1..3e8d2e3 100644 --- a/odoo-stubs/tools/safe_eval.pyi +++ b/odoo-stubs/tools/safe_eval.pyi @@ -1,17 +1,10 @@ from types import CodeType -from typing import Any, Iterator, Literal +from typing import Literal from opcode import HAVE_ARGUMENT as HAVE_ARGUMENT unsafe_eval = eval -_ALLOWED_MODULES: list[str] -_UNSAFE_ATTRIBUTES: list[str] -_POSSIBLE_OPCODES_P3: list[str] -_CONST_OPCODES: set[int] -_EXPR_OPCODES: set[int] -_SAFE_OPCODES: set[int] -def _get_opcodes(codeobj) -> Iterator[int]: ... def assert_no_dunder_name(code_obj: CodeType, expr: str) -> None: ... def assert_valid_codeobj( allowed_codes: set[int], code_obj: CodeType, expr: str @@ -19,16 +12,6 @@ def assert_valid_codeobj( def test_expr(expr: str, allowed_codes: set[int], mode: str = ...): ... def const_eval(expr: str): ... def expr_eval(expr: str): ... -def _import( - name: str, - globals: dict | None = ..., - locals: dict | None = ..., - fromlist: list | None = ..., - level: int = ..., -): ... - -_BUILTINS: dict[str, Any] - def safe_eval( expr: str, globals_dict: dict | None = ..., diff --git a/odoo-stubs/tools/sql.pyi b/odoo-stubs/tools/sql.pyi index fd27cf5..c90a47b 100644 --- a/odoo-stubs/tools/sql.pyi +++ b/odoo-stubs/tools/sql.pyi @@ -2,8 +2,6 @@ from typing import Iterable, Literal from ..sql_db import Cursor -_CONFDELTYPES: dict[str, str] - def existing_tables(cr: Cursor, tablenames: Iterable[str]) -> list[str]: ... def table_exists(cr: Cursor, tablename: str) -> bool: ... def table_kind(cr: Cursor, tablename: str) -> str | None: ... diff --git a/odoo-stubs/tools/test_config.pyi b/odoo-stubs/tools/test_config.pyi deleted file mode 100644 index 413b925..0000000 --- a/odoo-stubs/tools/test_config.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from typing import Any - -config_file_00: Any -conf: Any diff --git a/odoo-stubs/tools/translate.pyi b/odoo-stubs/tools/translate.pyi index d32f67c..bd19f5b 100644 --- a/odoo-stubs/tools/translate.pyi +++ b/odoo-stubs/tools/translate.pyi @@ -1,18 +1,16 @@ import csv -from re import Match, Pattern +from re import Pattern from tarfile import TarFile -from types import FrameType from typing import IO, Any, BinaryIO, Callable, Container, Iterable, Iterator, NoReturn -from lxml.etree import HTMLParser, _Element +from lxml.etree import _Element from polib import POFile -from ..sql_db import Connection, Cursor +from ..sql_db import Cursor from .pycompat import _CsvWriter WEB_TRANSLATION_COMMENT: str SKIPPED_ELEMENTS: tuple[str, ...] -_LOCALE2WIN32: dict[str, str] ENGLISH_SMALL_WORDS: set[str] class UNIX_LINE_TERMINATOR(csv.excel): @@ -33,9 +31,6 @@ def translate_xml_node( ) -> _Element: ... def parse_xml(text: str) -> _Element: ... def serialize_xml(node: _Element) -> str: ... - -_HTML_PARSER: HTMLParser - def parse_html(text: str) -> _Element: ... def serialize_html(node: _Element) -> str: ... def xml_translate(callback: Callable[[str], str | None], value: str) -> str: ... @@ -46,19 +41,10 @@ def translate( def translate_sql_constraint(cr: Cursor, key: str, lang: str) -> str: ... class GettextAlias: - def _get_db(self) -> Connection | None: ... - def _get_cr( - self, frame: FrameType, allow_create: bool = ... - ) -> tuple[Cursor, bool]: ... - def _get_uid(self, frame: FrameType) -> int: ... - def _get_lang(self, frame: FrameType) -> str: ... def __call__(self, source: str) -> str: ... - def _get_translation(self, source: str) -> str: ... class _lt: - _source: str def __init__(self, source: str) -> None: ... - def __str__(self) -> str: ... def __eq__(self, other) -> NoReturn: ... def __lt__(self, other) -> NoReturn: ... def __add__(self, other: str | _lt) -> str: ... @@ -71,7 +57,6 @@ def quote(s: str) -> str: ... re_escaped_char: Pattern re_escaped_replacements: dict[str, str] -def _sub_replacement(match_obj: Match) -> str: ... def unquote(str: str) -> str: ... def TranslationFileReader( source: IO, fileformat: str = ... @@ -120,11 +105,7 @@ def trans_export( lang: str, modules: list[str], buffer, format: str, cr: Cursor ) -> None: ... def trans_parse_rml(de: Iterable) -> list[bytes]: ... -def _push(callback: Callable[[str, int], Any], term: str, source_line: int) -> None: ... def in_modules(object_name: str, modules: Container[str]) -> bool: ... -def _extract_translatable_qweb_terms( - element: _Element, callback: Callable[[str, int], Any] -) -> None: ... def babel_extract_qweb(fileobj: IO, keywords, comment_tags, options) -> list[tuple]: ... def trans_generate(lang: str, modules, cr: Cursor) -> list: ... def trans_load( diff --git a/odoo-stubs/tools/view_validation.pyi b/odoo-stubs/tools/view_validation.pyi index a2463a0..b205b81 100644 --- a/odoo-stubs/tools/view_validation.pyi +++ b/odoo-stubs/tools/view_validation.pyi @@ -1,5 +1,4 @@ from ast import expr as _expr -from collections import defaultdict from re import Pattern from typing import Callable, TypeVar @@ -10,13 +9,9 @@ from ..fields import Field _CallableT = TypeVar("_CallableT", bound=Callable) -_validators: defaultdict[str, list[Callable]] -_relaxng_cache: dict[str, RelaxNG | None] ATTRS_WITH_FIELD_NAMES: set[str] READONLY: Pattern -def _get_attrs_symbols() -> set[str]: ... -def _view_is_editable(node: _Element) -> bool: ... def field_is_editable(field: Field, node: _Element) -> bool: ... def get_attrs_field_names( env: Environment, arch: _Element, model, editable diff --git a/odoo-stubs/tools/which.pyi b/odoo-stubs/tools/which.pyi index fbc0905..8e713b0 100644 --- a/odoo-stubs/tools/which.pyi +++ b/odoo-stubs/tools/which.pyi @@ -3,7 +3,6 @@ from os import W_OK as W_OK from os.path import dirname as dirname from typing import Iterator -__docformat__: str ENOENT: int windows: bool seen: set diff --git a/odoo-stubs/tools/xml_utils.pyi b/odoo-stubs/tools/xml_utils.pyi index 647bb4f..44da96c 100644 --- a/odoo-stubs/tools/xml_utils.pyi +++ b/odoo-stubs/tools/xml_utils.pyi @@ -1,4 +1,4 @@ -from typing import IO, Iterable +from typing import Iterable from lxml import etree from lxml.etree import _Element @@ -10,9 +10,6 @@ class odoo_resolver(etree.Resolver): def __init__(self, env: Environment) -> None: ... def resolve(self, url: str, id: str, context) -> str: ... -def _check_with_xsd( - tree_or_str: str | _Element, stream: str | IO, env: Environment | None = ... -) -> None: ... def create_xml_node_chain( first_parent_node: _Element, nodes_list: Iterable[str],