Doa-doa's picture
Upload folder using huggingface_hub
72268ee
"""
Exception-compatible adapter from conda_package_streaming.
"""
from __future__ import annotations
from tarfile import TarError
from zipfile import BadZipFile
from conda_package_streaming.extract import exceptions as cps_exceptions
from conda_package_streaming.extract import extract_stream, package_streaming
from . import exceptions
def _extract(filename: str, dest_dir: str, components: list[str]):
"""
Extract .conda or .tar.bz2 package to dest_dir.
If it's a conda package, components may be ["pkg", "info"]
If it's a .tar.bz2 package, components must equal ["pkg"]
Internal. Skip directly to conda-package-streaming if you don't need
exception compatibility.
"""
if str(filename).endswith(".tar.bz2"):
assert components == ["pkg"]
try:
with open(filename, "rb") as fileobj:
for component in components:
# will parse zipfile twice
stream = package_streaming.stream_conda_component(
filename, fileobj, component=component
)
extract_stream(stream, dest_dir)
except cps_exceptions.CaseInsensitiveFileSystemError as e:
raise exceptions.CaseInsensitiveFileSystemError(filename, dest_dir) from e
except (OSError, TarError, BadZipFile) as e:
raise exceptions.InvalidArchiveError(filename, f"failed with error: {str(e)}") from e