docs: def _parse_docstring(docstring):
      """parses docstring into its help message and params"""
      params = {}
  
      if not docstring:
          return None, params
  
      try:
          help_msg = _DOCSTRING_REGEX.search(docstring).group()
          help_msg = _strip_lines(help_msg)
      except AttributeError:
          help_msg = None
  
      for param in _DOCSTRING_PARAM_REGEX.finditer(docstring):
          param_definition = param.group(1).rsplit(' ', 1)
          if len(param_definition) == 2:
              param_type, param_name = param_definition
          else:
              param_type = None
              param_name = param_definition[0]
  
          param_help = param.group(2).strip()
          params[param_name] = param_type, _strip_lines(param_help)
      return help_msg, params