How do I specify multiple types for a parameter using type-hints?

Question:

I have a Python function which accepts XML data as an str.

For convenience, the function also checks for xml.etree.ElementTree.Element and will automatically convert to str if necessary.

import xml.etree.ElementTree as ET

def post_xml(data: str):
    if type(data) is ET.Element:
        data = ET.tostring(data).decode()
    # ...

Is it possible to specify with type-hints that a parameter can be given as one of two types?

def post_xml(data: str or ET.Element):
    # ...
Asked By: Stevoisiak

||

Answers:

You want a type union. For Python 3.10+:

def post_xml(data: str | ET.Element):

For earlier versions:

from typing import Union

def post_xml(data: Union[str, ET.Element]):
    ...
Answered By: deceze