import zipfile import os import shutil def repack_wheel(wheel_path: str, output_dir: str) -> str: basename = os.path.basename(wheel_path) name_parts = basename.split("-") if len(name_parts) >= 4: wheel_name = "-".join(name_parts[:-3]) version = name_parts[-3] pure_tag = f"{name_parts[-2]}-{name_parts[-1]}" else: wheel_name = name_parts[0] version = "0.0.0" pure_tag = "none-any" harmony_tag = f"{wheel_name}-{version}-py3-none-harmonyos_arm64.whl" output_path = os.path.join(output_dir, harmony_tag) os.makedirs(output_dir, exist_ok=True) with zipfile.ZipFile(wheel_path, "r") as zin: with zipfile.ZipFile(output_path, "w", zipfile.ZIP_DEFLATED) as zout: for item in zin.infolist(): data = zin.read(item.filename) zout.writestr(item, data) return output_path