code: def unpack_rawr_zip_payload(table_sources, payload):
      
      # the io we get from S3 is streaming, so we can't seek on it, but zipfile
      # seems to require that. so we buffer it all in memory. RAWR tiles are
      # generally up to around 100MB in size, which should be safe to store in
      # RAM.
      from tilequeue.query.common import Table
      from io import BytesIO
  
      zfh = zipfile.ZipFile(BytesIO(payload), 'r')
  
      def get_table(table_name):
          # need to extract the whole compressed file from zip reader, as it
          # doesn't support .tell() on the filelike, which gzip requires.
          data = zfh.open(table_name, 'r').read()
          unpacker = Unpacker(file_like=BytesIO(data))
          source = table_sources[table_name]
          return Table(source, unpacker)
  
      return get_table
docs: unpack a zipfile and turn it into a callable "tables" object.