code: def unpack_zipfile(filename, extract_dir, progress_filter=default_filter):
      
  
      if not zipfile.is_zipfile(filename):
          raise UnrecognizedFormat("%s is not a zip file" % (filename,))
  
      with zipfile.ZipFile(filename) as z:
          for info in z.infolist():
              name = info.filename
  
              # don't extract absolute paths or ones with .. in them
              if name.startswith('/') or '..' in name.split('/'):
                  continue
  
              target = os.path.join(extract_dir, *name.split('/'))
              target = progress_filter(name, target)
              if not target:
                  continue
              if name.endswith('/'):
                  # directory
                  ensure_directory(target)
              else:
                  # file
                  ensure_directory(target)
                  data = z.read(info.filename)
                  with open(target, 'wb') as f:
                      f.write(data)
              unix_attributes = info.external_attr >> 16
              if unix_attributes:
                  os.chmod(target, unix_attributes)
docs: Unpack zip `filename` to `extract_dir`
  
      Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined
      by ``zipfile.is_zipfile()``).  See ``unpack_archive()`` for an explanation
      of the `progress_filter` argument.