
    if5                         d dl Z d dlmZmZ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  e j        e          Z G d	 d
e	          ZdS )    N)IterableOptionalSetTuple)BuildEnvironment)AbstractDistribution)InstallationError)PackageFinder)BaseDistribution)runner_with_spinner_messagec                       e Zd ZdZedee         fd            ZdefdZ	de
dededdfd	Zde
ddfd
Zdee         fdZdee         fdZde
ddfdZdedeeeef                  ddfdZdee         ddf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`.
    returnc                 @    | 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/html/env/lib/python3.11/site-packages/pip/_internal/distributions/sdist.pybuild_tracker_idz#SourceDistribution.build_tracker_id   s      x}}x}11    c                 4    | j                                         S )N)r   get_distr   s    r   get_metadata_distributionz,SourceDistribution.get_metadata_distribution   s    x  """r   finderbuild_isolationcheck_build_depsNc                    | 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$$V,,, 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                  \  }}|r|                     d|           |rpt          	                    d| j                    t          	                    dd
                    t          t          t          |                                         d S d S )Noverlayzbuild dependencieskindz"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&   r.   r/   s        r   r#   z)SourceDistribution._prepare_build_backendE   s    "X8!----////&	8L 	0 	
 	
 	
  $x1DDH* 
  
W  	U!!"FTTT 		NNF   NNASvg7788    		 		r   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_wheel_   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   r>   r?   get_requires_for_build_editablerA   s      r   _get_build_requires_editablez/SourceDistribution._get_build_requires_editableg   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rE   c                 t   | j         j        r:| j         j        r.| j                                         r|                                 }n|                                 }| j         j                            |          \  }}|r|                     d|           | j         j        	                    ||dd           d S )Nr    normalzbackend dependenciesr3   )
r   editablepermit_editable_wheelssupports_pyproject_editablerH   rD   r'   r(   r)   r5   )r   r   
build_reqsr.   r/   s        r   r%   z&SourceDistribution._install_build_reqsq   s    
 H	:/	: 4466	:
 ::<<JJ7799J#x1DDZPPW 	K!!"<kJJJ//GX,B 	0 	
 	
 	
 	
 	
r   conflicting_withconflicting_reqsc           
          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   )requirementrO   description)formatr   r9   r<   r	   )r   rO   rP   format_stringerror_messages        r   r)   z#SourceDistribution._raise_conflicts   sv    ? 	 &,,-		 " ")/0@)A)A" " "   - 
 
  ...r   r/   c                     d}|                     | j        d                    t          t          t          |                                        }t          |          )NzASome build dependencies for {requirement} are missing: {missing}.rR   )rY   r/   )r[   r   r9   r:   r;   r<   r	   )r   r/   r\   r]   s       r   r*   z&SourceDistribution._raise_missing_reqs   sY    O 	 &,,$))CfWoo4N4N*O*O - 
 
  ...r   )__name__
__module____qualname____doc__propertyr   strr   r   r   r
   boolr0   r#   r   rD   rH   r%   r   r   r)   r*   rT   r   r   r   r      s         2(3- 2 2 2 X2
#+; # # # #%$%$ %$ 	%$
 
%$ %$ %$ %$N] t    4>8C= > > > >Ahsm A A A A
- 
D 
 
 
 
&/ #/7:5c?7K/	/ / / /"/3s8 / / / / / / /r   r   )loggingtypingr   r   r   r   pip._internal.build_envr    pip._internal.distributions.baser   pip._internal.exceptionsr	   "pip._internal.index.package_finderr
   pip._internal.metadatar   pip._internal.utils.subprocessr   	getLoggerr_   r7   r   rT   r   r   <module>ro      s     1 1 1 1 1 1 1 1 1 1 1 1 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		8	$	$N/ N/ N/ N/ N/- N/ N/ N/ N/ N/r   