Update stubs

This commit is contained in:
Trinh Anh Ngoc
2022-10-11 23:31:55 +07:00
parent 6144774401
commit b714b79c3d
6 changed files with 235 additions and 139 deletions

View File

@@ -316,7 +316,7 @@ class BaseModel(metaclass=MetaModel):
def _has_onchange(self, field: Field, other_fields: Container[Field]) -> bool: ...
def _onchange_spec(self, view_info: dict | None = ...) -> dict: ...
def _onchange_eval(self, field_name: str, onchange: str, result: dict) -> None: ...
def onchange(self, values: dict[str, Any], field_name: str | list[str] | bool, field_onchange: dict[str, str]): ...
def onchange(self, values: dict[str, Any], field_name: str | list[str] | bool, field_onchange: dict[str, str]) -> dict: ...
def _get_placeholder_filename(self, field: str) -> str | bool: ...
def _populate_factories(self) -> list[tuple[str, Iterator]]: ...
@property

View File

@@ -1,41 +1,54 @@
import collections
import logging
import unittest
from typing import Any
from re import Pattern
from itertools import count
from typing import Any, Callable, Generator, Generic, Iterator, Literal, Mapping, Match, TypeVar
from xmlrpc import client as xmlrpclib
import requests
from lxml.etree import _Element
from websocket import WebSocket
from ..api import Environment
from ..http import OpenERPSession
from ..models import BaseModel
from ..modules.registry import Registry
from ..sql_db import BaseCursor, Cursor
from ..tools import profiler
from ..tools._vendor.sessions import Session
from ..tools.profiler import Profiler
_logger: Any
ADDONS_PATH: Any
_T = TypeVar('_T')
_CallableT = TypeVar('_CallableT', bound=Callable)
_ModelT = TypeVar('_ModelT', bound=BaseModel)
_FormT = TypeVar('_FormT', bound=Form)
ADDONS_PATH: str
HOST: str
ADMIN_USER_ID: Any
ADMIN_USER_ID: int
def get_db_name(): ...
def get_db_name() -> str: ...
standalone_tests: Any
standalone_tests: collections.defaultdict[str, list]
def standalone(*tags): ...
def standalone(*tags: str) -> Callable[[_CallableT], _CallableT]: ...
DB: Any
DB: str
def new_test_user(env, login: str = ..., groups: str = ..., context: Any | None = ..., **kwargs): ...
def new_test_user(env: Environment, login: str = ..., groups: str = ..., context: dict | None = ..., **kwargs) -> 'odoo.model.res_users': ...
class RecordCapturer:
_model: Any
_domain: Any
def __init__(self, model, domain) -> None: ...
_before: Any
_after: Any
def __enter__(self): ...
_model: BaseModel
_domain: list
def __init__(self, model: BaseModel, domain: list) -> None: ...
_before: BaseModel | None
_after: BaseModel | None
def __enter__(self: _T) -> _T: ...
def __exit__(self, exc_type, exc_value, exc_traceback) -> None: ...
@property
def records(self): ...
def records(self) -> BaseModel: ...
class OdooSuite(unittest.suite.TestSuite):
def __init__(self, *args, **kwargs) -> None: ...
@@ -47,10 +60,14 @@ class OdooSuite(unittest.suite.TestSuite):
class MetaCase(type):
def __init__(cls, name, bases, attrs) -> None: ...
def _normalize_arch_for_assert(arch_string, parser_method: str = ...): ...
def _normalize_arch_for_assert(arch_string: str, parser_method: str = ...) -> str: ...
class BaseCase(unittest.TestCase, metaclass=MetaCase):
_class_cleanups: Any
_class_cleanups: list
tearDown_exceptions: list
registry: Registry
env: Environment
cr: Cursor
@classmethod
def addClassCleanup(cls, function, *args, **kwargs) -> None: ...
@classmethod
@@ -62,27 +79,26 @@ class BaseCase(unittest.TestCase, metaclass=MetaCase):
def cursor(self) -> Cursor: ...
@property
def uid(self) -> int: ...
env: Environment
@uid.setter
def uid(self, user) -> None: ...
def ref(self, xid): ...
def browse_ref(self, xid): ...
def ref(self, xid: str) -> int: ...
def browse_ref(self, xid: str) -> BaseModel | None: ...
def patch(self, obj, key, val) -> None: ...
def with_user(self, login) -> None: ...
def _assertRaises(self, exception, *, msg: Any | None = ...) -> None: ...
def assertRaises(self, exception, func: Any | None = ..., *args, **kwargs): ...
def assertQueries(self, expected, flush: bool = ...): ...
def assertQueryCount(self, default: int = ..., flush: bool = ..., **counters): ...
def assertRecordValues(self, records, expected_values): ...
def assertItemsEqual(self, a, b, msg: Any | None = ...) -> None: ...
def assertTreesEqual(self, n1, n2, msg: Any | None = ...) -> None: ...
def _assertXMLEqual(self, original, expected, parser: str = ...) -> None: ...
def assertXMLEqual(self, original, expected): ...
def assertHTMLEqual(self, original, expected): ...
profile_session: Any
def profile(self, **kwargs): ...
def with_user(self, login: str) -> None: ...
def _assertRaises(self, exception, *, msg: Any | None = ...) -> Generator[Any, None, None]: ...
def assertRaises(self, exception, func: Any | None = ..., *args, **kwargs) -> Generator[Any, None, None] | None: ...
def assertQueries(self, expected, flush: bool = ...) -> Generator[list, None, None]: ...
def assertQueryCount(self, default: int = ..., flush: bool = ..., **counters) -> Generator[None, None, None]: ...
def assertRecordValues(self, records: BaseModel, expected_values: list[dict[str, Any]]) -> None: ...
def assertItemsEqual(self, a, b, msg: str | None = ...) -> None: ...
def assertTreesEqual(self, n1, n2, msg: str | None = ...) -> None: ...
def _assertXMLEqual(self, original: str, expected: str, parser: str = ...) -> None: ...
def assertXMLEqual(self, original: str, expected: str) -> None: ...
def assertHTMLEqual(self, original: str, expected: str) -> None: ...
profile_session: str
def profile(self, **kwargs) -> Profiler: ...
savepoint_seq: Any
savepoint_seq: count[int]
class TransactionCase(BaseCase):
registry: Registry
@@ -90,7 +106,7 @@ class TransactionCase(BaseCase):
cr: Cursor
@classmethod
def setUpClass(cls) -> None: ...
_savepoint_id: Any
_savepoint_id: int
def setUp(self): ...
class SavepointCase(TransactionCase):
@@ -98,9 +114,6 @@ class SavepointCase(TransactionCase):
def __init_subclass__(cls) -> None: ...
class SingleTransactionCase(BaseCase):
registry: Registry
env: Environment
cr: Cursor
@classmethod
def __init_subclass__(cls) -> None: ...
@classmethod
@@ -110,56 +123,55 @@ class SingleTransactionCase(BaseCase):
class ChromeBrowserException(Exception): ...
class ChromeBrowser:
_logger: Any
test_class: Any
devtools_port: Any
test_class: str
devtools_port: int | None
ws_url: str
ws: Any
ws: WebSocket | None
request_id: int
user_data_dir: Any
chrome_pid: Any
screenshots_dir: Any
screencasts_dir: Any
screencast_frames: Any
window_size: Any
user_data_dir: str
chrome_pid: int | None
screenshots_dir: str
screencasts_dir: str | None
screencast_frames: list
window_size: str
sigxcpu_handler: Any
def __init__(self, logger, window_size, test_class) -> None: ...
def __init__(self, logger: logging.Logger, window_size: str, test_class: str) -> None: ...
def signal_handler(self, sig, frame) -> None: ...
def stop(self) -> None: ...
@property
def executable(self): ...
def _spawn_chrome(self, cmd): ...
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, timeout: int = ..., get_key: Any | None = ...): ...
def _json_command(self, command: str, timeout: int = ..., get_key: Any | None = ...): ...
def _open_websocket(self) -> None: ...
def _websocket_send(self, method, params: Any | None = ...): ...
def _get_message(self, raise_log_error: bool = ...): ...
_TO_LEVEL: Any
def _websocket_wait_id(self, awaited_id, timeout: int = ...): ...
def _websocket_wait_event(self, method, params: Any | None = ..., timeout: int = ...): ...
def take_screenshot(self, prefix: str = ..., suffix: Any | None = ...) -> 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: Any
screencasts_frames_dir: str
def start_screencast(self) -> None: ...
def set_cookie(self, name, value, path, domain): ...
def delete_cookie(self, name, **kwargs): ...
def _wait_ready(self, ready_code, timeout: int = ...): ...
def _wait_code_ok(self, code, timeout): ...
def navigate_to(self, url, wait_stop: bool = ...) -> 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): ...
def _from_remoteobject(self, arg: Mapping): ...
LINE_PATTERN: str
def _format_stack(self, logrecord) -> None: ...
def console_formatter(self, args): ...
def _format_stack(self, logrecord: Mapping) -> None: ...
def console_formatter(self, args: list) -> Callable[[Match[str]], str]: ...
class Opener(requests.Session):
cr: Any
cr: BaseCursor
def __init__(self, cr: BaseCursor) -> None: ...
def request(self, *args, **kwargs): ...
class Transport(xmlrpclib.Transport):
cr: Any
cr: BaseCursor
def __init__(self, cr: BaseCursor) -> None: ...
def request(self, *args, **kwargs): ...
@@ -179,102 +191,110 @@ class HttpCase(TransactionCase):
def start_browser(cls) -> None: ...
@classmethod
def terminate_browser(cls) -> None: ...
def url_open(self, url, data: Any | None = ..., files: Any | None = ..., timeout: int = ..., headers: Any | None = ..., allow_redirects: bool = ..., head: bool = ...): ...
def _wait_remaining_requests(self, timeout: int = ...): ...
def url_open(self, url: str, data: Any | None = ..., files: Mapping | None = ..., timeout: int = ...,
headers: Mapping | None = ..., allow_redirects: bool = ..., head: bool = ...) -> requests.Response: ...
def _wait_remaining_requests(self, timeout: int = ...) -> None: ...
def logout(self, keep_db: bool = ...) -> None: ...
session: OpenERPSession
def authenticate(self, user, password): ...
def browser_js(self, url_path, code, ready: str = ..., login: Any | None = ..., timeout: int = ..., **kw) -> None: ...
def authenticate(self, user, password) -> Session: ...
def browser_js(self, url_path: str, code: str, ready: str = ..., login: str | None = ..., timeout: int = ..., **kw) -> None: ...
@classmethod
def base_url(cls): ...
def start_tour(self, url_path, tour_name, step_delay: Any | None = ..., **kwargs): ...
def base_url(cls) -> str: ...
def start_tour(self, url_path: str, tour_name: str, step_delay: float | None = ..., **kwargs) -> None: ...
def profile(self, **kwargs) -> profiler.Nested: ...
class HttpSavepointCase(HttpCase):
@classmethod
def __init_subclass__(cls) -> None: ...
def users(*logins): ...
def warmup(func, *args, **kwargs) -> None: ...
def can_import(module): ...
def users(*logins: str) -> Callable[[_CallableT], _CallableT]: ...
def warmup(func: _CallableT, *args, **kwargs) -> _CallableT: ...
def can_import(module: str) -> bool: ...
ref_re: Any
ref_re: Pattern
class Form:
def __init__(self, recordp, view: Any | None = ...) -> None: ...
def _o2m_set_edition_view(self, descr, node, level) -> None: ...
def __str__(self): ...
def _process_fvg(self, model, fvg, level: int = ...) -> None: ...
def _init_from_defaults(self, model) -> None: ...
def _init_from_values(self, values) -> None: ...
def __getattr__(self, field): ...
def _get_modifier(self, field, modifier, default: bool = ..., modmap: Any | None = ..., vals: Any | None = ...): ...
_OPS: Any
def _get_context(self, field): ...
def __setattr__(self, field, value) -> None: ...
def __enter__(self) -> Form: ...
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): ...
def _values_to_save(self, all_fields: bool = ...): ...
def _values_to_save_(self, record_values, fields, view, changed, all_fields: bool = ..., modifiers_values: Any | None = ..., parent_link: Any | None = ...): ...
def _perform_onchange(self, fields): ...
def _onchange_values(self): ...
def _onchange_values_(self, fields, record): ...
def _cleanup_onchange(self, descr, value, current): ...
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]) -> dict: ...
def _onchange_values(self) -> dict: ...
def _onchange_values_(self, fields, record: dict) -> dict: ...
def _cleanup_onchange(self, descr: dict, value, current): ...
class O2MForm(Form):
def __init__(self, proxy, index: Any | None = ...) -> None: ...
def _get_modifier(self, field, modifier, default: bool = ..., modmap: Any | None = ..., vals: Any | None = ...): ...
def _onchange_values(self): ...
_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 = ...): ...
def _values_to_save(self, all_fields: bool = ...) -> UpdateDict: ...
class UpdateDict(dict):
_changed: Any
_changed: set
def __init__(self, *args, **kwargs) -> None: ...
def changed_items(self): ...
def changed_items(self) -> Iterator[tuple[Any, Any]]: ...
def update(self, *args, **kw) -> None: ...
class X2MProxy:
_parent: Any
_field: Any
_parent: Form
_field: str
def _assert_editable(self) -> None: ...
class O2MProxy(X2MProxy):
_parent: Any
_field: Any
_records: Any
def __init__(self, parent, field) -> None: ...
def __len__(self): ...
_records: list[dict]
def __init__(self, parent: Form, field: str) -> None: ...
def __len__(self) -> int: ...
@property
def _model(self): ...
def _model(self) -> BaseModel: ...
@property
def _descr(self): ...
def _command_index(self, for_record): ...
def new(self): ...
def edit(self, index): ...
def remove(self, index) -> None: ...
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: ...
class M2MProxy(X2MProxy, collections.Sequence):
_parent: Any
_field: Any
def __init__(self, parent, field) -> None: ...
def __getitem__(self, it): ...
def __len__(self): ...
def __iter__(self): ...
def __contains__(self, record): ...
def add(self, record) -> None: ...
def _get_ids(self): ...
def remove(self, id: Any | None = ..., index: Any | None = ...) -> None: ...
def __init__(self, parent: Form, field: str) -> None: ...
def __getitem__(self, it) -> BaseModel: ...
def __len__(self) -> int: ...
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, record): ...
def _cleanup_from_default(type_, value): ...
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): ...
def tagged(*tags: str) -> Callable[[_CallableT], _CallableT]: ...
class TagsSelector:
filter_spec_re: Any
exclude: Any
include: Any
def __init__(self, spec) -> None: ...
def check(self, test): ...
filter_spec_re: Pattern
exclude: set
include: set
def __init__(self, spec: str) -> None: ...
def check(self, test) -> bool: ...

