From 59d8f58d6320656ce7d9b457ae8503a3b8d5571e Mon Sep 17 00:00:00 2001 From: Ismail Date: Thu, 11 Feb 2016 11:41:58 +0000 Subject: [PATCH 01/11] Add type hints to ElementInclude.pyi --- stdlib/3/xml/etree/ElementInclude.pyi | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/stdlib/3/xml/etree/ElementInclude.pyi b/stdlib/3/xml/etree/ElementInclude.pyi index 3369c9e18..cea0cb4f2 100644 --- a/stdlib/3/xml/etree/ElementInclude.pyi +++ b/stdlib/3/xml/etree/ElementInclude.pyi @@ -2,13 +2,18 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Any +from typing import Union, Optional +from .ElementTree import Element -XINCLUDE = ... # type: Any -XINCLUDE_INCLUDE = ... # type: Any -XINCLUDE_FALLBACK = ... # type: Any +XINCLUDE = ... # type: str +XINCLUDE_INCLUDE = ... # type: str +XINCLUDE_FALLBACK = ... # type: str class FatalIncludeError(SyntaxError): ... -def default_loader(href, parse, encoding=...): ... -def include(elem, loader=...): ... +def default_loader(href: Union[str, bytes, int], parse: str, encoding: Optional[str]=...) -> Union[str, Element]: ... + +# 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: ... From 2def7d13825f57bd37ce5b88b8452406ac997230 Mon Sep 17 00:00:00 2001 From: Ismail Date: Thu, 11 Feb 2016 12:46:05 +0000 Subject: [PATCH 02/11] Type check Element class --- stdlib/3/xml/etree/ElementTree.pyi | 70 ++++++++++++++++-------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/stdlib/3/xml/etree/ElementTree.pyi b/stdlib/3/xml/etree/ElementTree.pyi index 74cc977ae..614fb2db7 100644 --- a/stdlib/3/xml/etree/ElementTree.pyi +++ b/stdlib/3/xml/etree/ElementTree.pyi @@ -2,46 +2,50 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Any +from typing import Any, Union, Dict, List, Sequence, TypeVar, Optional, KeysView, ItemsView, Generator import io -VERSION = ... # type: Any +VERSION = ... # type: str class ParseError(SyntaxError): ... -def iselement(element): ... +def iselement(element: Element) -> bool: ... + +_S = TypeVar('_S', str, bytes) +_Ss = TypeVar('_Ss', str, bytes) +_T = TypeVar('_T') +str_or_bytes = Union[str, bytes] class Element: - def __init__(self, tag, attrib=..., **extra) -> None: ... - def append(self, *args, **kwargs): ... - def clear(self, *args, **kwargs): ... - def extend(self, *args, **kwargs): ... - def find(self, *args, **kwargs): ... - def findall(self, *args, **kwargs): ... - def findtext(self, match, default=..., namespaces=...): ... - def get(self, *args, **kwargs): ... - def getchildren(self): ... - def getiterator(self, tag=...): ... - def insert(self, *args, **kwargs): ... - def items(self, *args, **kwargs): ... - def iter(self, *args, **kwargs): ... - def iterfind(self, match, namespaces=...): ... - def itertext(self): ... - def keys(self): ... - def makeelement(self, tag, attrib): ... - def remove(self, *args, **kwargs): ... - def set(self, *args, **kwargs): ... - def __copy__(self): ... - def __deepcopy__(self): ... - def __delattr__(self, name): ... - def __delitem__(self, name): ... - def __getitem__(self, name): ... - def __getstate__(self): ... - def __len__(self): ... - def __setattr__(self, name, value): ... - def __setitem__(self, index, object): ... - def __setstate__(self, state): ... - def __sizeof__(self): ... + 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: _S, attrib: Dict[_S, _S]=..., **extra: Dict[str, _S]) -> 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: _S, default: _T=...) -> Union[_S, _T]: ... + def getchildren(self) -> List[Element]: ... + def getiterator(self, tag: Union[str, _S]=...) -> List[Element]: ... + def insert(self, index: int, subelement: Element) -> None: ... + def items(self) -> ItemsView[_S, _S]: ... + def iter(self, tag: Union[str, _S]=...) -> 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[_S]: ... + def makeelement(self, tag: _Ss, attrib: Dict[_Ss, _Ss]) -> Element: ... + def remove(self, subelement: Element) -> None: ... + def set(self, key: _S, value: _S) -> None: ... + def __bool__(self) -> bool: ... + def __delitem__(self, index: int) -> None: ... + def __getitem__(self, index) -> Element: ... + def __len__(self) -> int: ... + def __setitem__(self, index: int, element: Element) -> None: ... def SubElement(parent, tag, attrib=..., **extra): ... def Comment(text=...): ... From bb3fc382a12473e0719f46c72adc20a1e357e795 Mon Sep 17 00:00:00 2001 From: Ismail Date: Fri, 26 Feb 2016 17:30:49 +0000 Subject: [PATCH 03/11] Type check rest of ElementTree file --- stdlib/3/xml/etree/ElementTree.pyi | 148 +++++++++++++++-------------- 1 file changed, 75 insertions(+), 73 deletions(-) diff --git a/stdlib/3/xml/etree/ElementTree.pyi b/stdlib/3/xml/etree/ElementTree.pyi index 614fb2db7..cd97c29f8 100644 --- a/stdlib/3/xml/etree/ElementTree.pyi +++ b/stdlib/3/xml/etree/ElementTree.pyi @@ -2,7 +2,7 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Any, Union, Dict, List, Sequence, TypeVar, Optional, KeysView, ItemsView, Generator +from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, KeysView, ItemsView, Generator import io VERSION = ... # type: str @@ -11,17 +11,16 @@ class ParseError(SyntaxError): ... def iselement(element: Element) -> bool: ... -_S = TypeVar('_S', str, bytes) _Ss = TypeVar('_Ss', str, bytes) _T = TypeVar('_T') -str_or_bytes = Union[str, bytes] +_str_or_bytes = Union[str, bytes] class Element: - 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: _S, attrib: Dict[_S, _S]=..., **extra: Dict[str, _S]) -> None: ... + 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: ... @@ -29,103 +28,106 @@ class Element: 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: _S, default: _T=...) -> Union[_S, _T]: ... + def get(self, key: AnyStr, default: _T=...) -> Union[AnyStr, _T]: ... def getchildren(self) -> List[Element]: ... - def getiterator(self, tag: Union[str, _S]=...) -> List[Element]: ... + def getiterator(self, tag: Union[str, AnyStr]=...) -> List[Element]: ... def insert(self, index: int, subelement: Element) -> None: ... - def items(self) -> ItemsView[_S, _S]: ... - def iter(self, tag: Union[str, _S]=...) -> Generator[Element, None, 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[_S]: ... + 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: _S, value: _S) -> 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 __len__(self) -> int: ... def __setitem__(self, index: int, element: Element) -> None: ... -def SubElement(parent, tag, attrib=..., **extra): ... -def Comment(text=...): ... -def ProcessingInstruction(target, text=...): ... +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: ... -PI = ... # type: Any +PI = ... # type: Callable[..., Element] class QName: - text = ... # type: Any - def __init__(self, text_or_uri, tag=...) -> None: ... - def __hash__(self): ... - def __le__(self, other): ... - def __lt__(self, other): ... - def __ge__(self, other): ... - def __gt__(self, other): ... - def __eq__(self, other): ... - def __ne__(self, other): ... + text = ... # type: str + def __init__(self, text_or_uri: str, tag: str=...) -> None: ... + def __hash__(self) -> int: ... + def __le__(self, other: Union[str, QName]) -> bool: ... + def __lt__(self, other: Union[str, QName]) -> bool: ... + def __ge__(self, other: Union[str, QName]) -> bool: ... + def __gt__(self, other: Union[str, QName]) -> bool: ... + def __eq__(self, other: Union[str, QName]) -> bool: ... + def __ne__(self, other: Union[str, QName]) -> bool: ... + +_file_or_filename = Union[str, bytes, int, IO[Any]] class ElementTree: - def __init__(self, element=..., file=...) -> None: ... - def getroot(self): ... - def parse(self, source, parser=...): ... - def iter(self, tag=...): ... - def getiterator(self, tag=...): ... - def find(self, path, namespaces=...): ... - def findtext(self, path, default=..., namespaces=...): ... - def findall(self, path, namespaces=...): ... - def iterfind(self, path, namespaces=...): ... - def write(self, file_or_filename, encoding=..., xml_declaration=..., default_namespace=..., method=..., *, short_empty_elements=...): ... - def write_c14n(self, file): ... + 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 register_namespace(prefix, uri): ... -def tostring(element, encoding=..., method=..., *, short_empty_elements=...): ... +def register_namespace(prefix: str, uri: str) -> None: ... +def tostring(element: Element, encoding: str=..., method: str=..., *, short_empty_elements: bool=...) -> str: ... class _ListDataStream(io.BufferedIOBase): - lst = ... # type: Any + lst = ... # type: List[str] def __init__(self, lst) -> None: ... - def writable(self): ... - def seekable(self): ... - def write(self, b): ... - def tell(self): ... + def writable(self) -> bool: ... + def seekable(self) -> bool: ... + def write(self, b: str) -> None: ... + def tell(self) -> int: ... -def tostringlist(element, encoding=..., method=..., *, short_empty_elements=...): ... -def dump(elem): ... -def parse(source, parser=...): ... -def iterparse(source, events=..., parser=...): ... +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 XMLPullParser: - def __init__(self, events=..., *, _parser=...) -> None: ... - def feed(self, data): ... - def close(self): ... - def read_events(self): ... + 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, events, parser, close_source=...) -> None: ... - def __next__(self): ... - def __iter__(self): ... + 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, parser=...): ... -def XMLID(text, parser=...): ... +def XML(text: AnyStr, parser: XMLParser=...) -> Element: ... +def XMLID(text: AnyStr, parser: XMLParser=...) -> Tuple[Element, Dict[str, Element]]: ... -fromstring = ... # type: Any +# TODO-improve this type +fromstring = ... # type: Callable[..., Element] -def fromstringlist(sequence, parser=...): ... +def fromstringlist(sequence: Sequence[AnyStr], parser: XMLParser=...) -> Element: ... class TreeBuilder: - def __init__(self, element_factory=...) -> None: ... - def close(self): ... - def data(self, data): ... - def start(self, tag, attrs): ... - def end(self, tag): ... + def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], Element]=...) -> None: ... + def close(self) -> Element: ... + def data(self, data: AnyStr) -> None: ... + def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> Element: ... + def end(self, tag: AnyStr) -> Element: ... class XMLParser: - target = ... # type: Any + parser = ... # type: Any + target = ... # type: TreeBuilder + # TODO-what is entity used for??? entity = ... # type: Any - version = ... # type: Any - def __init__(self, html=..., target=..., encoding=...) -> None: ... - def _parse_whole(self, *args, **kwargs): ... - def _setevents(self, *args, **kwargs): ... - def close(self, *args, **kwargs): ... - def doctype(self, name, pubid, system): ... - def feed(self, data): ... + version = ... # type: str + def __init__(self, html: int=..., target: TreeBuilder=..., encoding: str=...) -> 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: ... From e525cd3253ffedb47b37a7603bf7e79153574cd5 Mon Sep 17 00:00:00 2001 From: Ismail Date: Mon, 29 Feb 2016 15:28:03 +0000 Subject: [PATCH 04/11] Improve types on ElementPath --- stdlib/3/xml/etree/ElementPath.pyi | 43 +++++++++++++++++------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/stdlib/3/xml/etree/ElementPath.pyi b/stdlib/3/xml/etree/ElementPath.pyi index dee3bb82d..af1afaa07 100644 --- a/stdlib/3/xml/etree/ElementPath.pyi +++ b/stdlib/3/xml/etree/ElementPath.pyi @@ -2,27 +2,34 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Any +from typing import Any, Pattern, Dict, Generator, Tuple, List, Union, TypeVar, Callable, Optional +from .ElementTree import Element -xpath_tokenizer_re = ... # type: Any +xpath_tokenizer_re = ... # type: Pattern -def xpath_tokenizer(pattern, namespaces=...): ... -def get_parent_map(context): ... -def prepare_child(next, token): ... -def prepare_star(next, token): ... -def prepare_self(next, token): ... -def prepare_descendant(next, token): ... -def prepare_parent(next, token): ... -def prepare_predicate(next, token): ... +_token = Tuple[str, str] +_next = Callable[[], _token] +_callback = Callable[[_SelectorContext, List[Element]], Generator[Element, None, None]] -ops = ... # type: Any +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: Any - root = ... # type: Any - def __init__(self, root) -> None: ... + parent_map = ... # type: Dict[Element, Element] + root = ... # type: Element + def __init__(self, root: Element) -> None: ... -def iterfind(elem, path, namespaces=...): ... -def find(elem, path, namespaces=...): ... -def findall(elem, path, namespaces=...): ... -def findtext(elem, path, default=..., namespaces=...): ... +_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]: ... From 4ac61ea543e0e97f64a3d93008794ade388b3b77 Mon Sep 17 00:00:00 2001 From: Ismail Date: Wed, 2 Mar 2016 22:47:55 +0000 Subject: [PATCH 05/11] Remove unnecessary __methods__ --- stdlib/3/xml/etree/ElementTree.pyi | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/stdlib/3/xml/etree/ElementTree.pyi b/stdlib/3/xml/etree/ElementTree.pyi index cd97c29f8..49040f7cf 100644 --- a/stdlib/3/xml/etree/ElementTree.pyi +++ b/stdlib/3/xml/etree/ElementTree.pyi @@ -55,13 +55,7 @@ PI = ... # type: Callable[..., Element] class QName: text = ... # type: str def __init__(self, text_or_uri: str, tag: str=...) -> None: ... - def __hash__(self) -> int: ... - def __le__(self, other: Union[str, QName]) -> bool: ... - def __lt__(self, other: Union[str, QName]) -> bool: ... - def __ge__(self, other: Union[str, QName]) -> bool: ... - def __gt__(self, other: Union[str, QName]) -> bool: ... - def __eq__(self, other: Union[str, QName]) -> bool: ... - def __ne__(self, other: Union[str, QName]) -> bool: ... + _file_or_filename = Union[str, bytes, int, IO[Any]] From 9f072a928fea030e76d5b92cf72f722005070ffe Mon Sep 17 00:00:00 2001 From: Ismail Date: Thu, 3 Mar 2016 12:54:54 +0000 Subject: [PATCH 06/11] Create files for Py3.4 --- stdlib/3.4/xml/etree/ElementInclude.pyi | 19 ++++ stdlib/3.4/xml/etree/ElementPath.pyi | 35 +++++++ stdlib/3.4/xml/etree/ElementTree.pyi | 127 ++++++++++++++++++++++++ stdlib/3.4/xml/etree/__init__.pyi | 0 stdlib/3.4/xml/etree/cElementTree.pyi | 5 + 5 files changed, 186 insertions(+) create mode 100644 stdlib/3.4/xml/etree/ElementInclude.pyi create mode 100644 stdlib/3.4/xml/etree/ElementPath.pyi create mode 100644 stdlib/3.4/xml/etree/ElementTree.pyi create mode 100644 stdlib/3.4/xml/etree/__init__.pyi create mode 100644 stdlib/3.4/xml/etree/cElementTree.pyi diff --git a/stdlib/3.4/xml/etree/ElementInclude.pyi b/stdlib/3.4/xml/etree/ElementInclude.pyi new file mode 100644 index 000000000..a9e04f256 --- /dev/null +++ b/stdlib/3.4/xml/etree/ElementInclude.pyi @@ -0,0 +1,19 @@ +# Stubs for xml.etree.ElementInclude (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Union, Optional, Callable +from .ElementTree import Element + +XINCLUDE = ... # type: str +XINCLUDE_INCLUDE = ... # type: str +XINCLUDE_FALLBACK = ... # type: str + +class FatalIncludeError(SyntaxError): ... + +def default_loader(href: Union[str, bytes, int], parse: str, encoding: Optional[str]=...) -> Union[str, Element]: ... + +# 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: Callable[..., Union[str, Element]]=...) -> None: ... diff --git a/stdlib/3.4/xml/etree/ElementPath.pyi b/stdlib/3.4/xml/etree/ElementPath.pyi new file mode 100644 index 000000000..eea0e5192 --- /dev/null +++ b/stdlib/3.4/xml/etree/ElementPath.pyi @@ -0,0 +1,35 @@ +# Stubs for xml.etree.ElementPath (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Pattern, Dict, Generator, Tuple, List, Union, TypeVar, Callable, Optional +from .ElementTree import Element + +xpath_tokenizer_re = ... # type: Pattern + +_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: ... + +_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]: ... diff --git a/stdlib/3.4/xml/etree/ElementTree.pyi b/stdlib/3.4/xml/etree/ElementTree.pyi new file mode 100644 index 000000000..49040f7cf --- /dev/null +++ b/stdlib/3.4/xml/etree/ElementTree.pyi @@ -0,0 +1,127 @@ +# Stubs for xml.etree.ElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, KeysView, ItemsView, Generator +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: + 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 __len__(self) -> int: ... + def __setitem__(self, index: int, element: Element) -> None: ... + +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: ... + +PI = ... # type: Callable[..., Element] + +class QName: + text = ... # type: str + def __init__(self, text_or_uri: str, tag: str=...) -> None: ... + + +_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 register_namespace(prefix: str, uri: str) -> None: ... +def tostring(element: Element, encoding: str=..., method: str=..., *, short_empty_elements: bool=...) -> str: ... + +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 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]]: ... + +# TODO-improve this type +fromstring = ... # type: Callable[..., Element] + +def fromstringlist(sequence: Sequence[AnyStr], parser: XMLParser=...) -> Element: ... + +class TreeBuilder: + def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], Element]=...) -> None: ... + def close(self) -> Element: ... + def data(self, data: AnyStr) -> None: ... + def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> Element: ... + def end(self, tag: AnyStr) -> Element: ... + +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 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: ... diff --git a/stdlib/3.4/xml/etree/__init__.pyi b/stdlib/3.4/xml/etree/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/stdlib/3.4/xml/etree/cElementTree.pyi b/stdlib/3.4/xml/etree/cElementTree.pyi new file mode 100644 index 000000000..a6f4274de --- /dev/null +++ b/stdlib/3.4/xml/etree/cElementTree.pyi @@ -0,0 +1,5 @@ +# Stubs for xml.etree.cElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from xml.etree.ElementTree import * From f3dc9dd361a9a7ff09285b741ca8974c47b53206 Mon Sep 17 00:00:00 2001 From: Ismail Date: Thu, 3 Mar 2016 12:55:27 +0000 Subject: [PATCH 07/11] Add files for Py3.5 --- stdlib/3.5/xml/etree/ElementInclude.pyi | 19 ++++ stdlib/3.5/xml/etree/ElementPath.pyi | 35 +++++++ stdlib/3.5/xml/etree/ElementTree.pyi | 127 ++++++++++++++++++++++++ stdlib/3.5/xml/etree/__init__.pyi | 0 stdlib/3.5/xml/etree/cElementTree.pyi | 5 + 5 files changed, 186 insertions(+) create mode 100644 stdlib/3.5/xml/etree/ElementInclude.pyi create mode 100644 stdlib/3.5/xml/etree/ElementPath.pyi create mode 100644 stdlib/3.5/xml/etree/ElementTree.pyi create mode 100644 stdlib/3.5/xml/etree/__init__.pyi create mode 100644 stdlib/3.5/xml/etree/cElementTree.pyi diff --git a/stdlib/3.5/xml/etree/ElementInclude.pyi b/stdlib/3.5/xml/etree/ElementInclude.pyi new file mode 100644 index 000000000..a9e04f256 --- /dev/null +++ b/stdlib/3.5/xml/etree/ElementInclude.pyi @@ -0,0 +1,19 @@ +# Stubs for xml.etree.ElementInclude (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Union, Optional, Callable +from .ElementTree import Element + +XINCLUDE = ... # type: str +XINCLUDE_INCLUDE = ... # type: str +XINCLUDE_FALLBACK = ... # type: str + +class FatalIncludeError(SyntaxError): ... + +def default_loader(href: Union[str, bytes, int], parse: str, encoding: Optional[str]=...) -> Union[str, Element]: ... + +# 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: Callable[..., Union[str, Element]]=...) -> None: ... diff --git a/stdlib/3.5/xml/etree/ElementPath.pyi b/stdlib/3.5/xml/etree/ElementPath.pyi new file mode 100644 index 000000000..eea0e5192 --- /dev/null +++ b/stdlib/3.5/xml/etree/ElementPath.pyi @@ -0,0 +1,35 @@ +# Stubs for xml.etree.ElementPath (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Pattern, Dict, Generator, Tuple, List, Union, TypeVar, Callable, Optional +from .ElementTree import Element + +xpath_tokenizer_re = ... # type: Pattern + +_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: ... + +_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]: ... diff --git a/stdlib/3.5/xml/etree/ElementTree.pyi b/stdlib/3.5/xml/etree/ElementTree.pyi new file mode 100644 index 000000000..49040f7cf --- /dev/null +++ b/stdlib/3.5/xml/etree/ElementTree.pyi @@ -0,0 +1,127 @@ +# Stubs for xml.etree.ElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, KeysView, ItemsView, Generator +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: + 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 __len__(self) -> int: ... + def __setitem__(self, index: int, element: Element) -> None: ... + +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: ... + +PI = ... # type: Callable[..., Element] + +class QName: + text = ... # type: str + def __init__(self, text_or_uri: str, tag: str=...) -> None: ... + + +_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 register_namespace(prefix: str, uri: str) -> None: ... +def tostring(element: Element, encoding: str=..., method: str=..., *, short_empty_elements: bool=...) -> str: ... + +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 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]]: ... + +# TODO-improve this type +fromstring = ... # type: Callable[..., Element] + +def fromstringlist(sequence: Sequence[AnyStr], parser: XMLParser=...) -> Element: ... + +class TreeBuilder: + def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], Element]=...) -> None: ... + def close(self) -> Element: ... + def data(self, data: AnyStr) -> None: ... + def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> Element: ... + def end(self, tag: AnyStr) -> Element: ... + +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 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: ... diff --git a/stdlib/3.5/xml/etree/__init__.pyi b/stdlib/3.5/xml/etree/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/stdlib/3.5/xml/etree/cElementTree.pyi b/stdlib/3.5/xml/etree/cElementTree.pyi new file mode 100644 index 000000000..a6f4274de --- /dev/null +++ b/stdlib/3.5/xml/etree/cElementTree.pyi @@ -0,0 +1,5 @@ +# Stubs for xml.etree.cElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from xml.etree.ElementTree import * From 335be6b94ec34fd386ff65ae00365f7bc14428f3 Mon Sep 17 00:00:00 2001 From: Ismail Date: Thu, 3 Mar 2016 12:55:51 +0000 Subject: [PATCH 08/11] Add files for Py 3.3 and 3.2 --- stdlib/3.2/xml/etree/ElementInclude.pyi | 19 ++++ stdlib/3.2/xml/etree/ElementPath.pyi | 35 +++++++ stdlib/3.2/xml/etree/ElementTree.pyi | 120 +++++++++++++++++++++++ stdlib/3.2/xml/etree/__init__.pyi | 0 stdlib/3.2/xml/etree/cElementTree.pyi | 5 + stdlib/3.3/xml/etree/ElementInclude.pyi | 19 ++++ stdlib/3.3/xml/etree/ElementPath.pyi | 35 +++++++ stdlib/3.3/xml/etree/ElementTree.pyi | 122 ++++++++++++++++++++++++ stdlib/3.3/xml/etree/__init__.pyi | 0 stdlib/3.3/xml/etree/cElementTree.pyi | 5 + 10 files changed, 360 insertions(+) create mode 100644 stdlib/3.2/xml/etree/ElementInclude.pyi create mode 100644 stdlib/3.2/xml/etree/ElementPath.pyi create mode 100644 stdlib/3.2/xml/etree/ElementTree.pyi create mode 100644 stdlib/3.2/xml/etree/__init__.pyi create mode 100644 stdlib/3.2/xml/etree/cElementTree.pyi create mode 100644 stdlib/3.3/xml/etree/ElementInclude.pyi create mode 100644 stdlib/3.3/xml/etree/ElementPath.pyi create mode 100644 stdlib/3.3/xml/etree/ElementTree.pyi create mode 100644 stdlib/3.3/xml/etree/__init__.pyi create mode 100644 stdlib/3.3/xml/etree/cElementTree.pyi diff --git a/stdlib/3.2/xml/etree/ElementInclude.pyi b/stdlib/3.2/xml/etree/ElementInclude.pyi new file mode 100644 index 000000000..a9e04f256 --- /dev/null +++ b/stdlib/3.2/xml/etree/ElementInclude.pyi @@ -0,0 +1,19 @@ +# Stubs for xml.etree.ElementInclude (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Union, Optional, Callable +from .ElementTree import Element + +XINCLUDE = ... # type: str +XINCLUDE_INCLUDE = ... # type: str +XINCLUDE_FALLBACK = ... # type: str + +class FatalIncludeError(SyntaxError): ... + +def default_loader(href: Union[str, bytes, int], parse: str, encoding: Optional[str]=...) -> Union[str, Element]: ... + +# 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: Callable[..., Union[str, Element]]=...) -> None: ... diff --git a/stdlib/3.2/xml/etree/ElementPath.pyi b/stdlib/3.2/xml/etree/ElementPath.pyi new file mode 100644 index 000000000..eea0e5192 --- /dev/null +++ b/stdlib/3.2/xml/etree/ElementPath.pyi @@ -0,0 +1,35 @@ +# Stubs for xml.etree.ElementPath (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Pattern, Dict, Generator, Tuple, List, Union, TypeVar, Callable, Optional +from .ElementTree import Element + +xpath_tokenizer_re = ... # type: Pattern + +_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: ... + +_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]: ... diff --git a/stdlib/3.2/xml/etree/ElementTree.pyi b/stdlib/3.2/xml/etree/ElementTree.pyi new file mode 100644 index 000000000..0f2fc2c79 --- /dev/null +++ b/stdlib/3.2/xml/etree/ElementTree.pyi @@ -0,0 +1,120 @@ +# Stubs for xml.etree.ElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, KeysView, ItemsView, Generator +import io + +VERSION = ... # type: str + +_Ss = TypeVar('_Ss', str, bytes) +_T = TypeVar('_T') +_str_or_bytes = Union[str, bytes] + +class _SimpleElementPath: + def find(self, element: Element, tag: _str_or_bytes, namespaces: Any=...) -> Optional[Element]: ... + def findtext(self, element: Element, tag: _str_or_bytes, default: _T=..., namespaces: Any=...) -> Union[str, bytes, _T]: ... + def iterfind(self, element: Element, tag: _str_or_bytes, namespaces: Any=...) -> Generator[Element, None, None]: ... + def findall(self, element: Element, tag: _str_or_bytes, namespaces: Any=...) -> List[Element]: ... + +class ParseError(SyntaxError): ... + +def iselement(element: Element) -> bool: ... + +class Element: + 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 __len__(self) -> int: ... + def __setitem__(self, index: int, element: Element) -> None: ... + +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: ... + +PI = ... # type: Callable[..., Element] + +class QName: + text = ... # type: str + def __init__(self, text_or_uri: str, tag: str=...) -> None: ... + + +_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=...) -> None: ... + def write_c14n(self, file: _file_or_filename) -> None: ... + +def register_namespace(prefix: str, uri: str) -> None: ... +def tostring(element: Element, encoding: str=..., method: str=...) -> str: ... + +def tostringlist(element: Element, encoding: str=..., method: str=...) -> 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 _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]]: ... + +# TODO-improve this type +fromstring = ... # type: Callable[..., Element] + +def fromstringlist(sequence: Sequence[AnyStr], parser: XMLParser=...) -> Element: ... + +class TreeBuilder: + def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], Element]=...) -> None: ... + def close(self) -> Element: ... + def data(self, data: AnyStr) -> None: ... + def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> Element: ... + def end(self, tag: AnyStr) -> Element: ... + +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 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: ... diff --git a/stdlib/3.2/xml/etree/__init__.pyi b/stdlib/3.2/xml/etree/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/stdlib/3.2/xml/etree/cElementTree.pyi b/stdlib/3.2/xml/etree/cElementTree.pyi new file mode 100644 index 000000000..a6f4274de --- /dev/null +++ b/stdlib/3.2/xml/etree/cElementTree.pyi @@ -0,0 +1,5 @@ +# Stubs for xml.etree.cElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from xml.etree.ElementTree import * diff --git a/stdlib/3.3/xml/etree/ElementInclude.pyi b/stdlib/3.3/xml/etree/ElementInclude.pyi new file mode 100644 index 000000000..a9e04f256 --- /dev/null +++ b/stdlib/3.3/xml/etree/ElementInclude.pyi @@ -0,0 +1,19 @@ +# Stubs for xml.etree.ElementInclude (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Union, Optional, Callable +from .ElementTree import Element + +XINCLUDE = ... # type: str +XINCLUDE_INCLUDE = ... # type: str +XINCLUDE_FALLBACK = ... # type: str + +class FatalIncludeError(SyntaxError): ... + +def default_loader(href: Union[str, bytes, int], parse: str, encoding: Optional[str]=...) -> Union[str, Element]: ... + +# 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: Callable[..., Union[str, Element]]=...) -> None: ... diff --git a/stdlib/3.3/xml/etree/ElementPath.pyi b/stdlib/3.3/xml/etree/ElementPath.pyi new file mode 100644 index 000000000..eea0e5192 --- /dev/null +++ b/stdlib/3.3/xml/etree/ElementPath.pyi @@ -0,0 +1,35 @@ +# Stubs for xml.etree.ElementPath (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Pattern, Dict, Generator, Tuple, List, Union, TypeVar, Callable, Optional +from .ElementTree import Element + +xpath_tokenizer_re = ... # type: Pattern + +_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: ... + +_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]: ... diff --git a/stdlib/3.3/xml/etree/ElementTree.pyi b/stdlib/3.3/xml/etree/ElementTree.pyi new file mode 100644 index 000000000..25b36c858 --- /dev/null +++ b/stdlib/3.3/xml/etree/ElementTree.pyi @@ -0,0 +1,122 @@ +# Stubs for xml.etree.ElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, KeysView, ItemsView, Generator +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: + 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 __len__(self) -> int: ... + def __setitem__(self, index: int, element: Element) -> None: ... + +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: ... + +PI = ... # type: Callable[..., Element] + +class QName: + text = ... # type: str + def __init__(self, text_or_uri: str, tag: str=...) -> None: ... + + +_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=...) -> None: ... + def write_c14n(self, file: _file_or_filename) -> None: ... + +def register_namespace(prefix: str, uri: str) -> None: ... +def tostring(element: Element, encoding: str=..., method: str=...) -> str: ... + +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=...) -> 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 _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]]: ... + +# TODO-improve this type +fromstring = ... # type: Callable[..., Element] + +def fromstringlist(sequence: Sequence[AnyStr], parser: XMLParser=...) -> Element: ... + +class TreeBuilder: + def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], Element]=...) -> None: ... + def close(self) -> Element: ... + def data(self, data: AnyStr) -> None: ... + def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> Element: ... + def end(self, tag: AnyStr) -> Element: ... + +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 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: ... diff --git a/stdlib/3.3/xml/etree/__init__.pyi b/stdlib/3.3/xml/etree/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/stdlib/3.3/xml/etree/cElementTree.pyi b/stdlib/3.3/xml/etree/cElementTree.pyi new file mode 100644 index 000000000..a6f4274de --- /dev/null +++ b/stdlib/3.3/xml/etree/cElementTree.pyi @@ -0,0 +1,5 @@ +# Stubs for xml.etree.cElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from xml.etree.ElementTree import * From 677a35cd54d3e5ffd7a87f9c7bc5291d2e26b87c Mon Sep 17 00:00:00 2001 From: Ismail Date: Fri, 4 Mar 2016 16:44:41 +0000 Subject: [PATCH 09/11] 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: ... From 403261724a3911b13a77b8692b930d424e83ed7f Mon Sep 17 00:00:00 2001 From: Ismail Date: Mon, 7 Mar 2016 13:02:40 +0000 Subject: [PATCH 10/11] Add pyi files for Py2.7 --- stdlib/2.7/xml/etree/ElementInclude.pyi | 19 ++++ stdlib/2.7/xml/etree/ElementPath.pyi | 35 +++++++ stdlib/2.7/xml/etree/ElementTree.pyi | 116 ++++++++++++++++++++++++ stdlib/2.7/xml/etree/__init__.pyi | 0 stdlib/2.7/xml/etree/cElementTree.pyi | 5 + 5 files changed, 175 insertions(+) create mode 100644 stdlib/2.7/xml/etree/ElementInclude.pyi create mode 100644 stdlib/2.7/xml/etree/ElementPath.pyi create mode 100644 stdlib/2.7/xml/etree/ElementTree.pyi create mode 100644 stdlib/2.7/xml/etree/__init__.pyi create mode 100644 stdlib/2.7/xml/etree/cElementTree.pyi diff --git a/stdlib/2.7/xml/etree/ElementInclude.pyi b/stdlib/2.7/xml/etree/ElementInclude.pyi new file mode 100644 index 000000000..a9e04f256 --- /dev/null +++ b/stdlib/2.7/xml/etree/ElementInclude.pyi @@ -0,0 +1,19 @@ +# Stubs for xml.etree.ElementInclude (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Union, Optional, Callable +from .ElementTree import Element + +XINCLUDE = ... # type: str +XINCLUDE_INCLUDE = ... # type: str +XINCLUDE_FALLBACK = ... # type: str + +class FatalIncludeError(SyntaxError): ... + +def default_loader(href: Union[str, bytes, int], parse: str, encoding: Optional[str]=...) -> Union[str, Element]: ... + +# 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: Callable[..., Union[str, Element]]=...) -> None: ... diff --git a/stdlib/2.7/xml/etree/ElementPath.pyi b/stdlib/2.7/xml/etree/ElementPath.pyi new file mode 100644 index 000000000..eea0e5192 --- /dev/null +++ b/stdlib/2.7/xml/etree/ElementPath.pyi @@ -0,0 +1,35 @@ +# Stubs for xml.etree.ElementPath (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Pattern, Dict, Generator, Tuple, List, Union, TypeVar, Callable, Optional +from .ElementTree import Element + +xpath_tokenizer_re = ... # type: Pattern + +_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: ... + +_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]: ... diff --git a/stdlib/2.7/xml/etree/ElementTree.pyi b/stdlib/2.7/xml/etree/ElementTree.pyi new file mode 100644 index 000000000..bec7e9f0e --- /dev/null +++ b/stdlib/2.7/xml/etree/ElementTree.pyi @@ -0,0 +1,116 @@ +# Stubs for xml.etree.ElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, KeysView, ItemsView, Generator +import io + +VERSION = ... # type: str + +_Ss = TypeVar('_Ss', str, bytes) +_T = TypeVar('_T') +_str_or_bytes = Union[str, bytes] + +class _SimpleElementPath: + def find(self, element: Element, tag: _str_or_bytes, namespaces: Any=...) -> Optional[Element]: ... + def findtext(self, element: Element, tag: _str_or_bytes, default: _T=..., namespaces: Any=...) -> Union[str, bytes, _T]: ... + def iterfind(self, element: Element, tag: _str_or_bytes, namespaces: Any=...) -> Generator[Element, None, None]: ... + def findall(self, element: Element, tag: _str_or_bytes, namespaces: Any=...) -> List[Element]: ... + +class ParseError(SyntaxError): ... + +def iselement(element: Element) -> bool: ... + +class Element: + 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, element: 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, element: 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, element: 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 __len__(self) -> int: ... + def __setitem__(self, index: int, element: Element) -> None: ... + +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: ... + +PI = ... # type: Callable[..., Element] + +class QName: + text = ... # type: str + def __init__(self, text_or_uri: str, tag: str=...) -> None: ... + + +_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=...) -> None: ... + def write_c14n(self, file: _file_or_filename) -> None: ... + +def register_namespace(prefix: str, uri: str) -> None: ... +def tostring(element: Element, encoding: str=..., method: str=...) -> str: ... +def tostringlist(element: Element, encoding: str=..., method: str=...) -> 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 _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]]: ... +# TODO-improve this type +fromstring = ... # type: Callable[..., Element] +def fromstringlist(sequence: Sequence[AnyStr], parser: XMLParser=...) -> Element: ... + +class TreeBuilder: + def __init__(self, element_factory: Callable[[AnyStr, Dict[AnyStr, AnyStr]], Element]=...) -> None: ... + def close(self) -> Element: ... + def data(self, data: AnyStr) -> None: ... + def start(self, tag: AnyStr, attrs: Dict[AnyStr, AnyStr]) -> Element: ... + def end(self, tag: AnyStr) -> Element: ... + +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 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: ... diff --git a/stdlib/2.7/xml/etree/__init__.pyi b/stdlib/2.7/xml/etree/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/stdlib/2.7/xml/etree/cElementTree.pyi b/stdlib/2.7/xml/etree/cElementTree.pyi new file mode 100644 index 000000000..a6f4274de --- /dev/null +++ b/stdlib/2.7/xml/etree/cElementTree.pyi @@ -0,0 +1,5 @@ +# Stubs for xml.etree.cElementTree (Python 3.4) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from xml.etree.ElementTree import * From 372948b3d207000f1c8d4899f438daad29e275ae Mon Sep 17 00:00:00 2001 From: Ismail Date: Mon, 7 Mar 2016 13:08:46 +0000 Subject: [PATCH 11/11] Remove KeysView & ItemsView from py2 type hints --- stdlib/2.7/xml/etree/ElementTree.pyi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/2.7/xml/etree/ElementTree.pyi b/stdlib/2.7/xml/etree/ElementTree.pyi index bec7e9f0e..76262d4c0 100644 --- a/stdlib/2.7/xml/etree/ElementTree.pyi +++ b/stdlib/2.7/xml/etree/ElementTree.pyi @@ -2,7 +2,7 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, KeysView, ItemsView, Generator +from typing import Any, AnyStr, Union, IO, Callable, Dict, List, Tuple, Sequence, Iterator, TypeVar, Optional, Generator import io VERSION = ... # type: str @@ -38,11 +38,11 @@ class Element: def getchildren(self) -> List[Element]: ... def getiterator(self, tag: Union[str, AnyStr]=...) -> List[Element]: ... def insert(self, index: int, element: Element) -> None: ... - def items(self) -> ItemsView[AnyStr, AnyStr]: ... + def items(self) -> List[Tuple[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 keys(self) -> List[AnyStr]: ... def makeelement(self, tag: _Ss, attrib: Dict[_Ss, _Ss]) -> Element: ... def remove(self, element: Element) -> None: ... def set(self, key: AnyStr, value: AnyStr) -> None: ...