§ ]<ˆjÆãó—dZddgZddlmZmZddlmZddlmZddl m Z m Z m Z m Z mZmZddlmZmZdd lmZdd lmZmZdd lmZmZmZdd lmZdd lmZm Z m!Z!Gd„de"¦«Z#de$de$dedefd„Z%Gd„d¦«Z&dS)zLazy ZIP over HTTPÚHTTPRangeRequestUnsupportedÚdist_from_wheel_urlé)Ú bisect_leftÚ bisect_right)Úcontextmanager)ÚNamedTemporaryFile)ÚAnyÚDictÚ GeneratorÚListÚOptionalÚTuple)Ú BadZipFileÚZipFile)Úcanonicalize_name)ÚCONTENT_CHUNK_SIZEÚResponse)ÚBaseDistributionÚ MemoryWheelÚget_wheel_distribution)Ú PipSession)ÚHEADERSÚraise_for_statusÚresponse_chunkscó—eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©óúr/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/pip/_internal/network/lazy_wheel.pyrrs€€€€€Ø€Dr ÚnameÚurlÚsessionÚreturncóº—t||¦«5}t|j|¦«}t|t |¦«¦«cddd¦«S#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)ÚLazyZipOverHTTPrr"rr)r"r#r$ÚzfÚwheels r!rrs³€õ ˜˜gÑ &Ô &ðF¨"õ˜BœG RÑ(Ô(ˆõ& eÕ->¸tÑ-DÔ-DÑEÔEð FðFðFðFñFôFðFðFðFðFðFðFøøøðFðFðFðFðFðFs‘2AÁAÁAc óÆ—eZdZdZefdedededdfd„Ze defd„¦«Z e defd „¦«Z de fd „Z d&d „Ze de fd „¦«Zd'dedefd„Zde fd„Zd(dededefd„Zdefd„Zd)deedefd„Zde fd„Zd*d„Zdeddfd„Zededfd„¦«Zd&d„Zefdeded e eefde!fd!„Z"deded"ed#edee#eefddff d$„Z$dededdfd%„Z%dS)+r'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$Ú chunk_sizer%NcóÖ—| |t¬¦«}t|¦«|jdksJ‚|||c|_|_|_t|jd¦«|_ t¦«|_ |  |j ¦«g|_ g|_d|j dd¦«vrt!d¦«‚| ¦«dS)N)ÚheaderséÈzContent-LengthÚbytesz Accept-RangesÚnonezrange request is not supported)ÚheadrrÚ status_codeÚ_sessionÚ_urlÚ _chunk_sizeÚintr-Ú_lengthrÚ_fileÚtruncateÚ_leftÚ_rightÚgetrÚ _check_zip)Úselfr#r$r+r1s r!Ú__init__zLazyZipOverHTTP.__init__1sÚ€ð�|Š|˜C­ˆ|Ñ1Ô1ˆÝ˜ÑÔÐØÔ 3Ò&Ð&Ð&Ð&Ø5<¸cÀ:Ð2ˆŒ �t”y $Ô"2ݘ4œ<Ð(8Ô9Ñ:Ô:ˆŒ Ý'Ñ)Ô)ˆŒ Ø � Š �d”lÑ#Ô#Ð#Ø "ˆŒ Ø!#ˆŒ Ø ˜$œ,×*Ò*¨?¸FÑCÔCÐ CÐ CÝ-Ð.NÑOÔOÐ OØ �ŠÑÔÐÐÐr có—dS)z!Opening mode, which is always rb.Úrbr©r>s r!ÚmodezLazyZipOverHTTP.modeAs €ðˆtr có—|jjS)zPath to the underlying file.)r8r"rBs r!r"zLazyZipOverHTTP.nameFs€ðŒzŒÐr có—dS)z9Return whether random access is supported, which is True.TrrBs r!ÚseekablezLazyZipOverHTTP.seekableKó€àˆtr có8—|j ¦«dS)zClose the file.N)r8ÚcloserBs r!rIzLazyZipOverHTTP.closeOs€à Œ ×ÒÑÔÐÐÐr có—|jjS)zWhether the file is closed.)r8ÚclosedrBs r!rKzLazyZipOverHTTP.closedSs€ðŒzÔ Ð r éÿÿÿÿÚsizecó$—t||j¦«}| ¦«|j}}|dkr|nt ||z|¦«}td||z ¦«}| ||dz ¦«|j |¦«S)zäRead up to size bytes from the object and return them. As a convenience, if size is unspecified or -1, all bytes until EOF are returned. Fewer than size bytes may be returned if EOF is reached. ré)Úmaxr5Útellr7ÚminÚ _downloadr8Úread)r>rMÚ download_sizeÚstartÚlengthÚstops r!rTzLazyZipOverHTTP.readXs‰€õ˜D $Ô"2Ñ3Ô3ˆ ØŸ š ™ œ  T¤\ˆvˆØ š˜ˆvˆv¥s¨5°=Ñ+@À&Ñ'IÔ'IˆÝ�A�t˜mÑ+Ñ,Ô,ˆØ �Š�u˜d Q™hÑ'Ô'Ð'ØŒz�Š˜tÑ$Ô$Ð$r có—dS)z3Return whether the file is readable, which is True.TrrBs r!ÚreadablezLazyZipOverHTTP.readablefrGr rÚoffsetÚwhencecó8—|j ||¦«S)a-Change stream position and return the new absolute position. Seek to offset relative position indicated by whence: * 0: Start of stream (the default). pos should be >= 0; * 1: Current position - pos may be negative; * 2: End of stream - pos usually negative. )r8Úseek)r>r[r\s r!r^zLazyZipOverHTTP.seekjs€ðŒz�Š˜v vÑ.Ô.Ð.r có4—|j ¦«S)zReturn the current position.)r8rQrBs r!rQzLazyZipOverHTTP.tellts€àŒz�ŠÑ Ô Ð r có6—|j |¦«S)zÌResize 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. )r8r9)r>rMs r!r9zLazyZipOverHTTP.truncatexs€ðŒz×"Ò" 4Ñ(Ô(Ð(r có—dS)z Return False.FrrBs r!ÚwritablezLazyZipOverHTTP.writable‚s€àˆur có8—|j ¦«|S©N)r8Ú __enter__rBs r!rezLazyZipOverHTTP.__enter__†s€Ø Œ ×ÒÑÔÐØˆ r Úexccó$—|jj|ŽdSrd)r8Ú__exit__)r>rfs r!rhzLazyZipOverHTTP.__exit__Šs€ØˆŒ Ô˜SÐ!Ð!Ð!Ð!r )NNNc#óš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._stay�sJèè€ð �iŠi‰kŒkˆð Ø ˆEˆEˆEà �IŠI�c‰NŒNˆNˆNˆNøˆD�IŠI�c‰NŒNˆNˆNøøøs ˜3³A cóJ—|jdz }ttd||j¦«¦«D]t}| ||¦«| ¦«5 t |¦« ddd¦«dS#t$rYnwxYw ddd¦«n #1swxYwYŒudS)z1Check and download until the file is a valid ZIP.rOrN)r7ÚreversedÚranger5rSrkrr)r>ÚendrVs r!r=zLazyZipOverHTTP._check_zip™s€àŒl˜QшÝ�e A s¨DÔ,<Ñ=Ô=Ñ>Ô>ð ð ˆEØ �NŠN˜5 #Ñ &Ô &Ð &Ø—’‘”ð ð ðõ˜D‘M”M�Mðð ð ð ñ ô ð ð ð ð øõ "ðððØ�DðøøøØð  ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð ð s6ÁBÁA:Á+BÁ: BÂBÂBÂBÂB ÂB rVroÚ base_headerscóŽ—| ¦«}d|›d|›�|d<d|d<|j |j|d¬¦«S)z:Return HTTP response to a range request from start to end.zbytes=ú-ÚRangezno-cachez Cache-ControlT)r-Ústream)Úcopyr3r<r4)r>rVrorpr-s r!Ú_stream_responsez LazyZipOverHTTP._stream_response¨sX€ð×#Ò#Ñ%Ô%ˆØ1 EÐ1Ð1¨CÐ1Ð1ˆ�Ñà#-ˆ�Ñ ØŒ}× Ò  ¤°GÀDÐ ÑIÔIÐIr ÚleftÚrightc#óXK—|j||…|j||…}}t|g|dd…z¦«x}}t|g|dd…z¦«}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)r:r;rRrPÚzip) r>rVrorwrxÚlsliceÚrsliceÚiÚjÚks r!Ú_mergezLazyZipOverHTTP._merge²sèèè€ðœ D¨ JÔ/°´¸TÀ%¸ZÔ1H�ˆÝ˜˜ &¨¨!¨¤*Ñ,Ñ-Ô-Ð-ˆˆEÝ�3�%˜&   œ+Ñ%Ñ&Ô&ˆÝ˜ Ñ'Ô'ð ð ‰DˆAˆqØ�1Šuˆuؘ˜Q™�h���Ø�A‘ˆAˆAØ �Š8ˆ8Ø�S�&ˆLˆLˆLØ;@¸'ÀCÀ5Ð7ˆŒ �4˜�:Ñ ¤ ¨D°¨JÑ 7Ð 7Ð 7r cóÔ—| ¦«5t|j|¦«}t|j|¦«}| ||||¦«D]v\}}| ||¦«}| ¦«| |¦«t||j ¦«D]}|j   |¦«ŒŒw ddd¦«dS#1swxYwYdS)z-Download bytes from start to end inclusively.N) rkrr;rr:r€rvrr^rr5r8Úwrite)r>rVrorwrxÚresponseÚchunks r!rSzLazyZipOverHTTP._downloadÈs3€à �ZŠZ‰\Œ\ð ,ð ,ݘtœ{¨EÑ2Ô2ˆDÝ  ¤¨SÑ1Ô1ˆEØ"Ÿkšk¨%°°d¸EÑBÔBð ,ð ,‘ ��sØ×0Ò0°¸Ñ<Ô<�Ø×)Ò)Ñ+Ô+Ð+Ø— ’ ˜%Ñ Ô Ð Ý,¨X°tÔ7GÑHÔHð,ð,�EØ”J×$Ò$ UÑ+Ô+Ð+Ð+ð,ð  ,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s•B:CÃC!Ã$C!)r%N)rL)rrd)r%r')&rrrÚ__doc__rÚstrrr6r?ÚpropertyrCr"ÚboolrFrIrKr/rTrZr^rQr r9rbrer rhrr rkr=rr rrvrr€rSrr r!r'r'(s€€€€€ððð@RððØðØ!+ðØ9<ðà ððððð ð�cðððñ„Xððð�cðððñ„Xðð˜$ðððððððððð!˜ð!ð!ð!ñ„Xð!ð %ð %˜ð % eð %ð %ð %ð %ð˜$ððððð/ð/˜3ð/¨ð/°Cð/ð/ð/ð/ð!�cð!ð!ð!ð!ð)ð)˜X cœ]ð)°cð)ð)ð)ð)ð˜$ððððððððð"˜Sð" Tð"ð"ð"ð"ðð �yÐ!1Ô2ð ð ð ñ„^ð ð ð ð ð ð DKðJðJØðJØ"ðJØ26°s¸C°x´.ðJà ðJðJðJðJðIØðIØ"ðIØ*-ðIØ69ðIà �5˜˜c˜”? D¨$Ð.Ô /ðIðIðIðIð, ,˜sð ,¨ð ,°ð ,ð ,ð ,ð ,ð ,ð ,r r'N)'r…Ú__all__ÚbisectrrÚ contextlibrÚtempfilerÚtypingr r r r r rÚzipfilerrÚpip._vendor.packaging.utilsrÚpip._vendor.requests.modelsrrÚpip._internal.metadatarrrÚpip._internal.network.sessionrÚpip._internal.network.utilsrrrÚ Exceptionrr†rr'rr r!úr•s±ðØÐà (Ð*?Ð @€à,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø%Ð%Ð%Ð%Ð%Ð%Ø'Ð'Ð'Ð'Ð'Ð'Ø>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø'Ð'Ð'Ð'Ð'Ð'Ð'Ð'à9Ð9Ð9Ð9Ð9Ð9ØDÐDÐDÐDÐDÐDÐDÐDàXÐXÐXÐXÐXÐXÐXÐXÐXÐXØ4Ð4Ð4Ð4Ð4Ð4ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRð ð ð ð ð  )ñ ô ð ðF˜cðF¨ðF°jðFÐEUðFðFðFðFð"j,ðj,ðj,ðj,ðj,ñj,ôj,ðj,ðj,ðj,r