View File

View File

@@ -0,0 +1,53 @@
from re import Pattern
from typing import Any, Generic, TypeVar
from werkzeug.datastructures import CallbackDict
_ModificationTrackingDictT = TypeVar('_ModificationTrackingDictT', bound=ModificationTrackingDict)
_SessionT = TypeVar('_SessionT', bound=Session)
_sha1_re: Pattern
def generate_key(salt: Any = ...) -> str: ...
class ModificationTrackingDict(CallbackDict):
__slots__ = ('modified',)
modified: bool
def __init__(self, *args, **kwargs): ...
def copy(self: _ModificationTrackingDictT) -> _ModificationTrackingDictT: ...
def __copy__(self: _ModificationTrackingDictT) -> _ModificationTrackingDictT: ...
class Session(ModificationTrackingDict):
__slots__ = ('modified', 'sid', 'new')
sid: str
new: bool
def __init__(self, data, sid, new: bool = ...): ...
def __repr__(self) -> str: ...
@property
def should_save(self) -> bool: ...
class SessionStore(Generic[_SessionT]):
session_class: type[_SessionT]
def __init__(self, session_class: type[_SessionT] | None = ...): ...
def is_valid_key(self, key) -> bool: ...
def generate_key(self, salt: Any = ...) -> str: ...
def new(self) -> _SessionT: ...
def save(self, session: _SessionT) -> None: ...
def save_if_modified(self, session: _SessionT) -> None: ...
def delete(self, session: _SessionT) -> None: ...
def get(self, sid: str) -> _SessionT: ...
_fs_transaction_suffix: str
class FilesystemSessionStore(SessionStore[_SessionT]):
path: str | None
filename_template: str
renew_missing: bool
mode: int
def __init__(self, path: str | None = ..., filename_template: str = ..., session_class: type[_SessionT] | None = ...,
renew_missing: bool = ..., mode: int = ...) -> None: ...
def get_session_filename(self, sid: str) -> str: ...
def save(self, session: _SessionT) -> None: ...
def delete(self, session: _SessionT) -> None: ...
def get(self, sid: str) -> _SessionT: ...
def list(self) -> list[str]: ...

View File

@@ -0,0 +1,23 @@
from re import Pattern
class UserAgentParser(object):
platforms: list[tuple[str, Pattern]]
browsers: list[tuple[str, Pattern]]
_browser_version_re: str
_language_re: Pattern
def __init__(self) -> None: ...
def __call__(self, user_agent: str) -> tuple[str | None, str | None, str | None, str | None]: ...
class UserAgent(object):
_parser: UserAgentParser
string: str
platform: str | None
browser: str | None
version: str | None
language: str | None
def __init__(self, environ_or_string: dict | str): ...
def to_header(self) -> str: ...
def __str__(self) -> str: ...
def __nonzero__(self) -> bool: ...
__bool__ = __nonzero__
def __repr__(self) -> str: ...

View File

@@ -123,6 +123,6 @@ class Profiler:
class Nested(Generic[_T]):
profiler: Profiler
context_manager: ContextManager[_T]
def __init__(self, profiler: Profiler, context_manager: ContextManager) -> None: ...
def __init__(self, profiler: Profiler, context_manager: ContextManager[_T]) -> None: ...
def __enter__(self) -> _T: ...
def __exit__(self, exc_type, exc_value, traceback): ...