Skip to content

Commit 0a9b609

Browse files
authored
Fix return type of _Element.iter* methods (GH-70)
These methods return `Iterator` objects, not just `Iterable`s.
1 parent f71530a commit 0a9b609

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

lxml-stubs/etree.pyi

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,14 @@ class _Element(Iterable["_Element"], Sized):
166166
def items(self) -> Sequence[Tuple[_AnyStr, _AnyStr]]: ...
167167
def iter(
168168
self, tag: Optional[_TagSelector] = ..., *tags: _TagSelector
169-
) -> Iterable[_Element]: ...
169+
) -> Iterator[_Element]: ...
170170
iterancestors = iter
171171
def iterchildren(
172172
self,
173173
tag: Optional[_TagSelector] = ...,
174174
reversed: bool = False,
175175
*tags: _TagSelector,
176-
) -> Iterable[_Element]: ...
176+
) -> Iterator[_Element]: ...
177177
iterdescendants = iter
178178
def iterfind(
179179
self, path: str, namespaces: Optional[_NSMapArg] = ...
@@ -183,13 +183,13 @@ class _Element(Iterable["_Element"], Sized):
183183
tag: Optional[_TagSelector] = ...,
184184
preceding: bool = False,
185185
*tags: _TagSelector,
186-
) -> Iterable[_Element]: ...
186+
) -> Iterator[_Element]: ...
187187
def itertext(
188188
self,
189189
tag: Optional[_TagSelector] = ...,
190190
with_tail: bool = False,
191191
*tags: _TagSelector,
192-
) -> Iterable[_AnyStr]: ...
192+
) -> Iterator[_AnyStr]: ...
193193
def keys(self) -> Sequence[_AnyStr]: ...
194194
def makeelement(
195195
self,
@@ -242,7 +242,7 @@ class _ElementTree:
242242
def getroot(self) -> _Element: ...
243243
def iter(
244244
self, tag: Optional[_TagSelector] = ..., *tags: _TagSelector
245-
) -> Iterable[_Element]: ...
245+
) -> Iterator[_Element]: ...
246246
def iterfind(
247247
self, path: str, namespaces: Optional[_NSMapArg] = ...
248248
) -> Iterator["_Element"]: ...

test-data/test-etree.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
main: |
3535
from lxml import etree
3636
element = etree.Element("foo")
37-
reveal_type(element.iterchildren) # N: Revealed type is "def (tag: Union[builtins.str, builtins.bytes, lxml.etree.QName, Any, None] =, reversed: builtins.bool =, *tags: Union[builtins.str, builtins.bytes, lxml.etree.QName, Any]) -> typing.Iterable[lxml.etree._Element]"
37+
reveal_type(element.iterchildren) # N: Revealed type is "def (tag: Union[builtins.str, builtins.bytes, lxml.etree.QName, Any, None] =, reversed: builtins.bool =, *tags: Union[builtins.str, builtins.bytes, lxml.etree.QName, Any]) -> typing.Iterator[lxml.etree._Element]"
3838
result = element.iterchildren("my-attr")
39-
reveal_type(result) # N: Revealed type is "typing.Iterable[lxml.etree._Element]"
39+
reveal_type(result) # N: Revealed type is "typing.Iterator[lxml.etree._Element]"
4040
4141
- case: etree_xmlparser_makeelement
4242
disable_cache: true

0 commit comments

Comments
 (0)