
    VPiU                       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Zddl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m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 m!Z! ddl"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 er.ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC  G d ded          ZD ejE        eF          ZGd4d$ZH G d% d&          ZId5d'ZJd6d)ZK G d* d+e          ZL G d, d-          ZM G d. d/          ZN G d0 d1          ZO G d2 d3eO          ZPdS )7z:Build Environment used for isolation during sdist building    )annotationsN)OrderedDict)IterableSequence)AbstractContextManager)nullcontext)StringIO)TracebackType)TYPE_CHECKINGProtocol	TypedDict)Version)__file__)open_rich_spinneropen_spinner)BuildDependencyInstallErrorDiagnosticPipErrorInstallWheelBuildErrorPipError)get_platlibget_purelib
get_scheme)get_default_environmentget_environment)
deprecated)VERBOSEcapture_logging)get_requirement)call_subprocess)TempDirectorytempdir_kinds)
WheelCache)PackageFinder)BuildTracker)InstallRequirement)BaseResolverc                      e Zd ZU ded<   dS )ExtraEnvironzdict[str, str]extra_environN)__name__
__module____qualname____annotations__     k/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pip/_internal/build_env.pyr(   r(   ,   s         %%%%%%r/   r(   F)totalastrbreturntuple[str] | tuple[str, str]c                    | |k    r| |fn| fS Nr.   )r2   r4   s     r0   _dedupr9   3   s    !VVAq66!%r/   c                      e Zd ZddZdS )_Prefixpathr3   r5   Nonec                    || _         d| _        t          d|          }|j        | _        t          |j        |j                  | _        d S )NF )prefix)	r<   setupr   scriptsbin_dirr9   purelibplatliblib_dirs)selfr<   schemes      r0   __init__z_Prefix.__init__8   sD    	
Bt,,,~v~v~>>r/   N)r<   r3   r5   r=   )r*   r+   r,   rI   r.   r/   r0   r;   r;   7   s(        ? ? ? ? ? ?r/   r;   c                     t          j        t                                                    j        } |                                 st          |           S t          j        | dz            S )zGet a file to pass to a Python executable, to run the currently-running pip.

    This is used to run a pip subprocess, for installing requirements into the build
    environment.
    z__pip-runner__.py)	pathlibPathpip_locationresolveparentis_dirr3   osfsdecode)sources    r0   get_runnable_piprT   @   sV     \,''//118F==??  6{{;v 33444r/   set[str]c                     t          t          d          rt          j                    } nt                      t	                      g} d | D             S )zGet system site packages

    Usually from site.getsitepackages,
    but fallback on `get_purelib()/get_platlib()` if unavailable
    (e.g. in a virtualenv created by virtualenv<20)

    Returns normalized set of strings.
    getsitepackagesc                L    h | ]!}t           j                            |          "S r.   )rQ   r<   normcase).0r<   s     r0   	<setcomp>z+_get_system_sitepackages.<locals>.<setcomp>a   s(    <<<tBGT""<<<r/   )hasattrsiterW   r   r   )system_sitess    r0   _get_system_sitepackagesr_   P   sO     t&'' 6+-- ${}}5<<|<<<<r/   c                      e Zd ZdZddZdS )BuildEnvironmentInstallerz]
    Interface for installing build dependencies into an isolated build
    environment.
    requirementsIterable[str]r@   r;   kindr3   for_reqInstallRequirement | Noner5   r=   c                   d S r8   r.   )rG   rb   r@   rd   re   s        r0   installz!BuildEnvironmentInstaller.installj   s	     sr/   N
rb   rc   r@   r;   rd   r3   re   rf   r5   r=   )r*   r+   r,   __doc__rh   r.   r/   r0   ra   ra   d   s2         
     r/   ra   c                  0    e Zd ZdZ	 	 dddZddZddZdS )#SubprocessBuildEnvironmentInstallerzD
    Install build dependencies by calling pip in a subprocess.
    NFfinderr#   build_constraintslist[str] | None build_constraint_feature_enabledboolr5   r=   c                4    || _         |pg | _        || _        d S r8   )rm   _build_constraints!_build_constraint_feature_enabled)rG   rm   rn   rp   s       r0   rI   z,SubprocessBuildEnvironmentInstaller.__init__y   s&     "3"9r1Q...r/   c                    | j         s| j        rdS t          j                            d          }|r|                                sdS t          dddd           dS )z
        Check for deprecation warning: PIP_CONSTRAINT affecting build environments.

        This warns when build-constraint feature is NOT enabled and PIP_CONSTRAINT
        is not empty.
        NPIP_CONSTRAINTzGSetting PIP_CONSTRAINT will not affect build constraints in the future,zto specify build constraints using --build-constraint or PIP_BUILD_CONSTRAINT. To disable this warning without any build constraints set --use-feature=build-constraint or PIP_USE_FEATURE="build-constraint"z26.2)reasonreplacementgone_inissue)rt   rs   rQ   environgetstripr   )rG   pip_constraints     r0   _deprecation_constraint_checkzASubprocessBuildEnvironmentInstaller._deprecation_constraint_check   s     1 	T5L 	F(899 	^%9%9%;%; 	F35
 	
 	
 	
 	
 	
 	
r/   rb   rc   r@   r;   rd   r3   re   rf   c                  |                                   | j        }t          j        t	                      dddd|j        ddddd	g}t                                          t          j	        k    r|
                    d
           n7t                                          t          k    r|
                    d           dD ]h}t          |j        |          }|                    d|                    dd          z   d                    t#          |pdh                    f           i|j        M|j                                        D ]3\  }	}
|                    d|	                    dd          z   |
f           4|j        }|rB|                    d|d         g           |dd          D ]}|                    d|g           n|
                    d           |j        D ]}|                    d|g           |j        r|                    d|j        g           |j        D ]}|                    d|g           |j        r|                    d|j        g           |j        r|                    d|j        g           |j        r|
                    d           | j        r|                    ddg           | j        r8| j        D ]0}|                    d|g           |                    d |g           1i }| j        r| j        sd!d"d#ii}|j        r.|                    d$|j                                        g           |
                    d           |                    |           |r|j        r
d%|j         nd	}tA          d&|           5 }tC          |fd'| | |d(| d d d            d S # 1 swxY w Y   d S ))Nrh   z--ignore-installedz	--no-userz--prefixz--no-warn-script-locationz--disable-pip-version-checkz--no-compilez--targetr?   z-vvz-v)	no_binaryonly_binaryz--_-,z:none:z-ir      z--extra-index-urlz
--no-indexz--find-linksz--proxyz--trusted-hostz--certz--client-certz--prefer-binaryz--use-featurezbuild-constraintz--constraintz--build-constraintr)    _PIP_IN_BUILD_IGNORE_CONSTRAINTS1z--uploaded-prior-toz for Installing zinstalling )command_descspinner)"r   rm   sys
executablerT   r<   loggergetEffectiveLevelloggingDEBUGappendr   getattrformat_controlextendreplacejoinsortedrelease_controlget_ordered_args
index_urls
find_linksproxytrusted_hostscustom_certclient_certprefer_binaryrt   rs   uploaded_prior_to	isoformatnamer   r   )rG   rb   r@   rd   re   rm   argsr   formats	attr_namevaluer   extra_indexlinkhostconstraint_filer)   identify_requirementr   s                      r0   rh   z+SubprocessBuildEnvironmentInstaller.install   s    	**,,,N K')  #
& ##%%66KK%%''722KK: 	 	Nf3^DDGKK>11#s;;;HHVG$9z::;;    !- %+$:$K$K$M$M I I 	5TI$5$5c3$?$??GHHHH&
 	&KKz!}-...)!""~ @ @0+>????@ KK%%%% 	0 	0DKK.////< 	3KKFL1222( 	2 	2DKK)401111 	8KK6#56777 	?KK&*<=>>> 	+KK)*** 1 	?KK*<=>>>" 	E $(#: E E^_=>>>1?CDDDD&(1 	Y$:Q 	Y -/QSV.WXM# 	WKK.0H0R0R0T0TUVVVDL!!! '.F',F"GL"""B 	 ...// 	7G4G1EGG   	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   N;;N?N?)NF)rm   r#   rn   ro   rp   rq   r5   r=   r5   r=   ri   )r*   r+   r,   rj   rI   r   rh   r.   r/   r0   rl   rl   t   sr          /316	R R R R R
 
 
 
:g g g g g gr/   rl   c                  :    e Zd ZdZdddddZd dZd!dZd"dZdS )#"InprocessBuildEnvironmentInstallera  
    Build dependency installer that runs in the same pip process.

    This contains a stripped down version of the install command with
    only the logic necessary for installing build dependencies. The
    finder, session, build tracker, and wheel cache are reused, but new
    instances of everything else are created as needed.

    Options are inherited from the parent install command unless
    they don't make sense for build dependencies (in which case, they
    are hard-coded, see comments below).
    r.   r   )rn   	verbosityrm   r#   build_trackerr$   wheel_cacher"   rn   Sequence[InstallRequirement]r   intr5   r=   c                   ddl m} || _        || _        || _        d| _        t          dd          } || ||j        j        |j	        ||dd ddddddd	          | _
        d S )
Nr   )RequirementPreparerzbuild-env-installTrd   globally_managedr?   Foff)build_isolation_installerrm   session	build_dirr   r   src_dirdownload_dirbuild_isolationcheck_build_depsprogress_barrequire_hashesuse_user_site
lazy_wheellegacy_resolver) pip._internal.operations.preparer   _finderrs   _wheel_cache_levelr    _link_collectorr   r<   	_preparer)rG   rm   r   r   rn   r   r   r   s           r0   rI   z+InprocessBuildEnvironmentInstaller.__init__  s     	IHHHHH"3'!':TRRR	,,&**2n' " !!)
 
 
r/   rb   rc   r@   r;   rd   r3   re   rf   c                  t                               t                     o
| j        dk    }|r!t	                      }t          d|           }nDt          t                                t                      }}t                               d|           	 | xj        dz  c_        |5  |5 }| 	                    ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   nC# t          $ r}	t                               t          j        |                                                     t                               d|	ddi	           t                               d
           t          |||	d          d}	~	wt           $ r}	t          j        |                                                                          }
|sMd}
t%          |	t&                    rt                               d|	           nt                               d           t          |||	|
          d}	~	ww xY w| xj        dz  c_        dS # | xj        dz  c_        w xY w)z@Install entrypoint. Manages output capturing and error handling.r   r   zInstalling %s ...r   Nz%srichT)extrar?   )cause	log_lineszpip crashed unexpectedly)r   isEnabledForr   r   r   r   r   r	   info_install_implr   textwrapdedentgetvalueerrorr   	Exception
splitlines
isinstancer   	exception)rG   rb   r@   rd   re   capture_logscapture_ctxr   streamexclogss              r0   rh   z*InprocessBuildEnvironmentInstaller.install@  s    "..w777LDK1<L 	3 5D4E4EK,=>RD>R>R,S,SGG $/xzz#:#:KMMKKK+T222	KK1KK 9 9+ 9""<8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 " 	 	 	 KK(9(9::;;;LLs64.L999KKOOO-SD     	 	 	%-_V__5F5F%G%G%R%R%T%TD A c8,, ALLs++++$$%?@@@-SD   	 KK1KKKKDKK1KKKKKKs   C0 &C#)C C#C	C#C	C#C0 #C''C0 *C'+C0 .I 0
H0:B
FH0BH++H00I Ic           
        ddl m} ddlm} ddlm ddlm} fd|D             }|                    | j	                   | 
                                }|                    |d          }| j                            |j                                                   d	 |j        D             }	 ||	| j        d
          \  }
}|rt%          |           ||                    |          |j        dddddd          }t+          t-          |j                            } |||          x}rt0                              |           dS dS )z$Core build dependency install logic.r   )installed_packages_summary)install_given_reqs)install_req_from_line)buildc                *    g | ]} |d           S )T)user_suppliedr.   )rZ   reqr   s     r0   
<listcomp>zDInprocessBuildEnvironmentInstaller._install_impl.<locals>.<listcomp>{  s*    XXXC&&s$???XXXr/   T)check_supported_wheelsc                     g | ]}|j         	|S r.   )is_wheel)rZ   rs     r0   r   zDInprocessBuildEnvironmentInstaller._install_impl.<locals>.<listcomp>  s/     
 
 
1:

 
 
r/   )verifyNFr   )r@   roothomewarn_script_locationr   	pycompiler   )pip._internal.commands.installr   pip._internal.reqr   pip._internal.req.constructorsr   pip._internal.wheel_builderr   r   rs   _make_resolverrN   r    prepare_linked_requirements_morerb   valuesrequirements_to_installr   r   get_installation_orderr<   r   listrF   r   r   )rG   rb   r@   r   r   r   ireqsresolverresolved_setreqs_to_buildr   build_failures	installedenvsummaryr   s                  @r0   r   z0InprocessBuildEnvironmentInstaller._install_implt  s   MMMMMM888888HHHHHH555555XXXX<XXXT,---&&((''d'KK77%,,..	
 	
 	

 
#;
 
 
 "E-1B4PPP> 	9(888&&++L99;!& 
 
 
	 d6?334400C@@@7 	!KK     	! 	!r/   r&   c                d    ddl m} ddlm}  ||| j        | j        | j        ddddddd          S )	z'Create a new resolver for one time use.r   )install_req_from_req_string)ResolverFTzto-satisfy-onlyN)make_install_reqpreparerrm   r   ignore_requires_pythonr   ignore_dependenciesignore_installedforce_reinstallupgrade_strategypy_version_info)r   r  ,pip._internal.resolution.resolvelib.resolverr  r   r   r   )rG   r  r  s      r0   r   z1InprocessBuildEnvironmentInstaller._make_resolver  sj     	ONNNNNIIIIIIx8^<)#( %!!. 
 
 
 	
r/   N)rm   r#   r   r$   r   r"   rn   r   r   r   r5   r=   ri   )rb   rc   r@   r;   r5   r=   )r5   r&   )r*   r+   r,   rj   rI   rh   r   r   r.   r/   r0   r   r   
  s         & ;=&
 &
 &
 &
 &
 &
P2 2 2 2h'! '! '! '!R
 
 
 
 
 
r/   r   c                  @    e Zd ZdZddZddZddZddZddd dZdS )!BuildEnvironmentzACreates and manages an isolated environment to install build deps	installerra   r5   r=   c                   || _         t          t          j        d          t	          fddD                       | _        g | _        g | _        t          t          | j        
                                                    D ]@}| j                            |j                   | j                            |j                   At                      }t           j                            j        d          | _        t           j                            | j                  st!          j        | j                   t-          t           j                            | j        d          dd	          5 }|                    t1          j        d
                              || j                             d d d            d S # 1 swxY w Y   d S )NTr   c              3     K   | ]8}|t          t          j                            j        |                    fV  9d S r8   )r;   rQ   r<   r   )rZ   r   temp_dirs     r0   	<genexpr>z,BuildEnvironment.__init__.<locals>.<genexpr>  sV       %
 %
 727<<t<<==>%
 %
 %
 %
 %
 %
r/   )normaloverlayr]   zsitecustomize.pywzutf-8)encodinga  
                import os, site, sys

                # First, drop system-sites related paths.
                original_sys_path = sys.path[:]
                known_paths = set()
                for path in {system_sites!r}:
                    site.addsitedir(path, known_paths=known_paths)
                system_paths = set(
                    os.path.normcase(path)
                    for path in sys.path[len(original_sys_path):]
                )
                original_sys_path = [
                    path for path in original_sys_path
                    if os.path.normcase(path) not in system_paths
                ]
                sys.path = original_sys_path

                # Second, add lib directories.
                # ensuring .pth file are processed.
                for path in {lib_dirs!r}:
                    assert not path in sys.path
                    site.addsitedir(path)
                )r^   rF   )r  r    r!   	BUILD_ENVr   	_prefixes	_bin_dirs	_lib_dirsreversedr   r   r   rC   r   rF   r_   rQ   r<   r   	_site_direxistsmkdiropenwriter   r   format)rG   r  r@   r^   fpr  s        @r0   rI   zBuildEnvironment.__init__  s   " m&=PTUUU$ %
 %
 %
 %
-%
 %
 %
 
 

 %'$&tDN$9$9$;$;<<== 	3 	3FN!!&.111N!!&/2222
 011hmV<<w~~dn-- 	%HT^$$$GLL);<<cG
 
 
 	HH 2 &lT^&LL5  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0AF??GGc                   d dD             | _         | j        d d          }| j         d         }|r2|                    |                    t          j                             | j        g}t          j                            t          j        	                    |          dt          j        	                    |          d           d S )Nc                P    i | ]#}|t           j                            |d           $S r8   )rQ   r{   r|   )rZ   r   s     r0   
<dictcomp>z.BuildEnvironment.__enter__.<locals>.<dictcomp>  s:     
 
 
 "*..t,,
 
 
r/   )PATHPYTHONNOUSERSITE
PYTHONPATHr,  r   )
	_save_envr  r   splitrQ   pathsepr"  r{   updater   )rG   r<   old_path
pythonpaths       r0   	__enter__zBuildEnvironment.__enter__  s    
 
B
 
 

 ~aaa >&) 	4KKrz22333n%



