Ë
    äØjj.  ã                   óÚ  — d Z ddlZddlZddlZddlZddlmZmZm	Z	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& ddl'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3  ejh                  e5«      Z6 ejn                  dejp                  «      Z9e
ee$   ee$   f   Z:de;de<fd„Z=de$de<de<fd„Z>de$de<fd„Z?de$de<fd„Z@de$de	e<   fd„ZAde$d ede;fd!„ZBde$d"e;ddfd#„ZCde$d$e;d%e<d&ee;   d'ee;   d(e<de	e;   fd)„ZDde$d$e;d&ee;   d'ee;   d(e<de	e;   fd*„ZEde$d'ee;   de<fd+„ZFd,ee$   d ed%e<d&ee;   d'ee;   de:fd-„ZGy).z;Orchestrator for building wheels from InstallRequirements.
é    N)ÚIterableÚListÚOptionalÚTuple)Úcanonicalize_nameÚcanonicalize_version)ÚInvalidVersionÚVersion)Ú
WheelCache)ÚInvalidWheelFilenameÚUnsupportedWheel)ÚFilesystemWheelÚget_wheel_distribution)ÚLink)ÚWheel)Úbuild_wheel_pep517)Úbuild_wheel_editable)Úbuild_wheel_legacy)ÚInstallRequirement)Ú
indent_log)Ú
ensure_dirÚ	hash_file)Úmake_setuptools_clean_args)Úcall_subprocess)ÚTempDirectory)Úpath_to_url)Úvcsz([a-z0-9_.]+)-([a-z0-9_.!+-]+)ÚsÚreturnc                 ó>   — t        t        j                  | «      «      S )zjDetermine whether the string looks like an egg_info.

    :param s: The string to parse. E.g. foo-2.1
    )ÚboolÚ_egg_info_reÚsearch)r   s    ú]/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_internal/wheel_builder.pyÚ_contains_egg_infor%   %   s   € ô
 ”×#Ñ# AÓ&Ó'Ð'ó    ÚreqÚ
need_wheelc                 óÔ   — | j                   ry| j                  r#|r t        j                  d| j                  «       y|ry| j
                  sy| j                  r| j                  «       S y)zBReturn whether an InstallRequirement should be built into a wheel.Fz(Skipping %s, due to already being wheel.T)Ú
constraintÚis_wheelÚloggerÚinfoÚnameÚ
source_dirÚeditableÚsupports_pyproject_editable)r'   r(   s     r$   Ú_should_buildr2   -   s^   € ð
 ‡~‚~àØ
‡|‚|ÙÜ�K‰KØ:Ø—‘ôð áàð
 �>Š>Øà
‡|‚|à×.Ñ.Ó0Ð0àr&   c                 ó   — t        | d¬«      S )NT©r(   ©r2   ©r'   s    r$   Úshould_build_for_wheel_commandr7   N   s   € ô ˜¨Ô.Ð.r&   c                 ó   — t        | d¬«      S )NFr4   r5   r6   s    r$   Ú should_build_for_install_commandr9   T   s   € ô ˜¨Ô/Ð/r&   c                 óÞ  — | j                   s| j                  sy| j                  r‘| j                  j                  r{| j                   rJ ‚| j                  sJ ‚t	        j
                  | j                  j                  «      }|sJ ‚|j                  | j                  j                  | j                  «      ryy| j                  sJ ‚| j                  j                  «       \  }}t        |«      ryy)zÍ
    Return whether a built InstallRequirement can be stored in the persistent
    wheel cache, assuming the wheel cache is available, and _should_build()
    has determined a wheel needs to be built.
    FT)r0   r/   ÚlinkÚis_vcsr   Úget_backend_for_schemeÚschemeÚis_immutable_rev_checkoutÚurlÚsplitextr%   )r'   Úvcs_backendÚbaseÚexts       r$   Ú_should_cacherE   Z   s³   € ð ‡|‚|˜3Ÿ>š>àà
