§
    �’jÃ$  ã                  ó²  — d Z ddlm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mZ ddlmZmZ ddlmZ dd	lmZmZ dd
lmZm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" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z) ddl*m+Z+  ej,        e-¦  «        Z. ej/        dej0        ¦  «        Z1e2e3e"         e3e"         f         Z4d/d„Z5d0d„Z6d1d „Z7d2d#„Z8d3d(„Z9d4d)„Z:d5d.„Z;dS )6z:Orchestrator for building wheels from InstallRequirements.é    )ÚannotationsN)ÚIterable)ÚTemporaryDirectory)Úcanonicalize_nameÚcanonicalize_version)ÚInvalidVersionÚVersion)Ú
WheelCache)ÚInvalidWheelFilenameÚUnsupportedWheel)ÚFilesystemWheelÚget_wheel_distribution)ÚLink)ÚWheel)Úbuild_wheel_pep517)Úbuild_wheel_editable)ÚInstallRequirement)Ú
indent_log)Ú
ensure_dirÚ	hash_file)Úpath_to_url)Úvcsz([a-z0-9_.]+)-([a-z0-9_.!+-]+)ÚsÚstrÚreturnÚboolc                óP   — t          t                               | ¦  «        ¦  «        S )zjDetermine whether the string looks like an egg_info.

    :param s: The string to parse. E.g. foo-2.1
    )r   Ú_egg_info_reÚsearch)r   s    úIC:\Projects\DSCons\.venv\Lib\site-packages\pip\_internal\wheel_builder.pyÚ_contains_egg_infor!   "   s    € õ
 •×#Ò# AÑ&Ô&Ñ'Ô'Ð'ó    Úreqr   úbool | Nonec                ó¶  — | j         s| j        sdS | j        r| j                             ¦   «         rdS | j        ri| j        j        r]| j         rJ ‚| j        sJ ‚t          j        | j        j        ¦  «        }|sJ ‚|                     | j        j	        | j        ¦  «        rdS dS | j        sJ ‚| j         
                    ¦   «         \  }}t          |¦  «        rdS dS )z‹
    Return whether a built InstallRequirement can be stored in the persistent
    wheel cache, assuming the wheel cache is available.
    FT)ÚeditableÚ
source_dirÚlinkÚis_existing_dirÚis_vcsr   Úget_backend_for_schemeÚschemeÚis_immutable_rev_checkoutÚurlÚsplitextr!   )r#   Úvcs_backendÚbaseÚexts       r    Ú_should_cacher3   *   s÷   € ð „|ð ˜3œ>ð àˆuØ
„xð �C”H×,Ò,Ñ.Ô.ð àˆuà
„xð 	�C”H”Oð 	ð ”<ÐÐÐØŒ~ÐÐˆ~ÝÔ0°´´ÑAÔAˆØÐÐˆ{Ø×0Ò0°´´¸s¼~ÑNÔNð 	Ø�4ØˆuàŒ8€O€Oˆ8Ø”×!Ò!Ñ#Ô#�I€Dˆ#Ý˜$ÑÔð Øˆtð ˆ5r"   Úwheel_cacher
   c                óÌ   — t          |j        ¦  «        }| j        sJ ‚|r*t          | ¦  «        r|                     | j        ¦  «        }n|                     | j        ¦  «        }|S )zdReturn the persistent or temporary cache directory where the built
    wheel need to be stored.
    )r   Ú	cache_dirr(   r3   Úget_path_for_linkÚget_ephem_path_for_link)r#   r4   Úcache_availabler6   s       r    Ú_get_cache_dirr:   L   sj   € õ ˜;Ô0Ñ1Ô1€OØŒ8€O€Oˆ8Øð B�=¨Ñ-Ô-ð BØ×1Ò1°#´(Ñ;Ô;ˆ	ˆ	à×7Ò7¸¼ÑAÔAˆ	ØÐr"   Ú
