def create_deep_key(*path_info):
 validated_path_info = []
 for level_info in path_info:
  if (len(level_info) == 3):
   key_is_id = level_info[2]
  elif (len(level_info) == 2):
   key_is_id = False
  else:
   raise bulkloader_errors.InvalidConfiguration(('Each list in create_deep_key must specify exactly 2 or 3 parameters, (kind, property, is_id=False). You specified: %s' % repr(path_info)))
  kind_name = level_info[0]
  property_name = level_info[1]
  validated_path_info.append((kind_name, property_name, key_is_id))
 def create_deep_key_lambda(value, bulkload_state):
  path = []
  for (kind_name, property_name, key_is_id) in validated_path_info:
   if (property_name is CURRENT_PROPERTY):
    name_or_id = value
   else:
    name_or_id = bulkload_state.current_dictionary[property_name]
   if key_is_id:
    name_or_id = int(name_or_id)
   path += [kind_name, name_or_id]
  return datastore.Key.from_path(*path)
 return create_deep_key_lambda

def create_deep_key ( * path_info ) : validated_path_info = [ ] for level_info in path_info : if ( len ( level_info ) == 3 ) : key_is_id = level_info [ 2 ] elif ( len ( level_info ) == 2 ) : key_is_id = False else : raise bulkloader_errors . InvalidConfiguration ( ( 'Each list in create_deep_key must specify exactly 2 or 3 parameters, (kind, property, is_id=False). You specified: %s' % repr ( path_info ) ) ) kind_name = level_info [ 0 ] property_name = level_info [ 1 ] validated_path_info . append ( ( kind_name , property_name , key_is_id ) ) def create_deep_key_lambda ( value , bulkload_state ) : path = [ ] for ( kind_name , property_name , key_is_id ) in validated_path_info : if ( property_name is CURRENT_PROPERTY ) : name_or_id = value else : name_or_id = bulkload_state . current_dictionary [ property_name ] if key_is_id : name_or_id = int ( name_or_id ) path += [ kind_name , name_or_id ] return datastore . Key . from_path ( * path ) return create_deep_key_lambda
a method to make multi-level key objects .