From 677a35cd54d3e5ffd7a87f9c7bc5291d2e26b87c Mon Sep 17 00:00:00 2001 From: Ismail Date: Fri, 4 Mar 2016 16:44:41 +0000 Subject: [PATCH] Make pyi files work for Py3 and Py3.1 --- stdlib/3/xml/etree/ElementInclude.pyi | 4 +- stdlib/3/xml/etree/ElementPath.pyi | 40 +++----- stdlib/3/xml/etree/ElementTree.pyi | 133 ++++++++++---------------- 3 files changed, 69 insertions(+), 108 deletions(-) diff --git a/stdlib/3/xml/etree/ElementInclude.pyi b/stdlib/3/xml/etree/ElementInclude.pyi index cea0cb4f2..a9e04f256 100644 --- a/stdlib/3/xml/etree/ElementInclude.pyi +++ b/stdlib/3/xml/etree/ElementInclude.pyi @@ -2,7 +2,7 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Union, Optional +from typing import Union, Optional, Callable from .ElementTree import Element XINCLUDE = ... # type: str @@ -16,4 +16,4 @@ def default_loader(href: Union[str, bytes, int], parse: str, encoding: Optional[ # TODO: loader is of type default_loader ie it takes a callable that has the # same signature as default_loader. But default_loader has a keyword argument # Which can't be represented using Callable... -def include(elem: Element, loader=...) -> None: ... +def include(elem: Element, loader: Callable[..., Union[str, Element]]=...) -> None: ... diff --git a/stdlib/3/xml/etree/ElementPath.pyi b/stdlib/3/xml/etree/ElementPath.pyi index af1afaa07..bb5c90b6a 100644 --- a/stdlib/3/xml/etree/ElementPath.pyi +++ b/stdlib/3/xml/etree/ElementPath.pyi @@ -2,34 +2,24 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Any, Pattern, Dict, Generator, Tuple, List, Union, TypeVar, Callable, Optional -from .ElementTree import Element +from typing import Tuple, List, Union, TypeVar, Callable, Optional +from .ElementTree import _ElementInterface -xpath_tokenizer_re = ... # type: Pattern +xpath_tokenizer_re = ... # type: Callable[..., List[Tuple[str, str]]] -_token = Tuple[str, str] -_next = Callable[[], _token] -_callback = Callable[[_SelectorContext, List[Element]], Generator[Element, None, None]] -def xpath_tokenizer(pattern: str, namespaces: Dict[str, str]=...) -> Generator[_token, None, None]: ... -def get_parent_map(context: _SelectorContext) -> Dict[Element, Element]: ... -def prepare_child(next: _next, token: _token) -> _callback: ... -def prepare_star(next: _next, token: _token) -> _callback: ... -def prepare_self(next: _next, token: _token) -> _callback: ... -def prepare_descendant(next: _next, token: _token) -> _callback: ... -def prepare_parent(next: _next, token: _token) -> _callback: ... -def prepare_predicate(next: _next, token: _token) -> _callback: ... - -ops = ... # type: Dict[str, Callable[[_next, _token], _callback]] - -class _SelectorContext: - parent_map = ... # type: Dict[Element, Element] - root = ... # type: Element - def __init__(self, root: Element) -> None: ... +class xpath_descendant_or_self: ... _T = TypeVar('_T') -def iterfind(elem: Element, path: str, namespaces: Dict[str, str]=...) -> List[Element]: ... -def find(elem: Element, path: str, namespaces: Dict[str, str]=...) -> Optional[Element]: ... -def findall(elem: Element, path: str, namespaces: Dict[str, str]=...) -> List[Element]: ... -def findtext(elem: Element, path: str, default: _T=..., namespaces: Dict[str, str]=...) -> Union[_T, str]: ... +class Path: + def __init__(self, path: str) -> None: ... + def find(self, element: _ElementInterface) -> Optional[_ElementInterface]: ... + def findtext(self, element: _ElementInterface, default: _T=...) -> Union[str, _T]: ... + def findall(self, element: _ElementInterface) -> List[_ElementInterface]: ... + +def find(element: _ElementInterface, path: str) -> Optional[_ElementInterface]: ... + +def findtext(element: Element, path: str, default: _T=...) -> Union[str, _T]: ... + +def findall(element: _ElementInterface, path: str) -> List[_ElementInterface]: ... diff --git a/stdlib/3/xml/etree/ElementTree.pyi b/stdlib/3/xml/etree/ElementTree.pyi index 49040f7cf..4c60663e8 100644 --- a/stdlib/3/xml/etree/ElementTree.pyi +++ b/stdlib/3/xml/etree/ElementTree.pyi @@ -7,50 +7,44 @@ import io VERSION = ... # type: str -class ParseError(SyntaxError): ... - -def iselement(element: Element) -> bool: ... - _Ss = TypeVar('_Ss', str, bytes) _T = TypeVar('_T') _str_or_bytes = Union[str, bytes] -class Element: +class _ElementInterface: tag = ... # type: _str_or_bytes attrib = ... # type: Dict[_str_or_bytes, _str_or_bytes] text = ... # type: Optional[_str_or_bytes] tail = ... # type: Optional[_str_or_bytes] - def __init__(self, tag: Union[AnyStr, Callable[..., Element]], attrib: Dict[AnyStr, AnyStr]=..., **extra: Dict[str, AnyStr]) -> None: ... - def append(self, subelement: Element) -> None: ... - def clear(self) -> None: ... - def copy(self) -> Element: ... - def extend(self, elements: Sequence[Element]) -> None: ... - def find(self, path: str, namespaces: Dict[str, str]=...) -> Optional[Element]: ... - def findall(self, path: str, namespaces: Dict[str, str]=...) -> List[Element]: ... - def findtext(self, path: str, default: _T=..., namespaces: Dict[str, str]=...) -> Union[_T, str]: ... - def get(self, key: AnyStr, default: _T=...) -> Union[AnyStr, _T]: ... - def getchildren(self) -> List[Element]: ... - def getiterator(self, tag: Union[str, AnyStr]=...) -> List[Element]: ... - def insert(self, index: int, subelement: Element) -> None: ... - def items(self) -> ItemsView[AnyStr, AnyStr]: ... - def iter(self, tag: Union[str, AnyStr]=...) -> Generator[Element, None, None]: ... - def iterfind(self, path: str, namespaces: Dict[str, str]=...) -> List[Element]: ... - def itertext(self) -> Generator[str, None, None]: ... - def keys(self) -> KeysView[AnyStr]: ... - def makeelement(self, tag: _Ss, attrib: Dict[_Ss, _Ss]) -> Element: ... - def remove(self, subelement: Element) -> None: ... - def set(self, key: AnyStr, value: AnyStr) -> None: ... - def __bool__(self) -> bool: ... - def __delitem__(self, index: int) -> None: ... - def __getitem__(self, index) -> Element: ... + def __init__(self, tag: Union[AnyStr, Callable[..., Element]], attrib: Dict[AnyStr, AnyStr]) -> None: ... + def makeelement(self, tag: _Ss, attrib: Dict[_Ss, _Ss]) -> _ElementInterface: ... def __len__(self) -> int: ... - def __setitem__(self, index: int, element: Element) -> None: ... + def __getitem__(self, index: int) -> _ElementInterface: ... + def __setitem__(self, index: int, element: _ElementInterface) -> None: ... + def __delitem__(self, index: int) -> None: ... + def __getslice__(self, start: int, stop: int) -> Sequence[_ElementInterface]: ... + def __setslice__(self, start: int, stop: int, elements: Sequence[_ElementInterface]) -> None: ... + def __delslice__(self, start: int, stop: int) -> None: ... + def append(self, element: Element) -> None: ... + def insert(self, index: int, element: _ElementInterface) -> None: ... + def remove(self, element: _ElementInterface) -> None: ... + def getchildren(self) -> List[_ElementInterface]: ... + def find(self, path: str) -> Optional[_ElementInterface]: ... + def findtext(self, path: str, default: _T=...) -> Union[str, _T]: ... + def findall(self, path: str) -> List[_ElementInterface]: ... + def clear(self) -> None: ... + def get(self, key: AnyStr, default: _T=...) -> Union[AnyStr, _T]: ... + def set(self, key: AnyStr, value: AnyStr) -> None: ... + def keys(self) -> KeysView[AnyStr]: ... + def items(self) -> ItemsView[AnyStr, AnyStr]: ... + def getiterator(self, tag: Union[str, AnyStr]=...) -> List[_ElementInterface]: ... -def SubElement(parent: Element, tag: AnyStr, attrib: Dict[AnyStr, AnyStr]=..., **extra: Dict[str, AnyStr]) -> Element: ... -def Comment(text: _str_or_bytes=...) -> Element: ... -def ProcessingInstruction(target: str, text: str=...) -> Element: ... +def Element(tag: Union[AnyStr, Callable[..., Element]], attrib: Dict[AnyStr, AnyStr]=..., **extra: Dict[str, AnyStr]) -> _ElementInterface: ... +def SubElement(parent: _ElementInterface, tag: AnyStr, attrib: Dict[AnyStr, AnyStr]=..., **extra: Dict[str, AnyStr]) -> _ElementInterface: ... +def Comment(text: _str_or_bytes=...) -> _ElementInterface: ... +def ProcessingInstruction(target: str, text: str=...) -> _ElementInterface: ... -PI = ... # type: Callable[..., Element] +PI = ... # type: Callable[..., _ElementInterface] class QName: text = ... # type: str @@ -60,68 +54,45 @@ class QName: _file_or_filename = Union[str, bytes, int, IO[Any]] class ElementTree: - def __init__(self, element: Element=..., file: _file_or_filename=...) -> None: ... - def getroot(self) -> Element: ... - def parse(self, source: _file_or_filename, parser: XMLParser=...) -> Element: ... - def iter(self, tag: Union[str, AnyStr]=...) -> Generator[Element, None, None]: ... - def getiterator(self, tag: Union[str, AnyStr]=...) -> List[Element]: ... - def find(self, path: str, namespaces: Dict[str, str]=...) -> Optional[Element]: ... - def findtext(self, path: str, default: _T=..., namespaces: Dict[str, str]=...) -> Union[_T, str]: ... - def findall(self, path: str, namespaces: Dict[str, str]=...) -> List[Element]: ... - def iterfind(self, path: str, namespaces: Dict[str, str]=...) -> List[Element]: ... - def write(self, file_or_filename: _file_or_filename, encoding: str=..., xml_declaration: Optional[bool]=..., default_namespace: str=..., method: str=..., *, short_empty_elements: bool=...) -> None: ... - def write_c14n(self, file: _file_or_filename) -> None: ... + def __init__(self, element: _ElementInterface=..., file: _file_or_filename=...) -> None: ... + def getroot(self) -> _ElementInterface: ... + def parse(self, source: _file_or_filename, parser: XMLTreeBuilder=...) -> _ElementInterface: ... + def getiterator(self, tag: Union[str, AnyStr]=...) -> List[_ElementInterface]: ... + def find(self, path: str) -> Optional[_ElementInterface]: ... + def findtext(self, path: str, default: _T=...) -> Union[_T, str]: ... + def findall(self, path: str) -> List[_ElementInterface]: ... + def write(self, file_or_filename: _file_or_filename, encoding: str=...) -> None: ... -def register_namespace(prefix: str, uri: str) -> None: ... -def tostring(element: Element, encoding: str=..., method: str=..., *, short_empty_elements: bool=...) -> str: ... +def iselement(element: _ElementInterface) -> bool: ... +def dump(elem: _ElementInterface) -> None: ... +def fixtag(tag: Union[str, QName], namespaces: Dict[str, str]) -> Tuple[str, Optional[str]]: ... +def parse(source: _file_or_filename, parser: XMLTreeBuilder=...) -> ElementTree: ... -class _ListDataStream(io.BufferedIOBase): - lst = ... # type: List[str] - def __init__(self, lst) -> None: ... - def writable(self) -> bool: ... - def seekable(self) -> bool: ... - def write(self, b: str) -> None: ... - def tell(self) -> int: ... -def tostringlist(element: Element, encoding: str=..., method: str=..., *, short_empty_elements: bool=...) -> List[str]: ... -def dump(elem: Element) -> None: ... -def parse(source: _file_or_filename, parser: XMLParser=...) -> ElementTree: ... -def iterparse(source: _file_or_filename, events: Sequence[str]=..., parser: XMLParser=...) -> Iterator[Tuple[str, Element]]: ... +class iterparse: + def __init__(self, source: _file_or_filename, events: Sequence[str]=...) -> None: ... + # TODO-figure out this type... + def __next__(self) -> Tuple[str, _ElementInterface]: ... -class XMLPullParser: - def __init__(self, events: Sequence[str]=..., *, _parser: XMLParser=...) -> None: ... - def feed(self, data: bytes) -> None: ... - def close(self) -> None: ... - def read_events(self) -> Iterator[Tuple[str, Element]]: ... - -class _IterParseIterator: - root = ... # type: Any - def __init__(self, source: _file_or_filename, events: Sequence[str], parser: XMLParser, close_source: bool=...) -> None: ... - def __next__(self) -> Tuple[str, Element]: ... - def __iter__(self) -> _IterParseIterator: ... - -def XML(text: AnyStr, parser: XMLParser=...) -> Element: ... -def XMLID(text: AnyStr, parser: XMLParser=...) -> Tuple[Element, Dict[str, Element]]: ... +def XML(text: AnyStr) -> _ElementInterface: ... +def XMLID(text: AnyStr) -> Tuple[_ElementInterface, Dict[str, _ElementInterface]]: ... # TODO-improve this type -fromstring = ... # type: Callable[..., Element] +fromstring = ... # type: Callable[..., _ElementInterface] -def fromstringlist(sequence: Sequence[AnyStr], parser: XMLParser=...) -> Element: ... +def tostring(element: _ElementInterface, encoding: str=...) -> AnyStr: ... class TreeBuilder: - def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], Element]=...) -> None: ... - def close(self) -> Element: ... + def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], _ElementInterface]=...) -> None: ... + def close(self) -> _ElementInterface: ... def data(self, data: AnyStr) -> None: ... - def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> Element: ... - def end(self, tag: AnyStr) -> Element: ... + def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> _ElementInterface: ... + def end(self, tag: AnyStr) -> _ElementInterface: ... class XMLParser: - parser = ... # type: Any - target = ... # type: TreeBuilder # TODO-what is entity used for??? entity = ... # type: Any - version = ... # type: str - def __init__(self, html: int=..., target: TreeBuilder=..., encoding: str=...) -> None: ... + def __init__(self, html: int=..., target: TreeBuilder=...) -> None: ... def doctype(self, name: str, pubid: str, system: str) -> None: ... def close(self) -> Any: ... # TODO-most of the time, this will be Element, but it can be anything target.close() returns def feed(self, data: AnyStr)-> None: ...