diff --git a/third_party/3/lxml/etree.pyi b/third_party/3/lxml/etree.pyi index 958c82a1d7a9..ec2d9989537d 100644 --- a/third_party/3/lxml/etree.pyi +++ b/third_party/3/lxml/etree.pyi @@ -17,15 +17,35 @@ _DictAnyStr = Union[Dict[str, str], Dict[bytes, bytes]] _Dict_Tuple2AnyStr_Any = Union[Dict[Tuple[str, str], Any], Tuple[bytes, bytes], Any] -class ElementChildIterator(Iterator['_Element']): +class _ElementMatchIterator(Iterator['_Element']): + def __iter__(self) -> '_ElementMatchIterator': ... + def __next__(self) -> '_Element': ... + +class ElementChildIterator(_ElementMatchIterator): def __iter__(self) -> 'ElementChildIterator': ... + +class AncestorsIterator(_ElementMatchIterator): + def __iter__(self) -> 'AncestorsIterator': ... + +class SiblingsIterator(_ElementMatchIterator): + def __iter__(self) -> 'SiblingsIterator': ... + +class ElementDepthFirstIterator(Iterator['_Element']): + def __iter__(self) -> 'ElementDepthFirstIterator': ... def __next__(self) -> '_Element': ... +class ElementTextIterator(Iterator[str]): + def __iter__(self) -> 'ElementTextIterator': ... + def __next__(self) -> str: ... + class _Element(Iterable['_Element']): + # Docs: http://lxml.de/api/lxml.etree._Element-class.html def addprevious(self, element: '_Element') -> None: ... def addnext(self, element: '_Element') -> None: ... def clear(self) -> None: ... + # Attributes def get(self, key: _AnyStr, default: Optional[_AnyStr] = ...) -> _AnyStr: ... + def set(self, key: str, value: str) -> None: ... def xpath(self, _path: _AnyStr, namespaces: Optional[_DictAnyStr] = ..., extensions: Any = ..., smart_strings: bool = ..., **_variables: Any) -> Any: ... # indeed returns a Union[bool, float, _AnyStr, List[Union[ElementBase, _AnyStr, Tuple[]]]]: ... # http://lxml.de/xpathxslt.html#xpath-return-values @@ -33,7 +53,31 @@ class _Element(Iterable['_Element']): text = ... # type: _AnyStr tag = ... # type: str def append(self, element: '_Element') -> '_Element': ... + + # Iterators def __iter__(self) -> ElementChildIterator: ... + def iter(self, + tag: Optional[Union[str, _Element]]=..., + *tags: Any) -> ElementDepthFirstIterator: ... + def iterancestors(self, + tag: Optional[Union[str, _Element]]=..., + *tags: Any) -> AncestorsIterator: ... + def iterchildren(self, + tag: Optional[Union[str, _Element]]=..., + reversed=False, + *tags: Any) -> ElementChildIterator: ... + def iterdescendants(self, + tag: Optional[Union[str, _Element]]=..., + *tags: Any) -> ElementDepthFirstIterator: ... + def itersiblings(self, + tag: Optional[Union[str, _Element]]=..., + preceding=False, + *tags: Any) -> SiblingsIterator: ... + def itertext(self, + tag: Optional[Union[str, _Element]]=..., + with_tail=True, + *tags: Any) -> ElementTextIterator: ... + class ElementBase(_Element): ...