wheel_pathÚNonec                óÎ  — t          | j        pd¦  «        }t          t          j                             |¦  «        ¦  «        }|j        |k    rt          d|›d|j        ›�¦  «        ‚t          t          |¦  «        |¦  «        }t          |j
        ¦  «        }t          |¦  «        t          |j
        ¦  «        k    rt          d|›d|j
        ›�¦  «        ‚|j        }|€t          d¦  «        ‚	 t          |¦  «        }n"# t          $ r d|› �}t          |¦  «        ‚w xY w|t          d¦  «        k    r-t!          |j
        t          ¦  «        st          d|›d�¦  «        ‚d S d S )	NÚ z)Wheel has unexpected file name: expected z, got zMissing Metadata-VersionzInvalid Metadata-Version: z1.2z+Metadata 1.2 mandates PEP 440 version, but z is not)r   Únamer   ÚosÚpathÚbasenamer   r   r   r   Úversionr   Úmetadata_versionr   r	   r   Ú
isinstance)	r#   r;   Úcanonical_nameÚwÚdistÚdist_verstrÚmetadata_version_valuerD   Úmsgs	            r    Ú_verify_onerL   \   s©  € Ý& s¤x ~°2Ñ6Ô6€NÝ�bŒg×Ò˜zÑ*Ô*Ñ+Ô+€AØ„v�ÒÐÝ"ð¸ð ð Ø”6ðð ñ
ô 
ð 	
õ "¥/°*Ñ"=Ô"=¸~ÑNÔN€DÝ�d”lÑ#Ô#€KÝ˜KÑ(Ô(Õ,@ÀÄÑ,KÔ,KÒKÐKÝ"ð!¸ð !ð !Ø”9ð!ð !ñ
ô 
ð 	
ð "Ô2ÐØÐ%ÝÐ9Ñ:Ô:Ð:ð$Ý"Ð#9Ñ:Ô:ÐÐøÝð $ð $ð $ØCÐ+AÐCÐCˆÝ˜sÑ#Ô#Ð#ð$øøøð �7 5™>œ>Ò)Ð)µ*¸T¼\Í7Ñ2SÔ2SÐ)ÝØP¸+ÐPÐPÐPñ
ô 
ð 	
ð *Ð)Ð)Ð)s   Ã1D ÄD Ú
output_dirÚverifyr&   ú
str | Nonec                ó¶  — |rdnd}	 t          |¦  «         n:# t          $ r-}t                               d|| j        |¦  «         Y d}~dS d}~ww xY w| j        5  t          | ||¦  «        }ddd¦  «         n# 1 swxY w Y   |rU|rS	 t          | |¦  «         nA# t          t          f$ r-}t                               d|| j        |¦  «         Y d}~dS d}~ww xY w|S )zaBuild one wheel.

    :return: The filename of the built wheel, or None if the build failed.
    r&   ÚwheelzBuilding %s for %s failed: %sNzBuilt %s for %s is invalid: %s)
