
    5>qj#                       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jX                  e-      Z. ej^                  dej`                        Z1e2e3e"   e3e"   f   Z4ddZ5	 	 	 	 ddZ6	 	 	 	 	 	 ddZ7ddZ8	 	 	 	 	 	 	 	 	 	 d dZ9	 	 	 	 	 	 	 	 d!dZ:	 	 	 	 	 	 	 	 	 	 d"dZ;y)#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                >    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)ss    Z/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/pip/_internal/wheel_builder.py_contains_egg_infor   "   s    
 ##A&''    c                ,   | j                   s| j                  sy| j                  r| j                  j                         r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.
    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88O8!!#ID#$ r    c                    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$   r0   get_path_for_linkget_ephem_path_for_link)r,   wheel_cachecache_availabler2   s       r   _get_cache_dirr7   L   sa     ;001O88O8=-11#((;	   77A	r    c                   t        | j                  xs d      }t        t        j                  j                  |            }|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   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   \   sZ   &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\\72S9+P
 	
 3T)  $*+A*BCs##$s   ,D0 0E
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.
    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	: 
 F*3
HE
Ff	Z( :%  +HH		
 F F
 %&67 	NN;XsxxQRS	s9   A
 BB 
	A?"A::A?BC	"CC	c           	     4   t        |      5 }| j                  sJ | j                  sJ | j                  sJ |r.t	        | j                  | j                  | j                  |      }n-t        | 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 	 d d d        y # t        $ r+}	t        j!                  d| j                  |	       Y d }	~	9d }	~	ww xY w# 1 sw Y   y xY w)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      sv   
 

	+ ,xxx%%%%!!!!-XX**#&#9#9 /	J ,XX**#&#9#9 /	J !))*5JZ<I%.z%:"
F
 

:y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           	     r   | 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 |      }|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 )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  4   K   | ]  }|j                     y w)N)r:   ).0r,   s     r   	<genexpr>zbuild.<locals>.<genexpr>   s     3s#((3s   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   buildru      s    2v KK4		3l33
 
 +*,b 	+C88O8&sK8I#0	J $$0  66y#BSBSTJ 78&)hh&8&8#xx((((&&s+%%c*-	++6 #HH/:3chh:;	
  HH.93chh9:	

 N**M+ +< ;
 :s   CF#F/F4#F,)r   r>   returnr   )r,   r   rv   zbool | None)r,   r   r5   r
   rv   r>   )r,   r   rB   r>   rv   None)
r,   r   rQ   r>   rR   r   r"   r   rv   
str | None)r,   r   rQ   r>   r"   r   rv   rx   )
rp   zIterable[InstallRequirement]r5   r
   rR   r   rq   r   rv   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listry   r   r0   r7   rI   rU   rP   ru    r    r   <module>r      sX   @ "   	 $ ' O A * K J * , C N < 2 : 0 !			8	$rzz;R]]KD+,d3E.FFG(	D	 	 
:	  	
 D1	11 1 	1h:+.:+:+ :+ 	:+
 :+r    