gZ1"ddlmZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z ddlmZddlmZdd lmZdd lmZdd lmZdd lmZd dlmZd dlmZd dlmZd dl m!Z!ejDdejFZ$ejDdejFZ%ejDdZ&ejDdZ'edddZ(deZ)d'dZ*d(dZ+d)dZ,GddeZ-Gd d!e-Z.Gd"d#e.Z/Gd$d%e-Z0d*d&Z1y)+) annotationsN)ABCMetaabstractmethod) defaultdict)Iterator)Message)Parser) EmailPolicy)iglob)Path)dedent)ZipFile) __version__)generate_requirements) parse_tag) WheelFilez] (?P.+?)-(?P.+?) (-(?Ppy\d\.\d+) (-(?P.+?))? )?.egg$zL ^(?P.+?)-(?P.+?) (-(?Ppy\d\.\d+) )?.egg-info/z>\.(?Pwin32|win-amd64)(?:-(?Ppy\d\.\d))?\.exe$z8\.(?P[a-z0-9]+)-(?Pwin32|win_amd64)\.pyd$TF)utf8 mangle_from_max_line_lengthzwheel c8d}tt}|jD]Q}|j}|s|j dr|j dr|dd}>||j |St|D]\}}|j||y)N[]) rlist splitlinesstrip startswithendswithappendr add_header)requiresmetadataextra requirementslinekeyvalues @/opt/hc_python/lib/python3.12/site-packages/wheel/cli/convert.pyconvert_requiresr+0sE0;D0AL##%zz|  ??3 DMM#$62JE U""4(&,L9 UC':c tj|}|jD]\}}|j}|dk(r|dk(rb|j }dj |dj tdj |dddf}|j||dk(r|jdd||d k(r|jdd ||j|||jd d y) NUNKNOWN description rrz home-pagez Project-URLz Homepage, z download-urlz Download, zMetadata-Versionz2.4) r parsestritemslowerrjoinlstripr set_payloadr"replace_header)pkginfor$parsed_messager(r) key_lowerdescription_liness r*convert_pkg_infor<Bs X&&w/N$**, UIIK I    % % 0 0 2 II%a(//1499%6qr%:;<E   ' + %    E7/C D . (    E7/C D   U +)-, .6r,cltjdd|jjddS)Nz[-_.]+-_)resubr3replace)names r* normalizerD]s+ 66)S$ ' - - / 7 7S AAr,czeZdZUded<ded<dZded<dZded<dZded <d ed <edd Ze dd Z y) ConvertSourcestrrCversionzpy2.py3pyvernoneabianyplatformrr$c:|jd|jdS)Nr> .dist-info)rCrHselfs r* dist_info_dirzConvertSource.dist_info_diris))Adll^:66r,cyNrPs r*generate_contentszConvertSource.generate_contentsms r,N)returnrGrWzIterator[tuple[str, bytes]]) __name__ __module__ __qualname____annotations__rIrKrMpropertyrRrrVrUr,r*rFrFasV I LE3CHc 77  r,rF) metaclassceZdZddZddZy) EggFileSourcectj|jx}std|j||_t |j d|_|j d|_|j dx}r[|jdd|_ |j dx}r1|jjdd |_ t ||_ t|_ y) NzInvalid egg file name: rCverrI.archpycp)egg_filename_rematchrC ValueErrorpathrDgrouprHrBrIrKrMrr$)rQrkrirIres r*__init__zEggFileSource.__init__ss(..tyy9996tyykBC C ekk&12 {{5) KK( (5 (sB/DJ{{6**t*::--dD9 )$   r,c#PKt|jd5}t|jD]}|j dr|j dr|dk(r7|j |jd}t||jnc|dk(r7|j |jd}t||jn'|dk(r"|jd|j |f||j |f dddy#1swYyxYww) Nr/z EGG-INFO/zEGG-INFO/requires.txtutf-8zEGG-INFO/PKG-INFOzEGG-INFO/entry_points.txt/entry_points.txt) rrksortednamelistr rreaddecoder+r$r<rR)rQzip_filefilenamer#r8s r*rVzEggFileSource.generate_contentss TYY $"8#4#4#67$$S)&&{3#::#+==#:#A#A'#J(4==A!%88"*--"9"@"@"I($--@!%@@#1122CD$MM(3  h 777/8% $ $sD&C7D D&D#D&Nrkr rX)rYrZr[rmrVrUr,r*r`r`rs " 8r,r`ceZdZddZy)EggDirectorySourcec#Ktj|jD]e\}}}t|D]O}t ||}|j j dk(r|j dk(r(|jd}t||jn|j dk(ry|jd}t||j|jjdx}rt||_|jjdx} r8| |_ n0|j dk(r!|jd|jft!|j#|j|jfRhyw) NzEGG-INFO requires.txtrqPKG-INFONameVersionentry_points.txtrr)oswalkrkrsr parentrC read_textr+r$r<getrDrHrR read_bytesrG relative_to) rQdirpathr? filenamesrxrkr#r8rCrHs r*rVz$EggDirectorySource.generate_contentssG%'WWTYY%7 !GQ "9-GX.;;##z1yyN2#'>>'#:(4==Aj0"&.."9($--@#'==#4#4V#<<4<(1$DI&*mm&7&7 &BB7B+2DL&88#1122CD OO- $**499568III/.&8sF F NrX)rYrZr[rVrUr,r*r{r{sJr,r{c eZdZdZddZddZy)WininstFileSourcea Handles distributions created with ``bdist_wininst``. The egginfo filename has the format:: name-ver(-pyver)(-arch).egg-info The installer filename has the format:: name-ver.arch(-pyver).exe Some things to note: 1. The installer filename is not definitive. An installer can be renamed and work perfectly well as an installer. So more reliable data should be used whenever possible. 2. The egg-info data should be preferred for the name and version, because these come straight from the distutils metadata, and are mandatory. 3. The pyver from the egg-info data should be ignored, as it is constructed from the version of Python used to build the installer, which is irrelevant - the installer filename is correct here (even to the point that when it's not there, any version is implied). 4. The architecture must be taken from the installer filename, as it is not included in the egg-info data. 5. Architecture-neutral installers still have an architecture because the installer format itself (being executable) is architecture-specific. We should therefore ignore the architecture if the content is pure-python. cF||_t|_tj |j x}rIt |jd|_|jdx}r|jdd|_ dx}}t|j5}|jD]}|jdd\}}|sytj|x}rbd}t |jd |_|jd |_|jdx}r_|jdd|_ nG|sEt"j |x}r.d}|jd |_|jd|_|s|sndddy#1swYyxYw) NrMrIrcrdFrprTrCrbrK)rkrr$ wininst_researchrCrDrlrMrBrIrrtsplit egg_info_rerirHpyd_rerK) rQrkrirIegg_info_found pyd_foundrwrxprefixs r*rmzWininstFileSource.__init__sb   %%dii0 05 0%ekk*&=>DM G,,u,"]]33 &+* TYY 8$--/#+>>#q#9 %K4E4Eh4O+O5+O%)N )%++f*= >DI#(;;u#5DL % G 44u4%*]]3%; "x1H(H(H $I${{51DH$)KK $;DM!i0  sC-FF FF c#$K|jd|jd}|jd|jd}t|jd5}t |j D] }|j dr|jdd\}}tj|r|jddd}|dk(r7|j|jd }t||jnY|d k(r7|j|jd } t| |jn|d k(r|d |j|f|d k(r|d|}||j|f dddy#1swYyxYww)Nr>rOz.datarorprrr}rqr~rrrSCRIPTSz /scripts/)rCrHrrkrsrtr rrrrsplitrurvr+r$r<) rQrRdata_dirrwrxrtarget_filenamebasenamer#r8s r*rVz#WininstFileSource.generate_contentssv99+Qt||nJ? ii[$,,u5 TYY $"8#4#4#67$$S)+3..a*@'%%o6.55c1=bAH>1#+==#:#A#A'#J(4==A!Z/"*--"9"@"@"I($--@!%77,o->?$MM(3 y()1 )O;L&MO&x}}X'>>>78% $ $sAFD)F; FF  FNryrX)rYrZr[__doc__rmrVrUr,r*rrs:<?r,rc |D]g}t|D]U}t|}|jdk(r(|jr t |}nt |}n t |}|rt|dddt||jd|jd|jd|jd|jd z }t|d5}|jD]\} } |j| | |j|j d |j"j%t& j)d t+} | j-d d | j-dt.| j-dt1|jdk(j3t5|jd|jd|j} t7| dD]} | j-dt1| |j|j d| j%t& j)d ddd|sKtdXjy#1swYxYw)Nz.eggz...Trd)flushendr>z.whlwz /METADATA)policyrqz Wheel-Versionz1.0 GeneratorzRoot-Is-PurelibrLc|jSrT) interpreter)tags r*zconvert..Asr,)r(Tagz/WHEELOK)r r suffixis_dirr{r`rprintrCrHrIrKrMrrVwritestrrRr$ as_stringserialization_policyencoderr" GENERATORrGr3rrs)filesdest_dirverbosepatarchiverksource dest_path wheelfile name_or_zinfocontents wheel_messagetagsrs r*convertrs0SzG=D{{f$;;=,>t,DF*40F*40 oTr:X;;-q 0&,,q FOO$D*I9c*i/5/G/G/I+M8&&}h?0J""++,I6OO--5I-JQQ!( ((%@((i@((%s6??e+C'D'J'J'L!FLL>6::,a?P!QR!$,GHC!,,UCH=I""++,F3!++3G+HOO/+<d a"$+*s FI//I8 )r#rGr$rrWNone)r8rGr$r)rCrGrWrG)rz list[str]rrGrboolrWr)2 __future__ros.pathrr@abcrr collectionsrcollections.abcr email.messager email.parserr email.policyr globr pathlibr textwrapr zipfilerrdrr$rvendored.packaging.tagsrrrcompileVERBOSErhrrrrrr+r<rDrFr`r{rrrUr,r*rs " '#$!$,/!"** JJ bjjJJ  RZZE  O P"  [M " ($76B g "*8M*8ZJJ:[? [?|2r,