o
    *‘sio   ã                   @   sÆ   d Z ddlmZ 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mZ ddlmZ ddlmZ ddlmZ dd	lmZ e	 d
e	j¡jZdZdd„ ZG dd„ dƒZdS )zWheels support.é    )Úget_platform)ÚlogN)Úparse_version)Úsys_tags)Úcanonicalize_name)Úwrite_requirements)Ú_unpack_zipfile_objz‚^(?P<project_name>.+?)-(?P<version>\d.*?)
    ((-(?P<build>\d.*?))?-(?P<py_version>.+?)-(?P<abi>.+?)-(?P<platform>.+?)
    )\.whl$z8__import__('pkg_resources').declare_namespace(__name__)
c                 C   sÞ   t  | ¡D ]Q\}}}t j || ¡}|D ]}t j ||¡}t j |||¡}t  ||¡ qttt|ƒƒƒD ]"\}	}
t j ||
¡}t j |||
¡}t j 	|¡sUt  ||¡ ||	= q3qt j| dd�D ]\}}}|rgJ ‚t  
|¡ q^dS )zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)ÚtopdownN)ÚosÚwalkÚpathÚrelpathÚjoinÚrenamesÚreversedÚlistÚ	enumerateÚexistsÚrmdir)Úsrc_dirZdst_dirÚdirpathÚdirnamesÚ	filenamesÚsubdirÚfÚsrcÚdstÚnÚd© r   úuC:\Users\PC\students\dividedattentionclub\pushnotificationexperiment\lib\python3.10\site-packages\setuptools/wheel.pyÚunpack   s$   €ù	þr!   c                   @   sh   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
dd„ ƒZe
dd„ ƒZe
dd„ ƒZdS )ÚWheelc                 C   sP   t tj |¡ƒ}|d u rtd| ƒ‚|| _| ¡  ¡ D ]
\}}t| ||ƒ qd S )Nzinvalid wheel name: %r)	Ú
WHEEL_NAMEr
   r   ÚbasenameÚ
ValueErrorÚfilenameÚ	groupdictÚitemsÚsetattr)Úselfr&   ÚmatchÚkÚvr   r   r    Ú__init__7   s   ÿzWheel.__init__c                 C   s&   t  | j d¡| j d¡| j d¡¡S )z>List tags (py_version, abi, platform) supported by this wheel.Ú.)Ú	itertoolsÚproductÚ
py_versionÚsplitÚabiÚplatform©r*   r   r   r    Útags?   s
   


ýz
Wheel.tagsc                    s0   t dd„ tƒ D ƒƒ‰ t‡ fdd„|  ¡ D ƒdƒS )z5Is the wheel is compatible with the current platform?c                 s   s    � | ]}|j |j|jfV  qd S ©N)Úinterpreterr4   r5   ©Ú.0Útr   r   r    Ú	<genexpr>I   s   € 
ÿz&Wheel.is_compatible.<locals>.<genexpr>c                 3   s   � | ]	}|ˆ v rd V  qdS )TNr   r:   ©Úsupported_tagsr   r    r=   K   s   € F)Úsetr   Únextr7   r6   r   r>   r    Úis_compatibleG   s   ÿzWheel.is_compatiblec                 C   s,   t j| j| j| jdkrd ntƒ d� ¡ d S )NÚany)Úproject_nameÚversionr5   z.egg)Úpkg_resourcesÚDistributionrD   rE   r5   r   Úegg_namer6   r   r   r    rH   M   s   þýzWheel.egg_namec                 C   sF   |  ¡ D ]}t |¡}| d¡rt|ƒ t| jƒ¡r|  S qtdƒ‚)Nz
.dist-infoz.unsupported wheel format. .dist-info not found)ÚnamelistÚ	posixpathÚdirnameÚendswithr   Ú
startswithrD   r%   )r*   ÚzfÚmemberrK   r   r   r    Úget_dist_infoS   s   

ÿÿ€zWheel.get_dist_infoc                 C   s>   t  | j¡�}|  ||¡ W d  ƒ dS 1 sw   Y  dS )z"Install wheel as an egg directory.N)ÚzipfileÚZipFiler&   Ú_install_as_egg)r*   Údestination_eggdirrN   r   r   r    Úinstall_as_egg]   s   "ÿzWheel.install_as_eggc                 C   s\   d| j | jf }|  |¡}d| }tj |d¡}|  ||||¡ |  ||¡ |  ||¡ d S )Nz%s-%sz%s.dataúEGG-INFO)	rD   rE   rP   r
   r   r   Ú_convert_metadataÚ_move_data_entriesÚ_fix_namespace_packages)r*   rT   rN   Zdist_basenameÚ	dist_infoÚ	dist_dataÚegg_infor   r   r    rS   b   s   
