def check_flow_information(evaluator, flow, search_name, pos):
 if (not settings.dynamic_flow_information):
  return None
 result = set()
 if flow.is_scope():
  try:
   names = reversed(flow.names_dict[search_name.value])
  except (KeyError, AttributeError):
   names = []
  for name in names:
   ass = name.get_parent_until(tree.AssertStmt)
   if (isinstance(ass, tree.AssertStmt) and (pos is not None) and (ass.start_pos < pos)):
    result = _check_isinstance_type(evaluator, ass.assertion(), search_name)
    if result:
     break
 if isinstance(flow, (tree.IfStmt, tree.WhileStmt)):
  potential_ifs = [c for c in flow.children[1::4] if (c != ':')]
  for if_test in reversed(potential_ifs):
   if (search_name.start_pos > if_test.end_pos):
    return _check_isinstance_type(evaluator, if_test, search_name)
 return result

def check_flow_information ( evaluator , flow , search_name , pos ) : if ( not settings . dynamic_flow_information ) : return None result = set ( ) if flow . is_scope ( ) : try : names = reversed ( flow . names_dict [ search_name . value ] ) except ( KeyError , AttributeError ) : names = [ ] for name in names : ass = name . get_parent_until ( tree . AssertStmt ) if ( isinstance ( ass , tree . AssertStmt ) and ( pos is not None ) and ( ass . start_pos < pos ) ) : result = _check_isinstance_type ( evaluator , ass . assertion ( ) , search_name ) if result : break if isinstance ( flow , ( tree . IfStmt , tree . WhileStmt ) ) : potential_ifs = [ c for c in flow . children [ 1 : : 4 ] if ( c != ':' ) ] for if_test in reversed ( potential_ifs ) : if ( search_name . start_pos > if_test . end_pos ) : return _check_isinstance_type ( evaluator , if_test , search_name ) return result
try to find out the type of a variable just with the information that is given by the flows: e .