docs: 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