@memoize_default(None, evaluator_is_first_arg=True)
def follow_param(evaluator, param):
 def eval_docstring(docstr):
  param_str = str(param.name)
  return set([p for string in _search_param_in_docstr(docstr, param_str) for p in _evaluate_for_statement_string(evaluator, string, module)])
 func = param.parent_function
 module = param.get_parent_until()
 docstr = func.raw_doc
 types = eval_docstring(docstr)
 if (func.name.value == '__init__'):
  cls = func.get_parent_until(Class)
  if (cls.type == 'classdef'):
   types |= eval_docstring(cls.raw_doc)
 return types

@ memoize_default ( None , evaluator_is_first_arg = True ) def follow_param ( evaluator , param ) : def eval_docstring ( docstr ) : param_str = str ( param . name ) return set ( [ p for string in _search_param_in_docstr ( docstr , param_str ) for p in _evaluate_for_statement_string ( evaluator , string , module ) ] ) func = param . parent_function module = param . get_parent_until ( ) docstr = func . raw_doc types = eval_docstring ( docstr ) if ( func . name . value == '__init__' ) : cls = func . get_parent_until ( Class ) if ( cls . type == 'classdef' ) : types |= eval_docstring ( cls . raw_doc ) return types
determines a set of potential types for param using docstring hints :type evaluator: jedi .