
    Wh.-                       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j-        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          Z7dS ))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)InstallRequirementastrbreturntuple[str] | tuple[str, str]c                    | |k    r| |fn| fS N )r   r   s     i/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/pip/_internal/build_env.py_dedupr!   "   s    !VVAq66!%    c                      e Zd ZddZdS )_Prefixpathr   r   Nonec                    || _         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"   N)r%   r   r   r&   )__name__
__module____qualname__r2   r   r"   r    r$   r$   &   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_dirr   osfsdecode)sources    r    get_runnable_pipr@   /   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   )r=   r%   normcase).0r%   s     r    	<setcomp>z+_get_system_sitepackages.<locals>.<setcomp>P   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S )BuildEnvironmentInstallerz]
    Interface for installing build dependencies into an isolated build
    environment.
    requirementsIterable[str]r)   r$   kindr   for_reqInstallRequirement | Noner   r&   c                   d S r   r   )r0   rN   r)   rP   rQ   s        r    installz!BuildEnvironmentInstaller.installY   s	     sr"   N
rN   rO   r)   r$   rP   r   rQ   rR   r   r&   )r3   r4   r5   __doc__rT   r   r"   r    rM   rM   S   s2         
     r"   rM   c                  "    e Zd ZdZddZddZdS )#SubprocessBuildEnvironmentInstallerzD
    Install build dependencies by calling pip in a subprocess.
    finderr   r   r&   c                    || _         d S r   )rY   )r0   rY   s     r    r2   z,SubprocessBuildEnvironmentInstaller.__init__h   s    r"   rN   rO   r)   r$   rP   r   rQ   rR   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        }	|	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           |                    |           t3          d|           5 }t5          |d| |            d d d            d S # 1 swxY w Y   d S )!NrT   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)rY   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   )r0   rN   r)   rP   rQ   rY   argsrl   formatsrq   extra_indexlinkhostrc   s                 r    rT   z+SubprocessBuildEnvironmentInstaller.installk   sT    N K')  #
& ##%%66KK%%''722KK: 	 	Nf3^DDGKK>11#s;;;HHVG$9z::;;    &
 	&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    	+KK)***DL!!!...// 	7@$@@   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   J22J69J6N)rY   r   r   r&   rU   )r3   r4   r5   rV   r2   rT   r   r"   r    rX   rX   c   sL            F F F F F Fr"   rX   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	installerrM   r   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 )NT)rP   globally_managedc              3     K   | ]8}|t          t          j                            j        |                    fV  9d S r   )r$   r=   r%   ro   )rF   nametemp_dirs     r    	<genexpr>z,BuildEnvironment.__init__.<locals>.<genexpr>   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   r   	BUILD_ENVr   	_prefixes	_bin_dirs	_lib_dirsreversedlistvaluesrj   r,   rm   r/   rK   r=   r%   ro   	_site_direxistsmkdiropenwritetextwrapdedentformat)r0   r   r)   rJ   fpr   s        @r    r2   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 r   )r=   environget)rF   r   s     r    
<dictcomp>z.BuildEnvironment.__enter__.<locals>.<dictcomp>   s:     
 
 
 "*..t,,
 
 
r"   )PATHPYTHONNOUSERSITE
PYTHONPATHr   1)
	_save_envr   rm   splitr=   pathsepr   r   updatero   )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type[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonec                    | j                                         D ]7\  }}|!t          j                            |d            (|t          j        |<   8d S r   )r   itemsr=   r   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"   reqsrO   %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   Nextrar(   z==z===T)prereleases)setrH   r   r   r   r   markerevaluateget_distributionr   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%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rQ   rN   prefix_as_stringr   rP   rQ   rR   c                   | j         |         }|j        rJ d|_        |sd S | j                            ||||           d S )NT)rP   rQ   )r   r*   r   rT   )r0   rN   r   rP   rQ   r)   s         r    install_requirementsz%BuildEnvironment.install_requirements1  sX      01< 	F|V$PPPPPr"   )r   rM   r   r&   r   r&   r   r   r   r   r   r   r   r&   )r   rO   r   r   
rN   rO   r   r   rP   r   rQ   rR   r   r&   )	r3   r4   r5   rV   r2   r   r   r   r   r   r"   r    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 BuildEnvironmentr   r&   c                    d S r   r   r0   s    r    r2   zNoOpBuildEnvironment.__init__D      r"   c                    d S r   r   r   s    r    r   zNoOpBuildEnvironment.__enter__G  r   r"   r   r   r   r   r   r   c                    d S r   r   )r0   r   r   r   s       r    r   zNoOpBuildEnvironment.__exit__J  s	     	r"   c                    d S r   r   r   s    r    cleanupzNoOpBuildEnvironment.cleanupR  r   r"   Nr   rN   rO   r   r   rP   rQ   rR   c                   t                      r   )NotImplementedError)r0   rN   r   rP   rQ   s        r    r   z)NoOpBuildEnvironment.install_requirementsU  s     "###r"   r   r   r   )	r3   r4   r5   rV   r2   r   r   r   r   r   r"   r    r   r   A  s        ::             .2$ $ $ $ $ $ $ $r"   r   )r   r   r   r   r   r   )r   r   )r   rA   )8rV   
__future__r   rh   r=   r7   rI   rd   r   collectionsr   collections.abcr   typesr   typingr   r   pip._vendor.packaging.versionr	   pipr
   r9   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   	getLoggerr3   rf   r!   r$   r@   rK   rM   rX   r   r   r   r"   r    <module>r      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 / / / / / / 9 9 9 9 9 9 : : : : : : E E E E E E E E A@@@@@@@@@@@@		8	$	$& & & &? ? ? ? ? ? ? ?5 5 5 5 = = = =(        N N N N N N N NbJQ JQ JQ JQ JQ JQ JQ JQZ$ $ $ $ $+ $ $ $ $ $r"   