zWheel._install_as_eggc              	      sF  ‡‡fdd„}|dƒ}t | d¡ƒ}t dƒ|  kot dƒk n  }|s*td| ƒ‚tˆ|ƒ tj |ˆ¡‰tjj	|ˆt 
|ˆ¡d�‰ d	d
„ ‰ttˆˆ  ¡ ƒƒ‰‡ ‡‡fdd„ˆ jD ƒ}t ˆ|¡ t tj |d¡tj |d¡¡ tjtˆ|d�d�}	tjj}
t tj¡ zt|	 d¡d tj |d¡ƒ W t |
¡ d S t |
¡ w )Nc                    sT   ˆ  t ˆ | ¡¡�}| ¡  d¡}tj ¡  |¡W  d   ƒ S 1 s#w   Y  d S )Nzutf-8)	ÚopenrJ   r   ÚreadÚdecodeÚemailÚparserÚParserÚparsestr)ÚnameÚfpÚvalue)rZ   rN   r   r    Úget_metadatan   s   $þz-Wheel._convert_metadata.<locals>.get_metadataZWHEELzWheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)Úmetadatac                 S   s   d | _ t| ƒS r8   )ÚmarkerÚstr)Úreqr   r   r    Úraw_reqˆ   s   z(Wheel._convert_metadata.<locals>.raw_reqc              	      s.   i | ]}|‡fd d„t ˆˆ  |f¡ƒD ƒ“qS )c                    s   g | ]}|ˆ vr|‘qS r   r   )r;   rk   )Úinstall_requiresr   r    Ú
<listcomp>�   s
    þz6Wheel._convert_metadata.<locals>.<dictcomp>.<listcomp>)ÚmapÚrequires)r;   Úextra)Údistrm   rl   r   r    Ú
<dictcomp>Œ   s    ûþÿz+Wheel._convert_metadata.<locals>.<dictcomp>ÚMETADATAzPKG-INFO)rm   Úextras_require)Úattrsr\   zrequires.txt)r   Úgetr%   r   r
   r   r   rF   rG   Úfrom_locationÚPathMetadatar   ro   rp   ÚextrasÚrenameÚ
setuptoolsÚdictr   Z_global_logÚ	thresholdZset_thresholdÚWARNr   Zget_command_obj)rN   rT   rZ   r\   rg   Úwheel_metadataÚwheel_versionZwheel_v1ru   Z
setup_distZlog_thresholdr   )rr   rZ   rm   rl   rN   r    rW   l   sP   ÿÿ

þúþþÿýzWheel._convert_metadatac                    sæ   t j | ˆ ¡‰ t j ˆ d¡}t j |¡rNt j | dd¡}t  |¡ t  |¡D ]"}| d¡r8t  t j ||¡¡ q&t  t j ||¡t j ||¡¡ q&t  	|¡ t
t jj‡ fdd„dD ƒƒD ]}t|| ƒ q\t j ˆ ¡rqt  	ˆ ¡ dS dS )z,Move data entries to their correct location.ÚscriptsrV   z.pycc                 3   s   � | ]
}t j ˆ |¡V  qd S r8   )r
   r   r   )r;   r   ©r[   r   r    r=   ¿   s
   € ÿ
ÿz+Wheel._move_data_entries.<locals>.<genexpr>)ÚdataÚheadersÚpurelibÚplatlibN)r
   r   r   r   ÚmkdirÚlistdirrL   Úunlinkr{   r   Úfilterr!   )rT   r[   Zdist_data_scriptsZegg_info_scriptsÚentryr   r   rƒ   r    rX   «   s,   ÿ

þ
þÿzWheel._move_data_entriesc              	   C   sÞ   t j | d¡}t j |¡rkt|ƒ�}| ¡  ¡ }W d   ƒ n1 s"w   Y  |D ]C}t jj|g| d¡¢R Ž }t j |d¡}t j |¡sJt  |¡ t j |¡sjt|dƒ�}| t	¡ W d   ƒ n1 sew   Y  q)d S d S )Nznamespace_packages.txtr/   z__init__.pyÚw)
r
   r   r   r   r]   r^   r3   rˆ   ÚwriteÚNAMESPACE_PACKAGE_INIT)r\   rT   Únamespace_packagesre   ÚmodZmod_dirZmod_initr   r   r    rY   Ç   s&   ÿ
ÿ
ÿ€÷zWheel._fix_namespace_packagesN)Ú__name__Ú
__module__Ú__qualname__r.   r7   rB   rH   rP   rU   rS   ÚstaticmethodrW   rX   rY   r   r   r   r    r"   5   s    


>
r"   )Ú__doc__Zdistutils.utilr   Ú	distutilsr   r`   r0   r
   rJ   ÚrerQ   rF   r|   r   Z setuptools.extern.packaging.tagsr   Z!setuptools.extern.packaging.utilsr   Zsetuptools.command.egg_infor   Zsetuptools.archive_utilr   ÚcompileÚVERBOSEr+   r#   r�   r!   r"   r   r   r   r    Ú<module>   s4    üüÿ