R`i d Z ddgZddlmZmZ ddlmZ ddlmZ ddl m
Z
mZmZm
Z
mZmZ ddlmZmZ dd lmZ dd
lmZmZ ddlmZmZmZ ddlmZ dd
lmZm Z m!Z! G d de" Z#de$de$dedefdZ% G d d Z&y)zLazy ZIP over HTTPHTTPRangeRequestUnsupporteddist_from_wheel_url )bisect_leftbisect_right)contextmanager)NamedTemporaryFile)AnyDict GeneratorListOptionalTuple)
BadZipFileZipFile)canonicalize_name)CONTENT_CHUNK_SIZEResponse)BaseDistributionMemoryWheelget_wheel_distribution)
PipSession)HEADERSraise_for_statusresponse_chunksc e Zd Zy)r N)__name__
__module____qualname__ /builddir/build/BUILDROOT/alt-python312-pip-23.3.1-3.el8.x86_64/opt/alt/python312/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.pyr r s r nameurlsessionreturnc t || 5 }t |j | }t |t | cddd S # 1 sw Y yxY w)a Return a distribution object from the given wheel URL.
This uses HTTP range requests to only fetch the portion of the wheel
containing metadata, just enough for the object to be constructed.
If such requests are not supported, HTTPRangeRequestUnsupported
is raised.
N)LazyZipOverHTTPr r" r r )r" r# r$ zfwheels r! r r s@
g &" BGGR( &e->t-DE
' & &s +AAc
e Zd ZdZefdedededdfdZe defd Z
e defd Zdefd
Z
d$dZe defd Zd%d
edefdZdefdZd&dededefdZdefdZd'd
ee defdZdefdZd(dZdeddfdZeded fd Zd$dZefdedede eef de!fdZ"deded ed!edee#eef ddf f
d"Z$dededdfd#Z%y))r' a File-like object mapped to a ZIP file over HTTP.
This uses HTTP range requests to lazily fetch the file's content,
which is supposed to be fed to ZipFile. If such requests are not
supported by the server, raise HTTPRangeRequestUnsupported
during initialization.
r# r$
chunk_sizer% Nc |j |t }t | |j dk( sJ |||c| _ | _ | _ t |j d | _ t | _ | j | j g | _
g | _ d|j j dd vrt! d | j# y )N)headers zContent-Lengthbytesz
Accept-Rangesnonezrange request is not supported)headr r status_code_session_url_chunk_sizeintr- _lengthr _filetruncate_left_rightgetr
_check_zip)selfr# r$ r+ r1 s r! __init__zLazyZipOverHTTP.__init__1 s ||C|13&&&5