‡x‚x�C—H‘H—O’Oð —<’<ÐÐØ�~Š~Ðˆ~Ü×0Ñ0°·±·±ÓAˆÙÐˆ{Ø×0Ñ0°·±·±¸s¿~¹~ÔNØØà�8Š8€Oˆ8Ø—‘×!Ñ!Ó#�I€Dˆ#Ü˜$ÔØð r&   Úwheel_cachec                 óÖ   — t        |j                  «      }| j                  sJ ‚|r(t        | «      r|j	                  | j                  «      }|S |j                  | j                  «      }|S )zdReturn the persistent or temporary cache directory where the built
    wheel need to be stored.
    )r!   Ú	cache_dirr;   rE   Úget_path_for_linkÚget_ephem_path_for_link)r'   rF   Úcache_availablerH   s       r$   Ú_get_cache_dirrL   z   sa   € ô ˜;×0Ñ0Ó1€OØ�8Š8€Oˆ8Ùœ=¨Ô-Ø×1Ñ1°#·(±(Ó;ˆ	ð Ðð  ×7Ñ7¸¿¹ÓAˆ	ØÐr&   Ú
wheel_pathc                 ó¬  — t        | j                  xs d«      }t        t        j                  j                  |«      «      }t        |j                  «      |k7  rt        d|›d|j                  ›�«      ‚t        t        |«      |«      }t        |j                  «      }t        |«      t        |j                  «      k7  rt        d|›d|j                  ›�«      ‚|j                  }|€t        d«      ‚	 t        |«      }|t        d«      k\  r*t!        |j                  t        «      st        d|›d�«      ‚y y # t        $ r d|› �}t        |«      ‚w xY w)	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   r.   r   ÚosÚpathÚbasenamer   r   r   ÚstrÚversionr   Úmetadata_versionr   r
   r	   Ú
isinstance)	r'   rM   Úcanonical_nameÚwÚdistÚdist_verstrÚmetadata_version_valuerU   Úmsgs	            r$   Ú_verify_oner]   Š   s_  € Ü& s§x¡x¢~°2Ó6€NÜŒb�g‰g×Ñ˜zÓ*Ó+€AÜ˜Ÿ™Ó  NÒ2Ü"Ø7¸Ð7Ið JØ—6‘6�*ðó
ð 	
ô "¤/°*Ó"=¸~ÓN€DÜ�d—l‘lÓ#€KÜ˜KÓ(Ô,@ÀÇÁÓ,KÒKÜ"Ø7¸°ð GØ—9‘9�-ð!ó
ð 	
ð "×2Ñ2ÐØÐ%ÜÐ9Ó:Ð:ð$Ü"Ð#9Ó:Ðð œ7 5›>Ò)´*¸T¿\¹\Ì7Ô2SÜØ9¸+¸ÈÐPó
ð 	
ð 3TÐ)øô ò $Ø*Ð+AÐ*BÐCˆÜ˜sÓ#Ð#ð$ús   Ã5D9 Ä9EÚ
output_dirÚverifyÚbuild_optionsÚglobal_optionsr0   c                 óœ  — |rdnd}	 t        |«       | j
                  5  t        | ||||«      }ddd«       r|r	 t        | |«       |S |S # t        $ r,}t        j                  d|| j                  |«       Y d}~yd}~ww xY w# 1 sw Y   ŒVxY w# t        t        f$ r,}t        j                  d|| j                  |«       Y d}~yd}~ww xY w)zaBuild one wheel.

    :return: The filename of the built wheel, or None if the build failed.
    r0   ÚwheelzBuilding %s for %s failed: %sNzBuilt %s for %s is invalid: %s)
r   ÚOSErrorr,   Úwarningr.   Ú	build_envÚ_build_one_inside_envr]   r   r   )	r'   r^   r_   r`   ra   r0   ÚartifactÚerM   s	            r$   Ú
_build_onerj   §   sÕ   € ñ &‰z¨7€Hð	Ü�:Ôð 
�‰ñ 
Ü*Ø�˜]¨N¸Hó
ˆ
÷
ñ ‘fð	Ü˜˜ZÔ(ð Ðˆ:Ðøô) ò Ü�‰Ø+ØØ�H‰HØô		
ô ûðú÷
ð 
ûô %Ô&6Ð7ò 	Ü�N‰NÐ;¸XÀsÇxÁxÐQRÔSÜûð	ús9   ˆA ŸB¼B Á	BÁ"A<Á<BÂBÂCÂ"CÃCc           	      ó   — t        d¬«      5 }| j                  sJ ‚| j                  rÒ| j                  sJ ‚| j                  sJ ‚|r t
        j                  d| j                  «       |r t
        j                  d| j                  «       |r8t        | j                  | j                  | j                  |j                  ¬«      }nqt        | j                  | j                  | j                  |j                  ¬«      }n9t        | j                  | j                  | j                  |||j                  ¬«      }|�¶t        j                  j                  |«      }t        j                  j                  ||«      }	 t!        |«      \  }	}
