
    'j#                    
   S r SSKJr  SSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJrJr  SSKJrJr  SSKJr  SS	KJrJr  SS
KJrJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&J'r'  SSK(J)r)  SSK*J+r+  \RX                  " \-5      r.\R^                  " S\R`                  5      r1\2\3\"   \3\"   4   r4SS jr5    SS jr6      SS jr7SS jr8          S S jr9        S!S jr:          S"S jr;g)#z: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_.!+-]+)c                >    [        [        R                  U 5      5      $ )zbDetermine whether the string looks like an egg_info.

:param s: The string to parse. E.g. foo-2.1
)bool_egg_info_research)ss    S/var/www/html/KUNJ/venv/lib/python3.13/site-packages/pip/_internal/wheel_builder.py_contains_egg_infor   "   s    
 ##A&''    c                   U R                   (       d  U R                  (       d  gU R                  (       a   U R                  R                  5       (       a  gU R                  (       a  U R                  R                  (       a  U R                   (       a   eU R                  (       d   e[
        R                  " U R                  R                  5      nU(       d   eUR                  U R                  R                  U R                  5      (       a  ggU R                  (       d   eU R                  R                  5       u  p#[        U5      (       a  gg)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   )reqvcs_backendbaseexts       r   _should_cacher0   *   s     ||3>>
xxCHH,,..
xxCHHOO <<~~~00A{00s~~NN88O8!!#ID$ r    c                    [        UR                  5      nU R                  (       d   eU(       a-  [        U 5      (       a  UR	                  U R                  5      nU$ UR                  U R                  5      nU$ )z\Return the persistent or temporary cache directory where the built
wheel need to be stored.
)r   	cache_dirr$   r0   get_path_for_linkget_ephem_path_for_link)r,   wheel_cachecache_availabler2   s       r   _get_cache_dirr7   L   sd     ;001O88O8=--11#((;	   77A	r    c                   [        U R                  =(       d    S5      n[        [        R                  R                  U5      5      nUR                  U:w  a  [        SU< SUR                  < 35      e[        [        U5      U5      n[        UR                  5      n[        U5      [        UR                  5      :w  a  [        SU< SUR                  < 35      eUR                  nUc  [        S5      e [        U5      nU[        S5      :  a0  [!        UR                  [        5      (       d  [        SU< S35      eg g ! [         a    SU 3n[        U5      ef = f)	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   strversionr   metadata_versionr   r	   r   
isinstance)	r,   
wheel_pathcanonical_namewdistdist_verstrmetadata_version_valuer@   msgs	            r   _verify_onerI   \   s]   &sxx~26Nbggz*+Avv"77I J66*
 	
 "/*"=~NDdll#KK(,@,KK"7 G99-!
 	
 "22%9::$"#9: 75>)*T\\72S2S9+P
 	
 3T)  $*+A*BCs##$s   8E Ec                   U(       a  SOSn [        U5        U R
                     [        XU5      nSSS5        W(       a  U(       a   [        X5        U$ U$ ! [         a,  n[        R                  SUU R                  U5         SnAgSnAff = f! , (       d  f       Ne= f! [        [        4 a+  n[        R                  SX@R                  U5         SnAgSnAff = f)zYBuild 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_envrI   r   r   )r,   
output_dirverifyr"   artifacterB   s          r   
_build_onerU   y   s     &z7H	: 
*3HE
 
f	( :%  +HH		
  

 %&67 	NN;XxxQRS	s:   A BB! 
B!"BB
B!C1!CCc           	     T   [        US9 nU R                  (       d   eU R                  (       d   eU R                  (       d   eU(       a+  [	        U R                  U R                  U R                  US9nO*[        U R                  U R                  U R                  US9nUb  [        R                  R                  U5      n[        R                  R                  X5      n [        U5      u  px[        R                  " XF5        [        R                  SU R                  UUUR                  5       5        [        R                  SU5        UsS S S 5        $  S S S 5        g ! [         a+  n	[        R!                  SU R                  U	5         S n	A	N:S n	A	ff = f! , (       d  f       g = f)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:   rY   pep517_backendr   r   r;   r<   r=   joinr   replacerM   info	hexdigest	ExceptionrN   )
r,   rQ   r"   rZ   rB   
wheel_name	dest_path
wheel_hashlengthrT   s
             r   rP   rP      se   
 

	+xxx%%%%!!!!-XX**#&#9#9 /	J ,XX**#&#9#9 /	J !))*5JZ<I%.z%:"

 

:1IHH((* 5zB K 
,	+X Y 
,	+L  6HH M 
,	+s7   CF"A+E!F!
F+!FFFF
F'c           	        U (       d  / / 4$ [         R                  SSR                  S U  5       5      5        [        5          / / pTU  H  nUR                  (       d   e[        Xa5      n[        UUUUR                  =(       a    U5      nU(       a  UR                  b  UR                  XvR                  5        [        [        U5      5      Ul        UR                  R                  Ul        UR                  R                  (       d   eUR!                  U5        M  UR!                  U5        M     SSS5        W(       a?  [         R                  SSR                  U Vs/ s H  ofR                  PM     sn5      5        W(       a?  [         R                  SSR                  U Vs/ s H  ofR                  PM     sn5      5        XE4$ ! , (       d  f       N= fs  snf s  snf )zBuild 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  8   #    U  H  oR                   v   M     g 7f)N)r:   ).0r,   s     r   	<genexpr>build.<locals>.<genexpr>   s     3ls((ls   NzSuccessfully built %s zFailed to build %s)rM   r^   r\   r   r:   r7   rU   r"   download_inforecord_download_originr   r   r$   	file_pathlocal_file_pathis_wheelappend)	requirementsr5   rR   allow_editablesbuild_successesbuild_failuresr,   r2   
wheel_files	            r   buildrv      s|    2v KK4		3l33
 
*,bC88O8&s8I#0	J $$0  66yBSBSTJ 78&)hh&8&8#xx((((&&s+%%c*-   
6 #HH/:/3hh/:;	
  HH.9.3hh.9:	

 **M 
< ;
 :s   C0G	 G&G	
G)r   r>   returnr   )r,   r   rw   zbool | None)r,   r   r5   r
   rw   r>   )r,   r   rB   r>   rw   None)
r,   r   rQ   r>   rR   r   r"   r   rw   
str | None)r,   r   rQ   r>   r"   r   rw   ry   )
rq   zIterable[InstallRequirement]r5   r
   rR   r   rr   r   rw   BuildResult)<__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__rM   compile
IGNORECASEr   tuplelistrz   r   r0   r7   rI   rU   rP   rv    r    r   <module>r      sT   @ "   	 $ ' O A * K J * , C N < 2 : 0 !			8	$zz;R]]KD+,d3E.FFG(	D	 	 
:	  	
 D1	11 1 	1h:+.:+:+ :+ 	:+
 :+r    