docs: def parse_docstring(docstring):
      '''
      Parse a docstring into its parts.
  
      Currently only parses dependencies, can be extended to parse whatever is
      needed.
  
      Parses into a dictionary:
          {
              'full': full docstring,
              'deps': list of dependencies (empty list if none)
          }
      '''
      # First try with regex search for :depends:
      ret = {'full': docstring}
      regex = r'([ \t]*):depends:[ \t]+- (\w+)[^\n]*\n(\1[ \t]+- (\w+)[^\n]*\n)*'
      match = re.search(regex, docstring, re.M)
      if match:
          deps = []
          regex = r'- (\w+)'
          for line in match.group(0).strip().splitlines():
              deps.append(re.search(regex, line).group(1))
          ret['deps'] = deps
          return ret
      # Try searching for a one-liner instead
      else:
          txt = 'Required python modules: '
          data = docstring.splitlines()
          dep_list = list(x for x in data if x.strip().startswith(txt))
          if not dep_list:
              ret['deps'] = []
              return ret
          deps = dep_list[0].replace(txt, '').strip().split(', ')
          ret['deps'] = deps
          return ret