def build_identifiers(identifiers, parent, params=None, raw_response=None):
 results = []
 for identifier in identifiers:
  source = identifier.source
  target = identifier.target
  if (source == 'response'):
   value = jmespath.search(identifier.path, raw_response)
  elif (source == 'requestParameter'):
   value = jmespath.search(identifier.path, params)
  elif (source == 'identifier'):
   value = getattr(parent, xform_name(identifier.name))
  elif (source == 'data'):
   value = get_data_member(parent, identifier.path)
  elif (source == 'input'):
   continue
  else:
   raise NotImplementedError('Unsupported source type: {0}'.format(source))
  results.append((xform_name(target), value))
 return results

def build_identifiers ( identifiers , parent , params = None , raw_response = None ) : results = [ ] for identifier in identifiers : source = identifier . source target = identifier . target if ( source == 'response' ) : value = jmespath . search ( identifier . path , raw_response ) elif ( source == 'requestParameter' ) : value = jmespath . search ( identifier . path , params ) elif ( source == 'identifier' ) : value = getattr ( parent , xform_name ( identifier . name ) ) elif ( source == 'data' ) : value = get_data_member ( parent , identifier . path ) elif ( source == 'input' ) : continue else : raise NotImplementedError ( 'Unsupported source type: {0}' . format ( source ) ) results . append ( ( xform_name ( target ) , value ) ) return results
builds a mapping of identifier names to values based on the identifier source location .