Код: Выделить всё
from lxml import etree
from typing import Union
def _get_inner_xml(element: Union[etree._Element, None]) -> Union[str, None]:
if element is None:
return None
# See https://stackoverflow.com/a/51124963
return (str(element.text or "") + "".join(etree.tostring(child, encoding="unicode") for child in element)).strip()
root = etree.fromstring('TEXT
TAIL')
innerXML = _get_inner_xml(root)
print(innerXML)
Если я напишу следующее в vscode с использованием pylance (он использует пирайт под капотом):
Код: Выделить всё
def test(element: etree._Element):
variable = _get_inner_xml(element)
Если это работает так, как задумано: есть ли возможность вручную сообщить pylance, что «всякий раз, когда эта функция получает etree._Element, она возвращает str и всякий раз, когда я передаю None, он возвращает None"?
Подробнее здесь: https://stackoverflow.com/questions/687 ... ally-infer