Skip to content

return type for lxml.etree.fromstring should be Optional (?) #63

@DMRobertson

Description

@DMRobertson

At least with lxml 4.8.0, I see the following:

$ python
Python 3.10.4 (main, Mar 25 2022, 00:00:00) [GCC 11.2.1 20220127 (Red Hat 11.2.1-9)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml.etree as etree
>>> parser = etree.HTMLParser(recover=True, encoding="utf-8")
>>> tree = etree.fromstring(b"", parser)
>>> tree
>>> tree is None
True

But the type annotation says we'll always return an _Element:

def fromstring(
text: _AnyStr, parser: XMLParser = ..., *, base_url: _AnyStr = ...
) -> _Element: ...

Aside: I'm passing an HTMLParser here instead of an XMLParser. The type stub for fromstring doesn't allow that either, but again I'm not sure if that's a mistake in the annotations.

For context, I came across this whilst trying to use the stubs to typecheck this snippet of Synapse.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions