
    e^                         d dl Z d dl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SetTuple)BuildEnvironment)AbstractDistribution)InstallationError)PackageFinder)BaseDistribution)runner_with_spinner_messagec                       e Zd Z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                 4    | j                                         S )N)reqget_dist)selfs    X/var/www/html/api/venv/lib/python3.11/site-packages/pip/_internal/distributions/sdist.pyget_metadata_distributionz,SourceDistribution.get_metadata_distribution   s    x  """    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_backend?   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_wheelY   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   r8   r9   get_requires_for_build_editabler;   s      r   _get_build_requires_editablez/SourceDistribution._get_build_requires_editablea   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r?   c                 t   | j         j        r:| j         j        r.| j                                         r|                                 }n|                                 }| j         j                            |          \  }}|r|                     d|           | j         j        	                    ||dd           d S )Nr   normalzbackend dependenciesr-   )
r   editablepermit_editable_wheelssupports_pyproject_editablerB   r>   r!   r"   r#   r/   )r   r   
build_reqsr(   r)   s        r   r   z&SourceDistribution._install_build_reqsk   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   )requirementrI   description)formatr   r3   r6   r   )r   rI   rJ   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}.rL   )rS   r)   )rU   r   r3   r4   r5   r6   r   )r   r)   rV   rW   s       r   r$   z&SourceDistribution._raise_missing_reqs   sY    O 	 &,,$))CfWoo4N4N*O*O - 
 
  ...r   )__name__
__module____qualname____doc__r
   r   r	   boolr*   r   r   strr>   rB   r   r   r   r#   r$   rN   r   r   r   r      s[        #+; # # # #%$%$ %$ 	%$
 
%$ %$ %$ %$N] t    4>8C= > > > >Ahsm A A A A
- 
D 
 
 
 
&/ #/7:5c?7K/	/ / / /"/3s8 / / / / / / /r   r   )loggingtypingr   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   	getLoggerrY   r1   r   rN   r   r   <module>rh      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		8	$	$H/ H/ H/ H/ H/- H/ H/ H/ H/ H/r   