
    Wh+                       d 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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l/m0Z0 ddl1m2Z2  ej3        e4          Z5 ej6        dej7                  Z8e9e:e#         e:e#         f         Z;d7dZ<d8dZ=d8d Z>d9d"Z?d:d%Z@d;d(ZAd<d0ZBd=d1ZCd>d2ZDd?d6ZEdS )@z:Orchestrator for building wheels from InstallRequirements.    )annotationsN)Iterable)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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    m/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/pip/_internal/wheel_builder.py_contains_egg_infor$   &   s     
 ##A&&'''    reqr   c                X    | j         rJ | j        rdS | j        sJ | j        r| j        S dS )zBReturn whether an InstallRequirement should be built into a wheel.FT)
constraintis_wheel
source_direditablesupports_pyproject_editabler&   s    r#   _should_buildr.   .   sG     ~
| u>
| /..4r%   c                     t          |           S N)r.   r-   s    r#    should_build_for_install_commandr1   @   s     r%   bool | Nonec                r   | j         s| j        s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, and _should_build()
    has determined a wheel needs to be built.
    FT)r+   r*   linkis_vcsr   get_backend_for_schemeschemeis_immutable_rev_checkouturlsplitextr$   )r&   vcs_backendbaseexts       r#   _should_cacher>   F   s     | 3> u
x 	CHO 	 <~0AA00s~NN 	4u8OOO!!##ID#$ 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_dirr4   r>   get_path_for_linkget_ephem_path_for_link)r&   r?   cache_availablerA   s       r#   _get_cache_dirrE   f   sj     ;011O8OOO B=-- B11#(;;		77AA	r%   
wheel_pathNonec                   t          | j        pd          }t          t          j                            |                    }t          |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&   rF   canonical_namewdistdist_verstrmetadata_version_valuerO   msgs	            r#   _verify_onerW   v   s   &sx~266Nbgz**++A  N22"  6 
 
 	
 "/*"="=~NNDdl##KK((,@,K,KKK"! ! !9! !
 
 	
 "2%9:::$"#9:: $ $ $C+ACCs###$ 75>>))*T\72S2S)P+PPP
 
 	
 *)))s   >D D-
output_dirverifybuild_options	list[str]global_optionsr+   
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warningrJ   	build_env_build_one_inside_envrW   r
   r   )	r&   rX   rY   rZ   r\   r+   artifacterF   s	            r#   
_build_onerg      sr    &2zz7H	:   +H		
 	
 	
 ttttt 
 
 
*]NH
 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
  f 	Z(((($&67 	 	 	NN;XsxQRSSS44444	 s>    
A"A

AA99A= A=	B C+"CCc           	     H   t          d          5 }| j        sJ | j        r| j        sJ | j        sJ |r t
                              d| j                   |r t
                              d| j                   |r(t          | j        | j        | j        |j                  }nQt          | j        | j        | j        |j                  }n)t          | j        | 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| j        st-          | |           	 d d d            d S # 1 swxY w Y   d S )
Nr_   )kindz7Ignoring --global-option when building %s using PEP 517z6Ignoring --build-option when building %s using PEP 517)rJ   backendmetadata_directorytempd)rJ   setup_py_pathr*   r\   rZ   rl   z3Created wheel for %s: filename=%s size=%d sha256=%szStored in directory: %sz Building wheel for %s failed: %s)r   rJ   
use_pep517rk   pep517_backendra   rb   r   rL   r   r   rm   unpacked_source_directoryrK   rM   joinr   shutilmoveinfo	hexdigest	Exception_clean_one_legacy)r&   rX   rZ   r\   r+   temp_dirrF   
wheel_name	dest_path
wheel_hashlengthrf   s               r#   rd   rd      s    
G	$	$	$ =x> !	))))%%%% Msx    Lch    1.'*'="-	  

 0.'*'="-	  

 ,X!/8-+m  J !))*55JZ<<I%.z%:%:"
FJ	222IH((**   5zBBB g= = = = = = = =h    6H        ~ 	3c>222{= = = = = = = = = = = = = = = = = =s7   D#H5A8F::
G/!G*%H*G//HHHc                   t          | j        |          }t                              d| j                   	 t          |d| j                   dS # t          $ r$ t                              d| j                   Y dS w xY w)N)r\   zRunning setup.py clean for %szpython setup.py clean)command_desccwdTz Failed cleaning build dir for %sF)	r   rm   ra   rt   rJ   r   r*   rv   error)r&   r\   
clean_argss      r#   rw   rw      s    +%  J
 KK/:::%<#.	
 	
 	
 	
 t   7BBBuus   A *A?>A?requirementsIterable[InstallRequirement]BuildResultc           
     ^   | sg g fS t                               dd                    d | D                                  t                      5  g g }}| D ]}|j        sJ t          ||          }t          ||||||j        o|j                  }	|	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 )
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  $   K   | ]}|j         V  d S r0   rJ   .0r&   s     r#   	<genexpr>zbuild.<locals>.<genexpr>#  s$      33s#(333333r%   NzSuccessfully built %s c                    g | ]	}|j         
S  r   r   s     r#   
<listcomp>zbuild.<locals>.<listcomp>F  s    :::3ch:::r%   zFailed to build %sc                    g | ]	}|j         
S r   r   r   s     r#   r   zbuild.<locals>.<listcomp>K  s    9993ch999r%   )ra   rt   rq   r   rJ   rE   rg   r+   permit_editable_wheelsdownload_inforecord_download_originr   r   r4   	file_pathlocal_file_pathr)   append)
r   r?   rY   rZ   r\   build_successesbuild_failuresr&   rA   
wheel_files
             r#   buildr     s1     2v KK4		33l33333  
 
 + +*,b 	+ 	+C8OOO&sK88I#;!; J  +$0  66y#BSTTTJ 7 788&)h&8#x((((&&s++++%%c****1	++ + + + + + + + + + + + + + +:  
#HH::/:::;;	
 	
 	
  
 HH99.999::	
 	
 	

 N**s   CD,,D03D0)r   r   r   r   )r&   r   r   r   )r&   r   r   r2   )r&   r   r?   r	   r   r   )r&   r   rF   r   r   rG   )r&   r   rX   r   rY   r   rZ   r[   r\   r[   r+   r   r   r]   )r&   r   rX   r   rZ   r[   r\   r[   r+   r   r   r]   )r&   r   r\   r[   r   r   )r   r   r?   r	   rY   r   rZ   r[   r\   r[   r   r   )F__doc__
__future__r   loggingos.pathrK   rerr   collections.abcr   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__ra   compile
IGNORECASEr!   tuplelistr   r$   r.   r1   r>   rE   rW   rg   rd   rw   r   r   r%   r#   <module>r      s   @ @ " " " " " "   				  $ $ $ $ $ $ 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 J J J J J J < < < < < < 2 2 2 2 2 2 : : : : : : : : K K K K K K : : : : : : 6 6 6 6 6 6 0 0 0 0 0 0 ! ! ! ! ! !		8	$	$rz;R]KKD+,d3E.FFG( ( ( (   $      @    
 
 
 
:# # # #LD D D DN   "=+ =+ =+ =+ =+ =+r%   