| Viewing file:  unpack.py (1021 B)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
from __future__ import annotations
 from pathlib import Path
 
 from ..wheelfile import WheelFile
 
 
 def unpack(path: str, dest: str = ".") -> None:
 """Unpack a wheel.
 
 Wheel content will be unpacked to {dest}/{name}-{ver}, where {name}
 is the package name and {ver} its version.
 
 :param path: The path to the wheel.
 :param dest: Destination directory (default to current directory).
 """
 with WheelFile(path) as wf:
 namever = wf.parsed_filename.group("namever")
 destination = Path(dest) / namever
 print(f"Unpacking to: {destination}...", end="", flush=True)
 for zinfo in wf.filelist:
 wf.extract(zinfo, destination)
 
 # Set permissions to the same values as they were set in the archive
 # We have to do this manually due to
 # https://github.com/python/cpython/issues/59999
 permissions = zinfo.external_attr >> 16 & 0o777
 destination.joinpath(zinfo.filename).chmod(permissions)
 
 print("OK")
 
 |