--$' jooj99 	
 	
 	
 	
 	
r/   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonec                    | j                                         D ]7\  }}|!t          j                            |d            (|t          j        |<   8d S r8   )r/  itemsrQ   r{   pop)rG   r6  r8  r:  varname	old_values         r0   __exit__zBuildEnvironment.__exit__  s^     #'."6"6"8"8 	0 	0GY 
w----&/
7##		0 	0r/   reqsrc   %tuple[set[tuple[str, str]], set[str]]c                j   t                      }t                      }|rt          | d          rt          | j                  nt	                      }|D ]}t          |          }|j        |j                            ddi          s5|                    |j	                  }|s|
                    |           gt          |j        t                    r|j	         d|j         }n|j	         d|j         }|j                            |j        d          s|
                    ||f           ||fS )	zReturn 2 sets:
        - conflicting requirements: set of (installed, wanted) reqs tuples
        - missing requirements: set of reqs
        r   Nr   r?   z==z===T)prereleases)setr\   r   r   r   r   markerevaluateget_distributionr   addr   versionr   	specifiercontains)	rG   rB  missingconflictingr  req_strr   distinstalled_req_strs	            r0   check_requirementsz#BuildEnvironment.check_requirements  sU    %%ee 	B 4--////,.. 
   B B%g.. :)#*2E2EwPRm2T2T)++CH55 KK(((dlG44 G+.8(E(Et|(E(E%%+.8(F(F(F(F%}--dl-MM BOO%6$@AAAG##r/   Nre   rb   prefix_as_stringr3   rd   re   rf   c                   | j         |         }|j        rJ d|_        |sd S | j                            ||||           d S )NT)rd   re   )r  rA   r  rh   )rG   rb   rU  rd   re   r@   s         r0   install_requirementsz%BuildEnvironment.install_requirements2  sX      01< 	F|V$PPPPPr/   )r  ra   r5   r=   r   r6  r7  r8  r9  r:  r;  r5   r=   )rB  rc   r5   rC  
rb   rc   rU  r3   rd   r3   re   rf   r5   r=   )	r*   r+   r,   rj   rI   r5  rA  rS  rW  r.   r/   r0   r  r    s        KK5 5 5 5n
 
 
 
*
0 
0 
0 
0 $  $  $  $P .2Q Q Q Q Q Q Q Qr/   r  c                  @    e Zd ZdZddZddZddZddZddddZdS )NoOpBuildEnvironmentz0A no-op drop-in replacement for BuildEnvironmentr5   r=   c                    d S r8   r.   rG   s    r0   rI   zNoOpBuildEnvironment.__init__E      r/   c                    d S r8   r.   r]  s    r0   r5  zNoOpBuildEnvironment.__enter__H  r^  r/   r6  r7  r8  r9  r:  r;  c                    d S r8   r.   )rG   r6  r8  r:  s       r0   rA  zNoOpBuildEnvironment.__exit__K  s	     	r/   c                    d S r8   r.   r]  s    r0   cleanupzNoOpBuildEnvironment.cleanupS  r^  r/   NrT  rb   rc   rU  r3   rd   re   rf   c                   t                      r8   )NotImplementedError)rG   rb   rU  rd   re   s        r0   rW  z)NoOpBuildEnvironment.install_requirementsV  s     "###r/   r   rX  rY  )	r*   r+   r,   rj   rI   r5  rA  rb  rW  r.   r/   r0   r[  r[  B  s        ::             .2$ $ $ $ $ $ $ $r/   r[  )r2   r3   r4   r3   r5   r6   )r5   r3   )r5   rU   )Qrj   
__future__r   r   rQ   rK   r]   r   r   collectionsr   collections.abcr   r   
contextlibr   ContextManagerr   ior	   typesr
   typingr   r   r   pip._vendor.packaging.versionr   pipr   rM   pip._internal.cli.spinnersr   r   pip._internal.exceptionsr   r   r   r   pip._internal.locationsr   r   r   pip._internal.metadatar   r   pip._internal.utils.deprecationr   pip._internal.utils.loggingr   r   pip._internal.utils.packagingr   pip._internal.utils.subprocessr   pip._internal.utils.temp_dirr    r!   pip._internal.cacher"   "pip._internal.index.package_finderr#   ,pip._internal.operations.build.build_trackerr$   pip._internal.req.req_installr%   pip._internal.resolution.baser&   r(   	getLoggerr*   r   r9   r;   rT   r_   ra   rl   r   r  r[  r.   r/   r0   <module>r~     s   @ @ " " " " " "  				   



  # # # # # # . . . . . . . . ? ? ? ? ? ? " " " " " "             5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 ( ( ( ( ( ( F F F F F F F F            I H H H H H H H H H K K K K K K K K 6 6 6 6 6 6 @ @ @ @ @ @ @ @ 9 9 9 9 9 9 : : : : : : E E E E E E E E &......@@@@@@IIIIII@@@@@@::::::& & & & &y & & & & 
	8	$	$& & & &? ? ? ? ? ? ? ?5 5 5 5 = = = =(        S S S S S S S Slh
 h
 h
 h
 h
 h
 h
 h
VJQ JQ JQ JQ JQ JQ JQ JQZ$ $ $ $ $+ $ $ $ $ $r/   