There are cases where the input variable of a function can have different forms (string, list, dictionary…). Here is a nice way to list those types within the function signature. The following code also illustrates how to handle those types within the function itself.

from typing import Union

def my_function(input_dir: Union[str, list]) -> str:
    if isinstance(input_dir, str):
        print("input_dir is a string")
    elif isinstance(input_dir, list):
        print("input_dir is a list")
    
    print(f"input_dir: {input_dir}")
    
    return "done"

Links

@thanks to Chen Zhang for introducing me this tool.