:param text:               str of the text to parse, by default 
                               uses calling function doc
    :param is_return_included: bool if True return will be return as well
    :return:                   dict of args and variable types

def parse_arg_types(text=None, is_return_included=False):
    """
    :param text:               str of the text to parse, by default 
                               uses calling function doc
    :param is_return_included: bool if True return will be return as well
    :return:                   dict of args and variable types
    """
    text = text or function_doc(2)
    if is_return_included:
        text = text.replace(':return:', ':param return:')
    ret = {}

    def evl(text_):
        try:
            return eval(text_)
        except Exception as e:
            return text_

    if ':param' in text:
        for param in text.split(':param ')[1:]:
            name, desc = param.split(':', 1)
            name = name.strip()
            if desc.strip().startswith('list of '):
                ret[name] = (list, evl(desc.split()[2].replace('str', STR)))
            elif desc.strip().startswith('str timestamp'):
                ret[name] = datetime
            else:
                ret[name] = evl(desc.split(None, 1)[0].replace('str', STR))
    return ret