
    dh.-                       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 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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'm(Z( erddl)m*Z* ddl+m,Z,  ejZ                  e.      Z/d dZ0 G d d      Z1d!dZ2d"dZ3 G d de      Z4 G d d      Z5 G d d      Z6 G d de6      Z7y)#z:Build Environment used for isolation during sdist building    )annotationsN)OrderedDict)Iterable)TracebackType)TYPE_CHECKINGProtocol)Version)__file__)open_spinner)get_platlibget_purelib
get_scheme)get_default_environmentget_environment)VERBOSE)get_requirement)call_subprocess)TempDirectorytempdir_kinds)PackageFinder)InstallRequirementc                    | |k7  r| |fS | fS N )abs     Y/var/www/html/vivango/api/ia/venv/lib/python3.12/site-packages/pip/_internal/build_env.py_dedupr   "   s    !VAq6%!%    c                      e Zd ZddZy)_Prefixc                    || _         d| _        t        d|      }|j                  | _        t        |j                  |j                        | _        y )NF )prefix)	pathsetupr   scriptsbin_dirr   purelibplatliblib_dirs)selfr%   schemes      r   __init__z_Prefix.__init__'   s=    	
Bt,~~v~~v~~>r   N)r%   strreturnNone)__name__
__module____qualname__r.   r   r   r   r!   r!   &   s    ?r   r!   c                     t        j                  t              j                         j                  } | 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_dirr/   osfsdecode)sources    r   get_runnable_pipr?   /   sK     \\,'//188F==? 6{;;v 3344r   c                     t        t        d      rt        j                         } nt               t	               g} | D ch c]!  }t
        j                  j                  |      # c}S c c}w )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.
    getsitepackages)hasattrsiterA   r   r   r<   r%   normcase)system_sitesr%   s     r   _get_system_sitepackagesrF   ?   sP     t&'++- ${}5/;<tBGGT"<<<s   &A'c                  ,    e Zd ZdZ	 	 	 	 	 	 	 	 	 	 ddZy)BuildEnvironmentInstallerz]
    Interface for installing build dependencies into an isolated build
    environment.
    c                    y r   r   )r,   requirementsr$   kindfor_reqs        r   installz!BuildEnvironmentInstaller.installY   s     r   N
rJ   Iterable[str]r$   r!   rK   r/   rL   InstallRequirement | Noner0   r1   )r2   r3   r4   __doc__rM   r   r   r   rH   rH   S   s<    
# 
  + 
r   rH   c                  4    e Zd ZdZddZ	 	 	 	 	 	 	 	 	 	 ddZy)#SubprocessBuildEnvironmentInstallerzD
    Install build dependencies by calling pip in a subprocess.
    c                    || _         y r   )finder)r,   rU   s     r   r.   z,SubprocessBuildEnvironmentInstaller.__init__h   s	    r   c               J   | j                   }t        j                  t               dddd|j                  ddddd	g}t
        j                         t        j                  k  r|j                  d
       n,t
        j                         t        k  r|j                  d       dD ][  }t        |j                  |      }|j                  d|j                  dd      z   dj                  t!        |xs dh            f       ] |j"                  }	|	r4|j                  d|	d   g       |	dd  D ]  }
|j                  d|
g        n|j                  d       |j$                  D ]  }|j                  d|g        |j&                  r|j                  d|j&                  g       |j(                  D ]  }|j                  d|g        |j*                  r|j                  d|j*                  g       |j,                  r|j                  d|j,                  g       |j.                  r|j                  d       |j0                  r|j                  d       |j                  d       |j                  |       t3        d|       5 }t5        |d| |        d d d        y # 1 sw Y   y xY w)!NrM   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--prez--prefer-binaryzInstalling zpip subprocess to install )command_descspinner)rU   sys
executabler?   r%   loggergetEffectiveLevelloggingDEBUGappendr   getattrformat_controlextendreplacejoinsorted
index_urls
find_linksproxytrusted_hostscustom_certclient_certallow_all_prereleasesprefer_binaryr   r   )r,   rJ   r$   rK   rL   rU   argsrg   formatsrl   extra_indexlinkhostr^   s                 r   rM   z+SubprocessBuildEnvironmentInstaller.installk   sn    NN KK')  #
& ##%6KK%%'72KK: 	Nf33^DGKK>11#s;;HHVG$9z:;	 &&
KKz!}-.)!"~ @0+>?@ KK%%% 	0DKK./	0 <<KKFLL12(( 	2DKK)401	2KK6#5#567KK&*<*<=>''KK KK)*DL!Kv./ 	79$@	 	 	s   >JJ"N)rU   r   r0   r1   rN   )r2   r3   r4   rQ   r.   rM   r   r   r   rS   rS   c   sG    F#F F
 F +F 
Fr   rS   c                  h    e Zd ZdZd	dZd
dZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 ddZdd	 	 	 	 	 	 	 	 	 ddZy)BuildEnvironmentzACreates and manages an isolated environment to install build depsc                   || _         t        t        j                  d      t	        fddD              | _        g | _        g | _        t        t        | j
                  j                                     D ]L  }| j                  j                  |j                         | j                  j                  |j                         N t               }t         j"                  j%                  j"                  d      | _        t         j"                  j)                  | j&                        st!        j*                  | j&                         t-        t         j"                  j%                  | j&                  d      dd	      5 }|j/                  t1        j2                  d
      j5                  || j                               d d d        y # 1 sw Y   y xY w)NT)rK   globally_managedc              3     K   | ]9  }|t        t        j                  j                  j                  |            f ; y wr   )r!   r<   r%   rj   ).0nametemp_dirs     r   	<genexpr>z,BuildEnvironment.__init__.<locals>.<genexpr>   s6      %
 7277<<t<=>%