r   ÚOSErrorÚloggerÚwarningr?   Ú	build_envÚ_build_one_inside_envrL   r   r   )r#   rM   rN   r&   ÚartifactÚer;   s          r    Ú
_build_onerY   y   sx  € ð &Ð2ˆzˆz¨7€Hð	Ý�:ÑÔÐÐøÝð ð ð Ý�ŠØ+ØØŒHØñ		
ô 	
ð 	
ð ˆtˆtˆtˆtˆtøøøøðøøøð 
Œð Fð FÝ*¨3°
¸HÑEÔEˆ
ðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fàð �fð ð	Ý˜˜ZÑ(Ô(Ð(Ð(øÝ$Õ&6Ð7ð 	ð 	ð 	Ý�NŠNÐ;¸XÀsÄxÐQRÑSÔSÐSØ�4�4�4�4�4øøøøð	øøøð Ðs>   ˆ ˜
A¢"A
Á
AÁA7Á7A;Á>A;ÂB ÂCÂ)"CÃCc           	     ó  — t          |¬¦  «        5 }| j        sJ ‚| j        sJ ‚| j        sJ ‚|r#t	          | j        | j        | j        |¬¦  «        }n"t          | j        | j        | j        |¬¦  «        }|�ýt          j                             |¦  «        }t          j         	                    ||¦  «        }	 t          |¦  «        \  }}t          j        ||¦  «         t                               d| j        |||                     ¦   «         ¦  «         t                               d|¦  «         |cd d d ¦  «         S # t          $ r+}	t                               d| j        |	¦  «         Y d }	~	nd }	~	ww xY w	 d d d ¦  «         d S # 1 swxY w Y   d S )N)Údir)r?   ÚbackendÚmetadata_directoryÚwheel_directoryz3Created wheel for %s: filename=%s size=%d sha256=%szStored in directory: %sz Building wheel for %s failed: %s)r   r?   r]   Úpep517_backendr   r   r@   rA   rB   Újoinr   ÚreplacerS   ÚinfoÚ	hexdigestÚ	ExceptionrT   )
r#   rM   r&   r^   r;   Ú
wheel_nameÚ	dest_pathÚ
wheel_hashÚlengthrX   s
             r    rV   rV   ›   s0  € õ
 
 
Ð	+Ñ	+Ô	+ð ,¨ØŒxˆˆˆxØÔ%Ð%Ð%Ð%ØÔ!Ð!Ð!Ð!Øð 	Ý-Ø”XØÔ*Ø#&Ô#9Ø /ð	ñ ô ˆJˆJõ ,Ø”XØÔ*Ø#&Ô#9Ø /ð	ñ ô ˆJð Ð!Ýœ×)Ò)¨*Ñ5Ô5ˆJÝœŸš Z°Ñ<Ô<ˆIðÝ%.¨zÑ%:Ô%:Ñ"�
˜Fõ
 ”
˜: yÑ1Ô1Ð1Ý—’ØIØ”HØØØ×(Ò(Ñ*Ô*ñô ð õ —’Ð5°zÑBÔBÐBØ ðK,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,øõL ð ð ð Ý—’Ø6Ø”HØñô ð ð ð ð ð ð øøøøðøøøð ðY,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s7   ‘B$FÂ6A8D;Ä;
E0Å!E+Å&FÅ+E0Å0FÆFÆFÚrequirementsúIterable[InstallRequirement]Úallow_editablesÚBuildResultc                óP  — | sg g fS t                                dd                     d„ | D ¦   «         ¦  «        ¦  «         t          ¦   «         5  g g }}| D ]Ã}|j        sJ ‚t          ||¦  «        }t          ||||j        o|¦  «        }|rx|j        �| 	                    ||j        ¦  «         t          t          |¦  «        ¦  «        |_        |j        j        |_        |j        j        sJ ‚|                     |¦  «         Œ®|                     |¦  «         ŒÄ	 ddd¦  «         n# 1 swxY w Y   |r8t                                dd                     d„ |D ¦   «         ¦  «        ¦  «         |r8t                                dd                     d	„ |D ¦   «         ¦  «        ¦  «         ||fS )
z˜Build wheels.

    :return: The list of InstallRequirement that succeeded to build and
        the list of InstallRequirement that failed to build.
    z*Building wheels for collected packages: %sz, c              3  ó$   K  — | ]}|j         V — Œd S )N©r?   ©Ú.0r#   s     r    ú	<genexpr>zbuild.<locals>.<genexpr>à   s$   è è € Ð3Ð3˜s�#”(Ð3Ð3Ð3Ð3Ð3Ð3r"   NzSuccessfully built %sú c                ó   — g | ]	}|j         ‘Œ