t#        j$                  ||«       t
        j'                  d| j                  ||
|	j)                  «       «       t
        j'                  d|«       |cd d d «       S | j                  st-        | |«       	 d d d «       y # t*        $ r+}t
        j                  d	| j                  |«       Y d }~ŒQd }~ww xY w# 1 sw Y   y xY w)
Nrc   )Úkindz7Ignoring --global-option when building %s using PEP 517z6Ignoring --build-option when building %s using PEP 517)r.   ÚbackendÚmetadata_directoryÚtempd)r.   Úsetup_py_pathr/   ra   r`   ro   z3Created wheel for %s: filename=%s size=%d sha256=%szStored in directory: %sz Building wheel for %s failed: %s)r   r.   Ú
use_pep517rn   Úpep517_backendr,   re   r   rQ   r   r   rp   Úunpacked_source_directoryrP   rR   Újoinr   ÚshutilÚmover-   Ú	hexdigestÚ	ExceptionÚ_clean_one_legacy)r'   r^   r`   ra   r0   Útemp_dirrM   Ú
wheel_nameÚ	dest_pathÚ
wheel_hashÚlengthri   s               r$   rg   rg   Í   sú  € ô 
˜GÔ	$ð =¨Ø�xŠxˆˆxØ�>Š>Ø×)Ò)Ð)Ð)Ø×%Ò%Ð%Ð%ÙÜ—‘ØMÈsÏxÉxôñ Ü—‘ØLÈcÏhÉhôñ Ü1ØŸ™Ø×.Ñ.Ø'*×'=Ñ'=Ø"Ÿ-™-ô	‘
ô 0ØŸ™Ø×.Ñ.Ø'*×'=Ñ'=Ø"Ÿ-™-ô	‘
ô ,Ø—X‘XØ!×/Ñ/Ø×8Ñ8Ø-Ø+Ø—m‘môˆJð Ð!ÜŸ™×)Ñ)¨*Ó5ˆJÜŸ™Ÿ™ Z°Ó<ˆIðÜ%.¨zÓ%:Ñ"�
˜FÜ—‘˜J¨	Ô2Ü—‘ØIØ—H‘HØØØ×(Ñ(Ó*ôô —‘Ð5°zÔBØ ÷g=ñ =ðv �~Š~Ü˜c >Ô2Ø÷{=ð =øôh ò Ü—‘Ø6Ø—H‘HØ÷ñ ûðú÷i=ð =ús7   �E'IÅ5A,HÇ+IÈ	IÈ!H<È7IÈ<IÉIÉIc                 ó  — t        | j                  |¬«      }t        j                  d| j                  «       	 t        |d| j                  ¬«       y# t        $ r# t        j                  d| j                  «       Y yw xY w)N)ra   zRunning setup.py clean for %szpython setup.py clean)Úcommand_descÚcwdTz Failed cleaning build dir for %sF)	r   rp   r,   r-   r.   r   r/   rx   Úerror)r'   ra   Ú
clean_argss      r$   ry   ry     sp   € Ü+Ø×ÑØ%ô€Jô
 ‡K�KÐ/°·±Ô:ðÜØÐ%<À#Ç.Á.õ	
ð øÜò Ü�‰Ð7¸¿¹ÔBÙðús   ¹A Á)A>Á=A>Úrequirementsc                 óŠ  — | sg g fS t         j                  ddj                  d„ | D «       «      «       t        «       5  g g }}| D ]Ý  }|j                  sJ ‚t        ||«      }t        ||||||j                  xr |j                  «      }	|	r†|j                  �|j                  ||j                  «       t        t        |	«      «      |_        |j                  j                  |_        |j                  j                   sJ ‚|j#                  |«       ŒÍ|j#                  |«       Œß 	 ddd«       r=t         j                  ddj                  |D �cg c]  }|j                  ‘Œ c}«      «       r=t         j                  ddj                  |D �cg c]  }|j                  ‘Œ c}«      «       ||fS # 1 sw Y   Œ‹xY wc c}w c c}w )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   ó4   K  — | ]  }|j                   –— Œ y ­w)N)r.   )Ú.0r'   s     r$   ú	<genexpr>zbuild.<locals>.<genexpr>7  s   è ø€ Ò3˜s�#—(•(Ñ3ùs   ‚NzSuccessfully built %sú zFailed to build %s)r,   r-   rt   r   r.   rL   rj   r0   Úpermit_editable_wheelsÚdownload_infoÚrecord_download_originr   r   r;   Ú	file_pathÚlocal_file_pathr+   Úappend)
r„   rF   r_   r`   ra   Úbuild_successesÚbuild_failuresr'   rH   Ú
wheel_files
             r$   Úbuildr“   %  sš  € ñ Ø�2ˆvˆô ‡K�KØ4Ø�	‰	Ñ3 lÔ3Ó3ôô
 
‹ñ +Ø*,¨b˜ˆØò 	+ˆCØ—8’8ˆO�8Ü& s¨KÓ8ˆIÜ#ØØØØØØ—‘Ò; ×!;Ñ!;óˆJñ à×$Ñ$Ð0ð  ×6Ñ6°yÀ#×BSÑBSÔTä¤¨JÓ 7Ó8�”Ø&)§h¡h×&8Ñ&8�Ô#Ø—x‘x×(Ò(Ð(Ð(Ø×&Ñ& sÕ+à×%Ñ% cÕ*ñ1	+÷+ñ: Ü�‰Ø#Ø�H‰H¨/Ö: 3�c—h“hÒ:Ó;ô	
ñ Ü�‰Ø Ø�H‰H¨.Ö9 3�c—h“hÒ9Ó:ô	
ð
 ˜NÐ*Ð*÷Q+ð +üò@ ;ùò
 :s   ½C'F/ÅF;ÆG Æ/F8)HÚ__doc__ÚloggingÚos.pathrP   Úreru   Útypingr   r   r   r   Ú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.operations.build.wheel_legacyr   Úpip._internal.req.req_installr   Úpip._internal.utils.loggingr   Úpip._internal.utils.miscr   r   Ú$pip._internal.utils.setuptools_buildr   Úpip._internal.utils.subprocessr   Úpip._internal.utils.temp_dirr   Úpip._internal.utils.urlsr   Úpip._internal.vcsr   Ú	getLoggerÚ__name__r,   ÚcompileÚ
IGNORECASEr"   ÚBuildResultrS   r!   r%   r2   r7   r9   rE   rL   r]   rj   rg   ry   r“   © r&   r$   ú<module>r±      sX  ðñó Û Û 	Û ß 2Ó 2ç Oß Aå *ß Kß JÝ *Ý ,Ý CÝ NÝ JÝ <Ý 2ß :Ý KÝ :Ý 6Ý 0Ý !à	ˆ×	Ñ	˜8Ó	$€àˆr�z‰zÐ;¸R¿]¹]ÓK€à�DÐ+Ñ,¨dÐ3EÑ.FÐFÑG€ð(˜#ð ( $ó (ðØ	ðàðð 
óðB/Ø	ð/à	ó/ð0Ø	ð0à	ó0ðØ	ðàˆd�^óð@Ø	ðàðð 	óð 
Ð'ð 
°Sð 
¸Tó 
ð:#Ø	ð#àð#ð ð#ð ˜‘9ð	#ð
 ˜‘Ið#ð ð#ð ˆc�]ó#ðLDØ	ðDàðDð ˜‘9ðDð ˜‘Ið	Dð
 ðDð ˆc�]óDðNÐ-ð ¸tÀC¹yð ÈTó ð"=+ØÐ-Ñ.ð=+àð=+ð ð=+ð ˜‘9ð	=+ð
 ˜‘Ið=+ð ô=+r&   