
     -Ph                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZe
j        rd dlmZ d dl
mZmZmZmZmZ d dlmZ dZ ej        d          ZddZ G d d          Z G d de          ZdS )    )annotationsN)TracebackType)ListOptionalTupleTypeUnion)Pathi zY^(?P<name>[^-]+)-(?P<version>[^-]+)(:?-(?P<build>[^-]+))?-(?P<tag>[^-]+-[^-]+-[^-]+).whl$databytesreturnc                P    t          j        |                               d          S )N   =)base64urlsafe_b64encoderstripr   s    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonpy/_wheelfile.py
_b64encoder      s!    #D))00666    c                       e Zd ZdZdej        fd$ fdZed%d&d            Zed'd            Z	d(dZ
d%d)dZd*dZd+dZd,d#Z xZS )-	WheelFilezImplement the wheel package binary distribution format.

    https://packaging.python.org/en/latest/specifications/binary-distribution-format/
    rfilenamer
   modestrcompressionintr   'WheelFile'c                j    |dk    r&t                                          t                    S t          )Nw)super__new__WheelFileWriterNotImplementedError)clsr   r   r   	__class__s       r   r#   zWheelFile.__new__'   s(    3;;77???333!!r   NmtimeOptional[float]#Tuple[int, int, int, int, int, int]c                    t          t          j                            d| pt	          j                                        }t          |t                    }t	          j        |          dd         S )NSOURCE_DATE_EPOCHr      )r   osenvirongettimemaxMIN_TIMESTAMPgmtime)r(   	timestamps     r   r5   zWheelFile.timestamp,   sS    
':E<PTY[[QQRR		=11	{9%%ac**r   r   r   c                    dt          t          j        |                                                                         d          z   S )Nzsha256=ascii)r   hashlibsha256digestdecoder   s    r   hashzWheelFile.hash3   s9    :gnT&:&:&A&A&C&CDDKKGTTTTr   zinfo_or_arcnameUnion[str, zipfile.ZipInfo]Nonec                    t           Nr%   )selfr=   r   s      r   writestrzWheelFile.writestr7       !!r   arcnameOptional[str]c                    t           rA   rB   )rC   r   rF   s      r   writezWheelFile.write:   rE   r   c                    t           rA   rB   rC   s    r   closezWheelFile.close=   rE   r   c                    | S rA    rK   s    r   	__enter__zWheelFile.__enter__@   s    r   exc_typeType[BaseException]exc_valBaseExceptionexc_tbr   c                .    |                                   d S rA   )rL   )rC   rP   rR   rT   s       r   __exit__zWheelFile.__exit__C   s    

r   )r   r
   r   r   r   r   r   r   rA   )r(   r)   r   r*   )r   r   r   r   r=   r>   r   r   r   r?   r   r
   rF   rG   r   r?   r   r?   )r   r   )rP   rQ   rR   rS   rT   r   r   r?   )__name__
__module____qualname____doc__zipfileZIP_DEFLATEDr#   staticmethodr5   r<   rD   rI   rL   rO   rV   __classcell__)r'   s   @r   r   r   "   s         25I] " " " " " " "
 + + + + \+ U U U \U" " " "" " " " "" " " "          r   r   c                  >    e Zd Zej        fddZddZdddZddZdS )r$   filepathr
   r   r   r   r   c                P   t           j                            |          }t                              |          }|st          d|          |                    d          | _        |                    d          | _        g | _	        t          j        |d|d          | _        d S )Nzinvalid wheel filename: nameversionr!   T)r   r   
allowZip64)r.   pathbasenameWHEEL_FILENAME_REGEXmatch
ValueErrorgroupre   rf   entriesr^   ZipFilearchive)rC   rc   r   r   r   rk   s         r   __init__zWheelFileWriter.__init__H   s    7##H--$**844 	FDDDEEEKK''	{{9--35xc{_cdddr   r=   r>   r   r   r   r?   c                   t          |t                    r|                    d          }t          |t          j                  r|}n/t          j        ||                                           }d|_        | j                            ||| j        j	        | j        j
                   | j                            |j        |                     |          t          |          f           d S )Nzutf-8	date_time  compress_typecompresslevel)
isinstancer   encoder^   ZipInfor5   external_attrrp   rD   r   rx   rn   appendr   r<   len)rC   r=   r   zinfos       r   rD   zWheelFileWriter.writestrR   s    dC   	(;;w''D&88 	.$EEO$4@P@PQQQE"-E4,2,4 	 	6 	6 	6 	U^TYYt__c$iiHIIIIIr   Nr   rF   rG   c                   t          |d          5 }t          j        |                                          }|                                }d d d            n# 1 swxY w Y   t          j        |pt          |          |                     |j	                            }t          j        |j                  t          j        |j                  z  dz  |_        |                     ||           d S )Nrbrs      )openr.   fstatfilenoreadr^   r{   r   r5   st_mtimestatS_IMODEst_modeS_IFMTr|   rD   )rC   r   rF   fstr   r   s          r   rI   zWheelFileWriter.write`   s    (D!! 	Q!((**%%B6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  83x==DNNSUS^D_D_```#|BJ77$+bj:Q:QQVXXeT"""""s   ;AAAc                   | j          d| j         d}t          j                    }t	          j        |ddd          }|                    | j                   |                    |ddf           t          j
        ||                                           }d	|_        | j                            ||                                | j        j        | j        j        
           | j                                         d S )N-z.dist-info/RECORD,"
)	delimiter	quotecharlineterminator rs   ru   rv   )re   rf   ioStringIOcsvwriter	writerowsrn   writerowr^   r{   r5   r|   rp   rD   getvaluer   rx   rL   )rC   recordr   r   zis        r   rL   zWheelFileWriter.closeh   s    I?????{}}DC3tTTT&&&R()))_Vt~~/?/?@@@&,2,4 	 	6 	6 	6 	r   )rc   r
   r   r   r   r   rW   rA   rX   rY   )	rZ   r[   r\   r^   r_   rq   rD   rI   rL   rN   r   r   r$   r$   G   s}        ELEY e e e e eJ J J J# # # # #     r   r$   )r   r   r   r   )
__future__r   r   r   r8   r   r.   rer   r1   typingr^   TYPE_CHECKINGtypesr   r   r   r   r   r	   mesonpy._compatr
   r3   compilerj   r   r   r$   rN   r   r   <module>r      sY  
 # " " " " "  



  				 				 				     
 %######99999999999999$$$$$$ !rz"~ 7 7 7 7" " " " " " " "J- - - - -i - - - - -r   