S © ro   rp   s     r    ú
<listcomp>zbuild.<locals>.<listcomp>  s   € Ð:Ð:Ð: 3�c”hÐ:Ð:Ð:r"   zFailed to build %sc                ó   — g | ]	}|j         ‘Œ
S ru   ro   rp   s     r    rv   zbuild.<locals>.<listcomp>  s   € Ð9Ð9Ð9 3�c”hÐ9Ð9Ð9r"   )rS   rb   r`   r   r?   r:   rY   r&   Údownload_infoÚrecord_download_originr   r   r(   Ú	file_pathÚlocal_file_pathÚis_wheelÚappend)	ri   r4   rN   rk   Úbuild_successesÚbuild_failuresr#   r6   Ú
wheel_files	            r    Úbuildr�   Ï   s(  € ð ð Ø�2ˆvˆõ ‡K‚KØ4Ø�	Š	Ð3Ð3 lÐ3Ñ3Ô3Ñ3Ô3ñô ð õ
 
‰Œð +ð +Ø*,¨b˜ˆØð 	+ð 	+ˆCØ”8ˆOˆO�8Ý& s¨KÑ8Ô8ˆIÝ#ØØØØ”Ð0 ñ	ô ˆJð ð +àÔ$Ð0ð  ×6Ò6°yÀ#ÔBSÑTÔTÐTå¥¨JÑ 7Ô 7Ñ8Ô8�”Ø&)¤hÔ&8�Ô#Ø”xÔ(Ð(Ð(Ð(Ø×&Ò& sÑ+Ô+Ð+Ð+à×%Ò% cÑ*Ô*Ð*Ð*ð-	+ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð6 ð 
Ý�ŠØ#Ø�HŠHÐ:Ð:¨/Ð:Ñ:Ô:Ñ;Ô;ñ	
ô 	
ð 	
ð ð 
Ý�ŠØ Ø�HŠHÐ9Ð9¨.Ð9Ñ9Ô9Ñ:Ô:ñ	
ô 	
ð 	
ð
 ˜NÐ*Ð*s   ÁCD%Ä%D)Ä,D))r   r   r   r   )r#   r   r   r$   )r#   r   r4   r
   r   r   )r#   r   r;   r   r   r<   )
r#   r   rM   r   rN   r   r&   r   r   rO   )r#   r   rM   r   r&   r   r   rO   )
ri   rj   r4   r
   rN   r   rk   r   r   rl   )<Ú__doc__Ú
__future__r   ÚloggingÚos.pathr@   ÚreÚcollections.abcr   Útempfiler   Úpip._vendor.packaging.utilsr   r   Úpip._vendor.packaging.versionr   r	   Úpip._internal.cacher
   Úpip._internal.exceptionsr   r   Úpip._internal.metadatar   r   Úpip._internal.models.linkr   Úpip._internal.models.wheelr   Ú$pip._internal.operations.build.wheelr   Ú-pip._internal.operations.build.wheel_editabler   Úpip._internal.req.req_installr   Úpip._internal.utils.loggingr   Úpip._internal.utils.miscr   r   Úpip._internal.utils.urlsr   Úpip._internal.vcsr   Ú	getLoggerÚ__name__rS   ÚcompileÚ
IGNORECASEr   ÚtupleÚlistrl   r!   r3   r:   rL   rY   rV   r�   ru   r"   r    ú<module>r�      sR  ðØ @Ð @à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà *Ð *Ð *Ð *Ð *Ð *Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ *Ð *Ð *Ð *Ð *Ð *Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø CÐ CÐ CÐ CÐ CÐ CØ NÐ NÐ NÐ NÐ NÐ NØ <Ð <Ð <Ð <Ð <Ð <Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø !Ð !Ð !Ð !Ð !Ð !à	ˆÔ	˜8Ñ	$Ô	$€àˆrŒzÐ;¸R¼]ÑKÔK€à�DÐ+Ô,¨dÐ3EÔ.FÐFÔG€ð(ð (ð (ð (ðð ð ð ðDð ð ð ð 
ð 
ð 
ð 
ð:ð ð ð ðD1ð 1ð 1ð 1ðh:+ð :+ð :+ð :+ð :+ð :+r"   