diff --git a/odoo-stubs/tools/translate.pyi b/odoo-stubs/tools/translate.pyi index b2ab418..8de31ef 100644 --- a/odoo-stubs/tools/translate.pyi +++ b/odoo-stubs/tools/translate.pyi @@ -1,133 +1,145 @@ import csv -from typing import Any, NamedTuple +from collections import namedtuple +from re import Match, Pattern +from tarfile import TarFile +from types import FrameType +from typing import Any, BinaryIO, Callable, Container, IO, Iterable, Iterator, NoReturn + +from lxml.etree import HTMLParser, _Element +from polib import POFile + +from .pycompat import _CsvWriter +from ..api import Environment +from ..models import BaseModel +from ..sql_db import Connection, Cursor -_logger: Any WEB_TRANSLATION_COMMENT: str -SKIPPED_ELEMENTS: Any -_LOCALE2WIN32: Any -ENGLISH_SMALL_WORDS: Any +SKIPPED_ELEMENTS: tuple[str, ...] +_LOCALE2WIN32: dict[str, str] +ENGLISH_SMALL_WORDS: set[str] class UNIX_LINE_TERMINATOR(csv.excel): lineterminator: str -def encode(s): ... +def encode(s: str) -> str: ... -TRANSLATED_ELEMENTS: Any -TRANSLATED_ATTRS: Any +TRANSLATED_ELEMENTS: set[str] +TRANSLATED_ATTRS: dict[str, Any] -def translate_attrib_value(node): ... +def translate_attrib_value(node: _Element) -> bool: ... -avoid_pattern: Any -node_pattern: Any +avoid_pattern: Pattern +node_pattern: Pattern -def translate_xml_node(node, callback, parse, serialize): ... -def parse_xml(text): ... -def serialize_xml(node): ... +def translate_xml_node(node: _Element, callback: Callable[[str], str | None], parse: Callable[[str], _Element], + serialize: Callable[[_Element], str]) -> _Element: ... +def parse_xml(text: str) -> _Element: ... +def serialize_xml(node: _Element) -> str: ... -_HTML_PARSER: Any +_HTML_PARSER: HTMLParser -def parse_html(text): ... -def serialize_html(node): ... -def xml_translate(callback, value): ... -def html_translate(callback, value): ... -def translate(cr, name, source_type, lang, source: Any | None = ...): ... -def translate_sql_constraint(cr, key, lang): ... +def parse_html(text: str) -> _Element: ... +def serialize_html(node: _Element) -> str: ... +def xml_translate(callback: Callable[[str], str | None], value: str) -> str: ... +def html_translate(callback: Callable[[str], str | None], value: str) -> str: ... +def translate(cr: Cursor, name: str, source_type: str, lang: str, source: str | None = ...) -> str: ... +def translate_sql_constraint(cr: Cursor, key: str, lang: str) -> str: ... class GettextAlias: - def _get_db(self): ... - def _get_cr(self, frame, allow_create: bool = ...): ... - def _get_uid(self, frame): ... - def _get_lang(self, frame): ... - def __call__(self, source, *args, **kwargs): ... - def _get_translation(self, source): ... + 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, *args, **kwargs) -> str: ... + def _get_translation(self, source: str) -> str: ... class _lt: - __slots__: Any - _source: Any - _args: Any - def __init__(self, source, *args, **kwargs) -> None: ... - def __str__(self): ... - def __eq__(self, other): ... - def __lt__(self, other): ... - def __add__(self, other): ... - def __radd__(self, other): ... + __slots__ = ['_source', '_args'] + _source: str + _args: tuple + def __init__(self, source: str, *args, **kwargs) -> None: ... + def __str__(self) -> str: ... + def __eq__(self, other) -> NoReturn: ... + def __lt__(self, other) -> NoReturn: ... + def __add__(self, other: str | _lt) -> str: ... + def __radd__(self, other: str) -> str: ... -_: Any +_: GettextAlias -def quote(s): ... +def quote(s: str) -> str: ... -re_escaped_char: Any -re_escaped_replacements: Any +re_escaped_char: Pattern +re_escaped_replacements: dict[str, str] -def _sub_replacement(match_obj): ... -def unquote(str): ... -def TranslationFileReader(source, fileformat: str = ...): ... +def _sub_replacement(match_obj: Match) -> str: ... +def unquote(str: str) -> str: ... +def TranslationFileReader(source: IO, fileformat: str = ...) -> CSVFileReader | PoFileReader: ... class CSVFileReader: - source: Any + source: csv.DictReader prev_code_src: str - def __init__(self, source) -> None: ... - def __iter__(self): ... + def __init__(self, source: IO) -> None: ... + def __iter__(self) -> Iterator[csv.DictReader]: ... class PoFileReader: - pofile: Any - def __init__(self, source): ... - def __iter__(self): ... + pofile: POFile + def __init__(self, source: str | IO): ... + def __iter__(self) -> Iterator[dict[str, Any]]: ... -def TranslationFileWriter(target, fileformat: str = ..., lang: Any | None = ...): ... +def TranslationFileWriter(target, fileformat: str = ..., lang: str | None = ...) -> CSVFileWriter | PoFileWriter | TarFileWriter: ... class CSVFileWriter: - writer: Any - def __init__(self, target) -> None: ... - def write_rows(self, rows) -> None: ... + writer: _CsvWriter + def __init__(self, target: BinaryIO) -> None: ... + def write_rows(self, rows: Iterable) -> None: ... class PoFileWriter: - buffer: Any - lang: Any - po: Any - def __init__(self, target, lang) -> None: ... - def write_rows(self, rows) -> None: ... - def add_entry(self, modules, tnrs, source, trad, comments: Any | None = ...) -> None: ... + buffer: IO + lang: str + po: POFile + def __init__(self, target: IO, lang: str) -> None: ... + def write_rows(self, rows: Iterable) -> None: ... + def add_entry(self, modules, tnrs, source, trad, comments: Iterable[str] | None = ...) -> None: ... class TarFileWriter: - tar: Any - lang: Any - def __init__(self, target, lang) -> None: ... - def write_rows(self, rows) -> None: ... + tar: TarFile + lang: str + def __init__(self, target: IO, lang: str) -> None: ... + def write_rows(self, rows: Iterable) -> None: ... -def trans_export(lang, modules, buffer, format, cr) -> None: ... -def trans_parse_rml(de): ... -def _push(callback, term, source_line) -> None: ... -def in_modules(object_name, modules): ... -def _extract_translatable_qweb_terms(element, callback) -> None: ... -def babel_extract_qweb(fileobj, keywords, comment_tags, options): ... +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]: ... -class ImdInfo(NamedTuple): - name: Any - model: Any - res_id: Any - module: Any +ImdInfo = namedtuple('ExternalId', ['name', 'model', 'res_id', 'module']) class TranslationModuleReader: - _cr: Any - _modules: Any - _lang: Any - env: Any - _to_translate: Any - _path_list: Any - _installed_modules: Any - def __init__(self, cr, modules: Any | None = ..., lang: Any | None = ...) -> None: ... - def __iter__(self): ... - def _push_translation(self, module, ttype, name, res_id, source, comments: Any | None = ..., record_id: Any | None = ...) -> None: ... - def _get_translatable_records(self, imd_records): ... + _cr: Cursor + _modules: list[str] + _lang: str | None + env: Environment + _to_translate: list[tuple] + _path_list: list[tuple[str, Any]] + _installed_modules: list[str] + def __init__(self, cr: Cursor, modules: list[str] | None = ..., lang: str | None = ...) -> None: ... + def __iter__(self) -> Iterable[tuple]: ... + def _push_translation(self, module: str, ttype: str, name: str, res_id: str, source: str, + comments: Iterable[str] | None = ..., record_id: int | None = ...) -> None: ... + def _get_translatable_records(self, imd_records: Iterable[ImdInfo]) -> BaseModel: ... def _export_translatable_records(self) -> None: ... - def _get_module_from_path(self, path): ... - def _verified_module_filepaths(self, fname, path, root): ... - def _babel_extract_terms(self, fname, path, root, extract_method: str = ..., trans_type: str = ..., extra_comments: Any | None = ..., extract_keywords=...) -> None: ... + def _get_module_from_path(self, path: str) -> str: ... + def _verified_module_filepaths(self, fname: str, path: str, root: str) -> tuple[str | None, str | None, str | None, str | None]: ... + def _babel_extract_terms(self, fname: str, path: str, root: str, extract_method: str = ..., trans_type: str = ..., + extra_comments: list[str] | None = ..., extract_keywords: dict = ...) -> None: ... def _export_translatable_resources(self) -> None: ... -def trans_load(cr, filename, lang, verbose: bool = ..., create_empty_translation: bool = ..., overwrite: bool = ...): ... -def trans_load_data(cr, fileobj, fileformat, lang, verbose: bool = ..., create_empty_translation: bool = ..., overwrite: bool = ...) -> None: ... -def get_locales(lang: Any | None = ...) -> None: ... -def resetlocale(): ... -def load_language(cr, lang) -> None: ... +def trans_load(cr: Cursor, filename: str, lang: str, verbose: bool = ..., create_empty_translation: bool = ..., + overwrite: bool = ...) -> None: ... +def trans_load_data(cr: Cursor, fileobj: IO, fileformat: str, lang: str, verbose: bool = ..., + create_empty_translation: bool = ..., overwrite: bool = ...) -> None: ... +def get_locales(lang: str | None = ...) -> None: ... +def resetlocale() -> str: ... +def load_language(cr: Cursor, lang: str) -> None: ...