BQmL@dZddlmZddgZddlmZmZddlmZddl m Z ddl m Z dd l mZdd lmZmZdd lmZdd lmZmZdd lmZmZmZddlmZddlmZmZm Z Gdde!Z"ddZ#GddZ$dS)zLazy ZIP over HTTP) annotationsHTTPRangeRequestUnsupporteddist_from_wheel_url) bisect_left bisect_right) Generator)contextmanager)NamedTemporaryFile)Any) BadZipFileZipFile)NormalizedName)CONTENT_CHUNK_SIZEResponse)BaseDistribution MemoryWheelget_wheel_distribution) PipSession)HEADERSraise_for_statusresponse_chunksceZdZdS)rN)__name__ __module__ __qualname__r/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/pip/_internal/network/lazy_wheel.pyrrsDrnamerurlstrsessionrreturnrct||5}t|j|}t||cdddS#1swxYwYdS)aReturn 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)LazyZipOverHTTPrrr)rr r"zfwheels rrrs g & &3"BGR((&eT22 333333333333333333s%AA AceZdZdZefd1d Zed2d Zed2d Zd3dZ d4dZ ed3dZ d5d6dZ d3dZ d7d8dZd9dZd:d;dZd3dZdd$Zd4d%Zefd?d+Zd@d/ZdAd0ZdS)Br%aFile-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!r"r chunk_sizeintr#Nonec||t}t||jdksJ|||c|_|_|_t|jd|_ t|_ | |j g|_ g|_d|jddvrt!d|dS)N)headerszContent-Lengthbytesz Accept-Rangesnonezrange request is not supported)headrr status_code_session_url _chunk_sizer*r-_lengthr _filetruncate_left_rightgetr _check_zip)selfr r"r)r1s r__init__zLazyZipOverHTTP.__init__6s||C|113&&&&5= 0; * 1: Current position - pos may be negative; * 2: End of stream - pos usually negative. )r7seek)r=r[r\s rr^zLazyZipOverHTTP.seekoszvv...rc4|jS)zReturn the current position.)r7rQrAs rrQzLazyZipOverHTTP.tellysz   rN int | Nonec6|j|S)zResize the stream to the given size in bytes. If size is unspecified resize to the current position. The current stream position isn't changed. Return the new file size. )r7r8)r=rMs rr8zLazyZipOverHTTP.truncate}sz""4(((rcdS)z Return False.FrrAs rwritablezLazyZipOverHTTP.writablesurc8|j|SN)r7 __enter__rAs rrfzLazyZipOverHTTP.__enter__s  rexcr c$|jj|dSre)r7__exit__)r=rgs rrizLazyZipOverHTTP.__exit__s S!!!!rGenerator[None, None, None]c#K|} dV||dS#||wxYw)zyReturn a context manager keeping the position. At the end of the block, seek back to original position. N)rQr^)r=poss r_stayzLazyZipOverHTTP._staysJ iikk  EEE IIcNNNNNDIIcNNNNs 3A cJ|jdz }ttd||jD]t}||||5 t | ddddS#t$rYnwxYw dddn #1swxYwYudS)z1Check and download until the file is a valid ZIP.rOrN)r6reversedranger5rSrmr r )r=endrVs rr<zLazyZipOverHTTP._check_zipslQeAsD,<==>>  E NN5# & & &  DMMM          "D                  s6BA:+B: BBBBB B rVrq base_headersdict[str, str]rc|}d|d||d<d|d<|j|j|dS)z:Return HTTP response to a range request from start to end.zbytes=-Rangezno-cachez Cache-ControlT)r-stream)copyr3r;r4)r=rVrqrrr-s r_stream_responsez LazyZipOverHTTP._stream_responsesX##%%1E11C11#- }  GD IIIrleftright&Generator[tuple[int, int], None, None]c#XK|j|||j||}}t|g|ddzx}}t|g|ddz}t ||D]\}} ||kr ||dz fV| dz}||kr||fV|g|gc|j||<|j||<dS)a/Return a generator of intervals to be fetched. Args: start (int): Start of needed interval end (int): End of needed interval left (int): Index of first overlapping downloaded data right (int): Index after last overlapping downloaded data NrOrL)r9r:rRrPzip) r=rVrqrzr{lslicersliceijks r_mergezLazyZipOverHTTP._mergesDJ/T%Z1H&!*,---E3%&+%&&''  DAq1uuQhAAA 88S&LLL;@'C57 4: DJ 7 7 7rc|5t|j|}t|j|}|||||D]v\}}|||}|||t||j D]}|j |w ddddS#1swxYwYdS)z-Download bytes from start to end inclusively.N) rmrr:rr9rryrr^rr5r7write)r=rVrqrzr{responsechunks rrSzLazyZipOverHTTP._downloads3 ZZ\\ , ,t{E22D S11E"kk%dEBB , , s00<<))+++ %   ,Xt7GHH,,EJ$$U++++,  , , , , , , , , , , , , , , , , , , ,sB:CC!$C!)r r!r"rr)r*r#r+)r#r!)r#rD)r#r+)rL)rMr*r#r/)r)r[r*r\r*r#r*)r#r*re)rMr`r#r*)r#r%)rgr r#r+)r#rj)rVr*rqr*rrrsr#r) rVr*rqr*rzr*r{r*r#r|)rVr*rqr*r#r+)rrr__doc__rr>propertyrBrrFrIrKrTrZr^rQr8rcrfrir rmr<rryrrSrrrr%r%-s@R XX!!!X! % % % % %/////!!!!)))))""""   ^      DKJJJJJIIII, , , , , , ,rr%N)rrr r!r"rr#r)%r __future__r__all__bisectrrcollections.abcr contextlibr tempfiler typingr zipfiler r pip._vendor.packaging.utilsrpip._vendor.requests.modelsrrpip._internal.metadatarrrpip._internal.network.sessionrpip._internal.network.utilsrrr Exceptionrrr%rrrrs"""""" (*? @,,,,,,,,%%%%%%%%%%%%''''''''''''''666666DDDDDDDDXXXXXXXXXX444444RRRRRRRRRR     )   3333&j,j,j,j,j,j,j,j,j,j,r