
    /h(              
          d 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mZmZmZ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 m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z)m*Z* erddl+m,Z,  ej-        e.          Z/de0de0deee0         ee0e0f         f         fdZ1 G d d          Z2de0fdZ3dee0         fdZ4 G d d          Z5 G d de5          Z6dS )z;Build Environment used for isolation during sdist building
    N)OrderedDict)TracebackType)TYPE_CHECKINGIterableListOptionalSetTupleTypeUnion)where)Requirement)Version)__file__)open_spinner)get_platlibget_purelib
get_scheme)get_default_environmentget_environment)call_subprocess)TempDirectorytempdir_kinds)PackageFinderabreturnc                     | |k    r| |fn| fS N )r   r   s     J/var/www/html/venv/lib/python3.11/site-packages/pip/_internal/build_env.py_dedupr"      s    !VVAq66!%    c                       e Zd ZdeddfdZdS )_Prefixpathr   Nc                     || _         d| _        t          d|          }|j        | _        t          |j        |j                  | _        d S )NF )prefix)	r&   setupr   scriptsbin_dirr"   purelibplatliblib_dirs)selfr&   schemes      r!   __init__z_Prefix.__init__$   sD    	
Bt,,,~v~v~>>r#   )__name__
__module____qualname__strr2   r    r#   r!   r%   r%   #   s6        ?S ?T ? ? ? ? ? ?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_dirr6   osfsdecode)sources    r!   get_runnable_piprA   ,   sV     \,''//118F==??  6{{;v 33444r#   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    )r>   r&   normcase).0r&   s     r!   	<setcomp>z+_get_system_sitepackages.<locals>.<setcomp>M   s(    <<<tBGT""<<<r#   )hasattrsiterC   r   r   )system_sitess    r!   _get_system_sitepackagesrK   <   sO     t&'' 6+-- ${}}5<<|<<<<r#   c                   "   e Zd ZdZddZddZdeee                  dee         dee	         ddfd	Z
d
ee         deeeeef                  ee         f         fdZdddee         dededdf
dZededddee         dededdfd            ZdS )BuildEnvironmentzACreates and manages an isolated environment to install build depsr   Nc                    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 }|                    t/          j        d
                              || j                             d d d            d S # 1 swxY w Y   d S )NT)kindglobally_managedc              3      K   | ]8}|t          t          j                            j        |                    fV  9d S r   )r%   r>   r&   join)rF   nametemp_dirs     r!   	<genexpr>z,BuildEnvironment.__init__.<locals>.<genexpr>V   sV       %
 %
 727<<t<<==>%
 %
 %
 %
 %
 %
r#   )normaloverlayrI   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)
                )rJ   r/   )r   r   	BUILD_ENVr   	_prefixes	_bin_dirs	_lib_dirsreversedlistvaluesappendr,   extendr/   rK   r>   r&   rR   	_site_direxistsmkdiropenwritetextwrapdedentformat)r0   r)   rJ   fprT   s       @r!   r2   zBuildEnvironment.__init__S   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   )AF88F<?F<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 r   )r>   environget)rF   rS   s     r!   
<dictcomp>z.BuildEnvironment.__enter__.<locals>.<dictcomp>   s:     
 
 
 "*..t,,
 
 
r#   )PATHPYTHONNOUSERSITE
PYTHONPATHrq   1)
	_save_envr\   rb   splitr>   pathseprc   rn   updaterR   )r0   r&   old_path
pythonpaths       r!   	__enter__zBuildEnvironment.__enter__   s    
 
B
 
 

 ~aaa >&) 	4KKrz22333n%



--$' jooj99 	
 	
 	
 	
 	
r#   exc_typeexc_valexc_tbc                     | j                                         D ]7\  }}|!t          j                            |d            (|t          j        |<   8d S r   )ru   itemsr>   rn   pop)r0   r|   r}   r~   varname	old_values         r!   __exit__zBuildEnvironment.__exit__   s^     #'."6"6"8"8 	0 	0GY 
w----&/
7##		0 	0r#   reqsc                 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]   Nextrar(   z==z===T)prereleases)setrH   r   r]   r   r   markerevaluateget_distributionrS   add
isinstanceversionr   	specifiercontains)	r0   r   missingconflictingenvreq_strreqdistinstalled_req_strs	            r!   check_requirementsz#BuildEnvironment.check_requirements   sU    %%ee 	B 4--////,.. 
   B B!'** :)#*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#   finderr   requirementsprefix_as_stringrO   c                    | j         |         }|j        rJ d|_        |sd S |                     t                      ||||           d S )NT)rO   )r[   r*   _install_requirementsrA   )r0   r   r   r   rO   r)   s         r!   install_requirementsz%BuildEnvironment.install_requirements   so      01< 	F"" 	# 	
 	
 	
 	
 	