s   ?A)normaloverlayrC   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)
                )rE   r+   )	installerr   r   	BUILD_ENVr   	_prefixes	_bin_dirs	_lib_dirsreversedlistvaluesre   r(   rh   r+   rF   r<   r%   rj   	_site_direxistsmkdiropenwritetextwrapdedentformat)r,   r   r$   rE   fpr   s        @r   r.   zBuildEnvironment.__init__   sL   " m&=&=PTU$ %
-%
 

 %'$&tDNN$9$9$;<= 	3FNN!!&..1NN!!&//2	3 01hmmV<ww~~dnn-HHT^^$GGLL);<cG
 	HH2 &lT^^&L5	 	 	s   =A GGc                   dD ci c]#  }|t         j                  j                  |d       % c}| _        | j                  d d  }| j                  d   }|r.|j                  |j                  t         j                               | j                  g}t         j                  j                  t         j                  j                  |      dt         j                  j                  |      d       y c c}w )N)PATHPYTHONNOUSERSITE
PYTHONPATHr   1)r<   environget	_save_envr   rh   splitpathsepr   updaterj   )r,   r   r%   old_path
pythonpaths        r   	__enter__zBuildEnvironment.__enter__   s     C
 "**..t,,

 ~~a >>&)KKrzz23nn%





-$' jjooj9	

s   (C.c                    | j                   j                         D ];  \  }}|!t        j                  j	                  |d        )|t        j                  |<   = y r   )r   itemsr<   r   pop)r,   exc_typeexc_valexc_tbvarname	old_values         r   __exit__zBuildEnvironment.__exit__  sK     #'.."6"6"8 	0GY 

w-&/

7#		0r   c                |   t               }t               }|r"t        | d      rt        | j                        n	t	               }|D ]  }t        |      }|j                  |j                  j                  ddi      s8|j                  |j                        }|s|j                  |       gt        |j                  t              r|j                   d|j                   }n|j                   d|j                   }|j                  j                  |j                  d      r|j                  ||f        ||fS )zReturn 2 sets:
        - conflicting requirements: set of (installed, wanted) reqs tuples
        - missing requirements: set of reqs
        r   extrar#   z==z===T)prereleases)setrB   r   r   r   r   markerevaluateget_distributionr   add
isinstanceversionr	   	specifiercontains)	r,   reqsmissingconflictingenvreq_strreqdistinstalled_req_strs	            r   check_requirementsz#BuildEnvironment.check_requirements  s    %e 4-  /,. 
   B%g. ::)#**2E2EwPRm2T++CHH5KK(dllG4+.88*Bt||n(E%+.88*C~(F%}}--dll-MOO%6$@AB" G##r   NrL   c                   | j                   |   }|j                  rJ d|_        |sy | j                  j                  ||||       y )NT)rK   rL   )r   r&   r   rM   )r,   rJ   prefix_as_stringrK   rL   r$   s         r   install_requirementsz%BuildEnvironment.install_requirements1  sH      01<<|V$Pr   )r   rH   r0   r1   r0   r1   r   ztype[BaseException] | Noner   zBaseException | Noner   zTracebackType | Noner0   r1   )r   rO   r0   z%tuple[set[tuple[str, str]], set[str]]
rJ   rO   r   r/   rK   r/   rL   rP   r0   r1   )	r2   r3   r4   rQ   r.   r   r   r   r   r   r   r   rz   rz      s    K5n
*
0,
0 &
0 %	
0
 

0 $! $	. $P .2Q#Q Q
 Q +Q 
Qr   rz   c                  `    e Zd ZdZd	dZd	dZ	 	 	 	 	 	 	 	 d
dZd	dZdd	 	 	 	 	 	 	 	 	 ddZy)NoOpBuildEnvironmentz0A no-op drop-in replacement for BuildEnvironmentc                     y r   r   r,   s    r   r.   zNoOpBuildEnvironment.__init__D      r   c                     y r   r   r   s    r   r   zNoOpBuildEnvironment.__enter__G  r   r   c                     y r   r   )r,   r   r   r   s       r   r   zNoOpBuildEnvironment.__exit__J  s     	r   c                     y r   r   r   s    r   cleanupzNoOpBuildEnvironment.cleanupR  r   r   Nr   c                   t               r   )NotImplementedError)r,   rJ   r   rK   rL   s        r   r   z)NoOpBuildEnvironment.install_requirementsU  s     "##r   r   r   r   )	r2   r3   r4   rQ   r.   r   r   r   r   r   r   r   r   r   A  sy    :, & %	
 
 .2$#$ $
 $ +$ 
$r   r   )r   r/   r   r/   r0   ztuple[str] | tuple[str, str])r0   r/   )r0   zset[str])8rQ   
__future__r   rc   r<   r6   rC   r_   r   collectionsr   collections.abcr   typesr   typingr   r   pip._vendor.packaging.versionr	   pipr
   r8   pip._internal.cli.spinnersr   pip._internal.locationsr   r   r   pip._internal.metadatar   r   pip._internal.utils.loggingr   pip._internal.utils.packagingr   pip._internal.utils.subprocessr   pip._internal.utils.temp_dirr   r   "pip._internal.index.package_finderr   pip._internal.req.req_installr   	getLoggerr2   ra   r   r!   r?   rF   rH   rS   rz   r   r   r   r   <module>r      s    @ "  	   
  # $  * 1 ( 3 H H K / 9 : E@@			8	$&? ?5 =(  N NbJQ JQZ$+ $r   