¿Cómo documento: rtype: para una función que devuelve múltiples tipos de datos posibles? [duplicar

Esta pregunta ya tiene una respuesta aquí:

Cómo especificar múltiples tipos de retorno usando sugerencias de tipo 2 respuestas

En una cadena de documentos de Python, ¿cómo se debe documentar el:rtype: para una función que puede devolver múltiples tipos de datos posibles?

Por ejemplo, si una función puede devolverdefaultdict Odict Olist, según los parámetros de las funciones, ¿cómo documenta esto?

Code ejemplo:

from collections import defaultdict

def read_state(state_file, state_file_type='defaultdict'):
    """Deserialize state file or create empty state and return it.

    :param state_file: The path and file name of state file to read.
    :type state_file: str
    :param state_file_type: Data type in which state is stored.
    :type state_file_type: str
    :return: Current or new empty state.
    :rtype: ????? 
    """
    if os.path.exists(state_file):
        with open(state_file) as conf_fo:
            state = json.load(conf_fo)
    elif state_file_type == 'defaultdict':
        state = defaultdict(lambda: defaultdict(list))
    elif state_file_type == 'dict':
        state = {}
    elif state_file_type == 'list':
        state = []
    else:
        raise TypeError("State file type not defined.")
    return state

Respuestas a la pregunta(2)

Su respuesta a la pregunta