in knack/introspection.py [0:0]
def option_descriptions(operation):
""" Extract parameter help from docstring of the command. """
lines = inspect.getdoc(operation)
if not lines:
return {}
param_breaks = ["'''", '"""', ':param', ':type', ':return', ':rtype']
option_descs = {}
lines = lines.splitlines()
index = 0
while index < len(lines):
l = lines[index]
regex = r'\s*(:param)\s+(.+?)\s*:(.*)'
match = re.search(regex, l)
if not match:
index += 1
continue
# 'arg name' portion might have type info, we don't need it
arg_name = str.split(match.group(2))[-1]
arg_desc = match.group(3).strip()
# look for more descriptions on subsequent lines
index += 1
while index < len(lines):
temp = lines[index].strip()
if any(temp.startswith(x) for x in param_breaks):
break
if temp:
arg_desc += (' ' + temp)
index += 1
option_descs[arg_name] = arg_desc
return option_descs