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

Stevoisiak picture Stevoisiak · Feb 9, 2018 · Viewed 12k times · Source

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):
    # ...

Answer

deceze picture deceze · Feb 9, 2018

You want a type union:

from typing import Union

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