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")