JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr ԓg \ddlmZddlZddlZddlZddlZddlZddlZddl m Z m Z ddl m Z mZmZddlmZmZmZddlmZddlmZmZmZer1ddl mZmZmZdd lmZeeej@efZ!Gd d eeeZ"ejFd ejHZ%d Z&dddZ'GddeZ(y)) annotationsN)StringIO TextIOWrapper)IO TYPE_CHECKINGLiteral) ZIP_DEFLATEDZipFileZipInfo) WheelError)logurlsafe_b64decodeurlsafe_b64encode)ProtocolSizedUnion)Bufferc eZdZy) SizedBufferN)__name__ __module__ __qualname__>/opt/hc_python/lib/python3.12/site-packages/wheel/wheelfile.pyrrsrrz^(?P(?P[^\s-]+?)-(?P[^\s-]+?))(-(?P\d[^\s-]*))? -(?P[^\s-]+?)-(?P[^\s-]+?)-(?P\S+)\.whl$icttjjd|xst j}t |t }t j|ddS)NSOURCE_DATE_EPOCHr)intosenvirongettimemaxMINIMUM_TIMESTAMPgmtime) timestamps rget_zipinfo_datetimer($sLBJJNN#6 8PTYY[QRII01I ;;y !!A &&rceZdZdZej Zdef d dZ d d dZ d dZ d ddZ d ddZ d Z y) WheelFilezA ZipFile derivative class that also reads SHA-256 hashes from .dist-info/RECORD and checks any read files against those. rctjj|}tj ||_|j dr |j td|tj||||ddj|j jd|_ |jdz|_ i|_i|_|dk(rd |j|j<d |j|jd z<d |j|jd z< |j!|j}|5t%j&t)|ddD]}|\}}} |s |j+d\} } t-j.| | j3dvrtd| d| t5|j7df|j|< dddyy#t"$rtd |jd dwxYw#t0$rtd| dwxYw#1swYyxYw)Nz.whlzBad wheel filename T) compression allowZip64z {}.dist-infonameverz/RECORDr+NNz.jwsz.p7szMissing z fileutf-8)newlineencoding=zUnsupported hash algorithm: >md5sha1zWeak hash algorithm (z) is not permitted by PEP 427ascii)r pathbasename WHEEL_INFO_REmatchparsed_filenameendswithr r __init__formatgroupdist_info_path record_path _file_hashes _file_sizesopenKeyErrorcsvreaderrsplithashlibnew ValueErrorlowerrencode) selffilemoder-r:recordliner9hash_sumsize algorithms rr?zWheelFile.__init__3sG 77##D),228<  (D,@,@,H28,?@ @tT{tT,33  & &y 1  ..:NP 3;2._update_crcssQ''C G $    (|**, = #;G9A!FGG>srr+/zNo hash found for file 'rZ)r^bytesreturnNone) isinstancer filenamer>rDr r rFrKrLre) rP name_or_inforRpwdrerWr`rarbrcrds @@@@@rrFzWheelFile.openms  H H&0 g%FL ! !L  CK$$S)t0007yBC C \\$ dC 8 3;w//4'+'8'8'A $I}( '{{95 24..+/ rctjd|jd|dg}tj|D]\}}}|j t |D]}tjjtjj||}tjj|s`tjj||jtjjd}||jk(r|jdr|j!||f|j#|||j |D]\}}|j#||y)Nz creating 'z' and adding 'z' to itrfz .dist-info)r inforkr walksortsortedr9normpathjoinisfilerelpathreplaceseprCr>appendwrite) rPbase_dirdeferredrootdirnames filenamesnamer9arcnames r write_fileszWheelFile.write_filess :dmm_N8*GLM*,)+): %D(I MMOy)ww'' T4(@A77>>$' ggoodH=EEbggkkSVWG$"2"22|4 w8 41* *;  %MD' JJtW %&rct|d5}tj|j}|j }dddt |xs|t j}tj|jtj|jzdz|_ |xs |j|_|j||y#1swYxYw)Nrb date_time)rFr fstatfilenoreadr r(st_mtimestatS_IMODEst_modeS_IFMT external_attrr- compress_typewritestr)rPrkrrfstdatazinfos rrzzWheelFile.writes (D !Q!((*%B668D"  x+? +L  $||BJJ7$++bjj:QQVXX+?t/?/? eT=1" !s 4CC&czt|trAt|t}|j|_dt jzdz|_t|tr|jd}tj||||t|tr |jn|}tjd|d||jk7rk|j!|}|j"t%|j'j)df|j*|<t-||j.|<yy)Nrirr2zadding 'rZr8)rjstrr r(r-rrS_IFREGrrOr rrkr rorC_default_algorithmrrr]decoderDlenrE)rPzinfo_or_arcnamerrfnamehash_s rrzWheelFile.writestrs & ,& ,@,B  .2-=-=  *.3dll.Br-I  * dC ;;w'D/}E*G4  % %!  8E7!$% D$$ $++D1E !%,,.188A(D  e $'*$iD  U # %rcjjdk(rjrt}t j |ddd}|j fdjjD|jtjddfjj|jtjy)Nw," ) delimiter quotecharlineterminatorc3ZK|]"\}\}}||dz|zj|f$yw)r5N)rE).0rrWrrPs r z"WheelFile.close..s>5N11 5IOe3T5E5Ee5LM5Ns(+r1)fprRrDrrHwriter writerowsitemswriterowr@rCrgetvaluer close)rPrrs` rrzWheelFile.closes 77 499#38I8I:DZZsSWXF   595F5F5L5L5N  OOVD$4$45r2> ? MM$**DMMO < dr)rQStrPathrRzLiteral['r', 'w', 'x', 'a']r-r)r+N)rl str | ZipInforRzLiteral['r', 'w']rmz bytes | Nonerhz IO[bytes])r{rr0)rkrrz str | Noner int | NonerhriN)rrrzSizedBuffer | strrr)rrr__doc__rKsha256rr r?rFrrzrrrrrr*r*,s! -0' 88*8 8z#& #      D&2#$( 222" 2  2*%) 0'0 0" 0>rr*r)r'z float | None)) __future__rrHrKos.pathr rerr#iorrtypingrrrzipfiler r r wheel.clir wheel.utilr rrrrrtyping_extensionsrrPathLikerrcompileVERBOSEr;r%r(r*rrrrs"  &--22 @@--(CS))*G3eVX3  CJJ 'wwr