
    Wh(                        d dl mZ d dl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 erd d
lmZ  ej        e          Z G d de
          ZdS )    )annotationsN)Iterable)TYPE_CHECKING)BuildEnvironment)AbstractDistribution)InstallationError)BaseDistribution)runner_with_spinner_message)BuildEnvironmentInstallerc                  j    e Zd ZdZedd            ZddZddZddZd dZ	d dZ
ddZd!dZd"dZdS )#SourceDistributionzRepresents a source distribution.

    The preparation step for these needs metadata for the packages to be
    generated, either using PEP 517 or using the legacy `setup.py egg_info`.
    return
str | Nonec                @    | j         j        sJ | j         j        j        S )z/Identify this requirement uniquely by its link.)reqlinkurl_without_fragmentselfs    s/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/pip/_internal/distributions/sdist.pybuild_tracker_idz#SourceDistribution.build_tracker_id   s!     x}x}11    r	   c                4    | j                                         S )N)r   get_distr   s    r   get_metadata_distributionz,SourceDistribution.get_metadata_distribution    s    x  """r   build_env_installerr   build_isolationboolcheck_build_depsNonec                   | j                                          | j         j        o|}|rC|                     |           | j                                          |                     |           | j         j        o|}|ra| j         j        }|J | j         j                            |          \  }}|r| 	                    d|           |r| 
                    |           | j                                          d S )Nthe backend dependencies)r   load_pyproject_toml
use_pep517_prepare_build_backendisolated_editable_sanity_check_install_build_reqspyproject_requires	build_envcheck_requirements_raise_conflicts_raise_missing_reqsprepare_metadata)	r   r   r   r   should_isolateshould_check_depsr(   conflictingmissings	            r   prepare_distribution_metadataz0SourceDistribution.prepare_distribution_metadata#   s    	$$&&& ,@ 	: ''(;<<< H33555$$%8999 H/D4D 		2!%!<%111#'8#5#H#H"$ $ K  O%%&@+NNN 2((111!!#####r   c                   | j         j        }|J t          |          | j         _        | j         j                            |dd| j                    | j         j                            | j         j                  \  }}|r|                     d|           |rpt          	                    d| j                    t          	                    dd
                    t          t          t          |                                         d S d S )Noverlayzbuild dependencieskindfor_reqz"PEP 517/518 supported requirementsz4Missing build requirements in pyproject.toml for %s.z`The project does not specify a build backend, and pip cannot fall back to setuptools without %s.z and )r   r(   r   r)   install_requirementsr*   requirements_to_checkr+   loggerwarningjoinmapreprsorted)r   r   r(   r0   r1   s        r   r%   z)SourceDistribution._prepare_build_backendJ   s   
 "X8!----.ABB//	0Ddh 	0 	
 	
 	
  $x1DDH* 
  
W  	U!!"FTTT 		NNF   NNASvg7788    		 		r   Iterable[str]c                *   | j         j        5  t          d          }| j         j        }|J |                    |          5  |                                cd d d            cd d d            S # 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nz#Getting requirements to build wheel)r   r)   r
   pep517_backendsubprocess_runnerget_requires_for_build_wheelr   runnerbackends      r   _get_build_requires_wheelz,SourceDistribution._get_build_requires_wheelf   s:   X 	> 	>01VWWFh-G&&&**622 > >;;==> > > > > > >		> 	> 	> 	> 	> 	> 	> 	>> > > > > > > > >		> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>5   5BA/B/A3	3B6A3	7BBBc                *   | j         j        5  t          d          }| j         j        }|J |                    |          5  |                                cd d d            cd d d            S # 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nz&Getting requirements to build editable)r   r)   r
   rB   rC   get_requires_for_build_editablerE   s      r   _get_build_requires_editablez/SourceDistribution._get_build_requires_editablen   sn   X 	A 	A08 F h-G&&&**622 A A>>@@A A A A A A A	A 	A 	A 	A 	A 	A 	A 	AA A A A A A A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	ArI   c                d   | j         j        r-| j         j        r!| j         j        r|                                 }n|                                 }| j         j                            |          \  }}|r|                     d|           | j         j        	                    |dd| j                    d S )Nr"   normalzbackend dependenciesr5   )
r   editablepermit_editable_wheelssupports_pyproject_editablerL   rH   r)   r*   r+   r8   )r   r   
build_reqsr0   r1   s        r   r'   z&SourceDistribution._install_build_reqsx   s     H	:/	: 4	:
 ::<<JJ7799J#x1DDZPPW 	K!!"<kJJJ//X$:DH 	0 	
 	
 	
 	
 	
r   conflicting_withstrconflicting_reqsset[tuple[str, str]]c           
         d}|                     | j        |d                    d t          |          D                                 }t	          |          )NzZSome build dependencies for {requirement} conflict with {conflicting_with}: {description}., c              3  *   K   | ]\  }}| d | V  dS )z is incompatible with N ).0	installedwanteds      r   	<genexpr>z6SourceDistribution._raise_conflicts.<locals>.<genexpr>   sH       " "%Iv <<F<<" " " " " "r   )requirementrS   description)formatr   r<   r?   r   )r   rS   rU   format_stringerror_messages        r   r+   z#SourceDistribution._raise_conflicts   sv    ? 	 &,,-		 " ")/0@)A)A" " "   - 
 
  ...r   r1   set[str]c                    d}|                     | j        d                    t          t          t          |                                        }t          |          )NzASome build dependencies for {requirement} are missing: {missing}.rX   )r_   r1   )ra   r   r<   r=   r>   r?   r   )r   r1   rb   rc   s       r   r,   z&SourceDistribution._raise_missing_reqs   sY    O 	 &,,$))CfWoo4N4N*O*O - 
 
  ...r   N)r   r   )r   r	   )r   r   r   r   r   r   r   r    )r   r   r   r    )r   r@   )rS   rT   rU   rV   r   r    )r1   rd   r   r    )__name__
__module____qualname____doc__propertyr   r   r2   r%   rH   rL   r'   r+   r,   rZ   r   r   r   r      s          2 2 2 X2
# # # #%$ %$ %$ %$N   8> > > >A A A A
 
 
 
*/ / / /"/ / / / / /r   r   )
__future__r   loggingcollections.abcr   typingr   pip._internal.build_envr    pip._internal.distributions.baser   pip._internal.exceptionsr   pip._internal.metadatar	   pip._internal.utils.subprocessr
   r   	getLoggerrf   r:   r   rZ   r   r   <module>ru      s
   " " " " " "  $ $ $ $ $ $             4 4 4 4 4 4 A A A A A A 6 6 6 6 6 6 3 3 3 3 3 3 F F F F F F BAAAAAA		8	$	$R/ R/ R/ R/ R/- R/ R/ R/ R/ R/r   