def get_exploration_components_from_zip(zip_file_contents):
 memfile = StringIO.StringIO()
 memfile.write(zip_file_contents)
 zf = zipfile.ZipFile(memfile, 'r')
 yaml_content = None
 assets_list = []
 for filepath in zf.namelist():
  if filepath.startswith('assets/'):
   assets_list.append('/'.join(filepath.split('/')[1:]), zf.read(filepath))
  elif (yaml_content is not None):
   raise Exception('More than one non-asset file specified for zip file')
  elif (not filepath.endswith('.yaml')):
   raise Exception(('Found invalid non-asset file %s. There should only be a single file not in assets/, and it should have a .yaml suffix.' % filepath))
  else:
   yaml_content = zf.read(filepath)
 if (yaml_content is None):
  raise Exception('No yaml file specified in zip file contents')
 return (yaml_content, assets_list)

def get_exploration_components_from_zip ( zip_file_contents ) : memfile = StringIO . StringIO ( ) memfile . write ( zip_file_contents ) zf = zipfile . ZipFile ( memfile , 'r' ) yaml_content = None assets_list = [ ] for filepath in zf . namelist ( ) : if filepath . startswith ( 'assets/' ) : assets_list . append ( '/' . join ( filepath . split ( '/' ) [ 1 : ] ) , zf . read ( filepath ) ) elif ( yaml_content is not None ) : raise Exception ( 'More than one non-asset file specified for zip file' ) elif ( not filepath . endswith ( '.yaml' ) ) : raise Exception ( ( 'Found invalid non-asset file %s. There should only be a single file not in assets/, and it should have a .yaml suffix.' % filepath ) ) else : yaml_content = zf . read ( filepath ) if ( yaml_content is None ) : raise Exception ( 'No yaml file specified in zip file contents' ) return ( yaml_content , assets_list )
gets the from the contents of an exploration zip file .