r#   pip_runnabler)   c          	      0   t           j        | dddd|j        dg}t                                          t
          j        k    r|                    d           dD ]h}t          |j	        |          }|
                    d|                    d	d
          z   d                    t          |pdh                    f           i|j        }|rB|
                    d|d         g           |dd          D ]}	|
                    d|	g           n|                    d           |j        D ]}
|
                    d|
g           |j        D ]}|
                    d|g           |j        r|                    d           |j        r|                    d           |                    d           |
                    |           dt'                      i}t)          d|           5 }t+          |d| ||           d d d            d S # 1 swxY w Y   d S )Ninstallz--ignore-installedz	--no-userz--prefixz--no-warn-script-locationz-v)	no_binaryonly_binaryz--_-,z:none:z-ir      z--extra-index-urlz
--no-indexz--find-linksz--trusted-hostz--prez--prefer-binary_PIP_STANDALONE_CERTzInstalling zpip subprocess to install )command_descspinnerextra_environ)sys
executabler&   loggergetEffectiveLevelloggingDEBUGra   getattrformat_controlrb   replacerR   sorted
index_urls
find_linkstrusted_hostsallow_all_prereleasesprefer_binaryr   r   r   )r   r   r   r)   rO   argsr   formatsr   extra_indexlinkhostr   r   s                 r!   r   z&BuildEnvironment._install_requirements   s    N K'	
 ##%%66KK: 	 	Nf3^DDGKK>11#s;;;HHVG$9z::;;    &
 	&KKz!}-...)!""~ @ @0+>????@ KK%%%% 	0 	0DKK.////( 	2 	2DKK)401111' 	!KK    	+KK)***DL!!!/9...// 	7@$@@+	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   'HHHr   N)r3   r4   r5   __doc__r2   r{   r   r   BaseExceptionr   r   r   r6   r
   r	   r   r   staticmethodr%   r   r    r#   r!   rM   rM   P   sy       KK4 4 4 4l
 
 
 
*
04./
0 -(
0 '	
0
 

0 
0 
0 
0 $SM $	s5c?#SX-	. $  $  $  $D

 sm
 	
 
 

 
 
 
* 666 sm6 	6 6 
6 6 6 \6 6 6r#   rM   c            
           e Zd ZdZddZddZdeee                  dee         dee	         ddfd	Z
dd
Zdddee         dededdf
dZdS )NoOpBuildEnvironmentz0A no-op drop-in replacement for BuildEnvironmentr   Nc                     d S r   r    r0   s    r!   r2   zNoOpBuildEnvironment.__init__      r#   c                     d S r   r    r   s    r!   r{   zNoOpBuildEnvironment.__enter__!  r   r#   r|   r}   r~   c                     d S r   r    )r0   r|   r}   r~   s       r!   r   zNoOpBuildEnvironment.__exit__$  s	     	r#   c                     d S r   r    r   s    r!   cleanupzNoOpBuildEnvironment.cleanup,  r   r#   r   r   r   r   rO   c                    t                      r   )NotImplementedError)r0   r   r   r   rO   s        r!   r   z)NoOpBuildEnvironment.install_requirements/  s     "###r#   r   )r3   r4   r5   r   r2   r{   r   r   r   r   r   r   r   r6   r   r    r#   r!   r   r     s        ::      4./ -( '	
 
      $$ sm$ 	$ $ 
$ $ $ $ $ $r#   r   )7r   r   r>   r8   rI   r   rh   collectionsr   typesr   typingr   r   r   r   r	   r
   r   r   pip._vendor.certifir   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.versionr   pipr   r:   pip._internal.cli.spinnersr   pip._internal.locationsr   r   r   pip._internal.metadatar   r   pip._internal.utils.subprocessr   pip._internal.utils.temp_dirr   r   "pip._internal.index.package_finderr   	getLoggerr3   r   r6   r"   r%   rA   rK   rM   r   r    r#   r!   <module>r      s     				   



  # # # # # #       S S S S S S S S S S S S S S S S S S S S % % % % % % : : : : : : 1 1 1 1 1 1 ( ( ( ( ( ( 3 3 3 3 3 3 H H H H H H H H H H K K K K K K K K : : : : : : E E E E E E E E A@@@@@@		8	$	$&c &c &eE#Jc3h$?@ & & & &? ? ? ? ? ? ? ?5# 5 5 5 5 =#c( = = = =(H H H H H H H HV$ $ $ $ $+ $ $ $ $ $r#   