
    Ni>                       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	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mZ ddlmZ ddlmZ ddlmZ ddlmZ ej        rdd	lmZ ej        d
         Z ej         e          Z! G d dej"                  Z#	 d#d$dZ$ G d de#          Z% G d dej"                  Z& G d de&          Z' G d de&          Z(ej)        d%d            Z*d&d"Z+ddgZ,dS )'    )annotationsN)
CollectionMapping   )_ctx)run_subprocess)FailedProcessError)check_dependency)metadata)pipuvc                  f    e Zd ZdZeej        dd                        Zej        d	d            ZdS )
IsolatedEnvzIsolated build environment ABC.returnstrc                    dS )z2The Python executable of the isolated environment.N selfs    d/var/www/html/web/mlink/mlink_AI_Server/mlink-backend/venv/lib/python3.11/site-packages/build/env.pypython_executablezIsolatedEnv.python_executable%             Mapping[str, str] | Nonec                    dS )zBGenerate additional env vars specific to the isolated environment.Nr   r   s    r   make_extra_environzIsolatedEnv.make_extra_environ*   r   r   Nr   r   )r   r   )	__name__
__module____qualname____doc__propertyabcabstractmethodr   r   r   r   r   r   r   "   st        ))A A A  XA 	Q Q Q Q Q Qr   r   namer   minimum_version_str
str | Nonedistargsobjectr   &importlib_metadata.Distribution | Nonec          	         ddl m} ddlm} 	 t	          t           |j        j        dd| i|                    }n# t          $ r Y dS w xY w||S  ||j	                   ||          k     rdS |S )z
    Given a distribution name, see if it is present and return the distribution
    if the version is sufficient for build, None if the package is missing or
    too old.
    r   )Versionr   	importlibr%   Nr   )
packaging.versionr,   _compatr.   nextiterr   distributionsStopIterationversion)r%   r&   r(   r,   r.   distributions         r   _has_dependencyr7   /   s     *)))))""""""D!A!3!A!X!Xt!Xx!X!XYYZZ   tt "w|#$$ww/B'C'CCCts   .= 
A
Ac                  t    e Zd ZdZddddZdd	ZddZedd            Zedd            Z	ddZ
g fddZdS )DefaultIsolatedEnvz[
    Isolated environment which supports several different underlying implementations.
    r   	installerr;   	Installerr   Nonec                   || _         d S Nr:   )r   r;   s     r   __init__zDefaultIsolatedEnv.__init__N   s    
 %.r   c                   	 t          j        d          }t          j                            |          }|| _        |  | j        dk    rt                      | _        nt                      | _        t          j        d| j        j         d           | j                            | j                   n*# t          $ r  | j        t!          j                       w xY w| S )Nz
build-env-prefixr   zCreating isolated environment: z...)tempfilemkdtempospathrealpath_pathr;   
_UvBackend_env_backend_PipBackendr   logdisplay_namecreate	Exception__exit__sysexc_infor   rG   s     r   	__enter__zDefaultIsolatedEnv.__enter__U   s    	#<888D 7##D))DDJ* ~%%$.LL!!$/MM!HZt7H7UZZZ[[[$$TZ0000 	 	 	DM3<>>**	 s   B0B3 3'Cargsr)   c                    t           j                            | j                  rt	          j        | j                   d S d S r?   )rF   rG   existsrI   shutilrmtree)r   rV   s     r   rQ   zDefaultIsolatedEnv.__exit__q   s<    7>>$*%% 	&M$*%%%%%	& 	&r   r   c                    | j         S )z/The location of the isolated build environment.)rI   r   s    r   rG   zDefaultIsolatedEnv.pathu   s     zr   c                    | j         j        S )z8The python executable of the isolated build environment.)rK   r   r   s    r   r   z$DefaultIsolatedEnv.python_executablez   s      22r   dict[str, str]c                    t           j                            d          }d|+t           j                            | j        j        |g          n| j        j        iS )NPATH)rF   environgetpathsepjoinrK   scripts_dirrT   s     r   r   z%DefaultIsolatedEnv.make_extra_environ   sR    z~~f%% JOOT%6%BD$IJJJ".
 	
r   requirementsCollection[str]constraintsc           	         |sdS t          j        dd                    d t          |          D                       z              | j                            ||           dS )at  
        Install packages from PEP 508 requirements in the isolated build environment.

        :param requirements: PEP 508 requirement specification to install

        :note: Passing non-PEP 508 strings will result in undefined behavior, you *should not* rely on it. It is
               merely an implementation detail, it may change any time without warning.
        Nz-Installing packages in isolated environment:

c              3      K   | ]	}d | V  
dS )z- Nr   ).0rs     r   	<genexpr>z-DefaultIsolatedEnv.install.<locals>.<genexpr>   s*      MuMu[\hSThhMuMuMuMuMuMur   )r   rM   rc   sortedrK   install_dependenciesr   re   rg   s      r   installzDefaultIsolatedEnv.install   sk      	FADIIMuMu`fgs`t`tMuMuMuDuDuuvvv..|[IIIIIr   N)r;   r<   r   r=   )r   r9   )rV   r)   r   r=   r   )r   r]   re   rf   rg   rf   r   r=   )r   r   r    r!   r@   rU   rQ   r"   rG   r   r   rq   r   r   r   r9   r9   I   s           %. . . . . .   8& & & &    X 3 3 3 X3
 
 
 
 UW J J J J J J Jr   r9   c                  L    e Zd ZU ded<   ded<   ddZddZedd            ZdS )_EnvBackendr   r   rd   rG   r   r=   c                    d S r?   r   rT   s     r   rO   z_EnvBackend.create   r   r   re   rf   rg   c                    d S r?   r   rp   s      r   ro   z _EnvBackend.install_dependencies   r   r   c                    d S r?   r   r   s    r   rN   z_EnvBackend.display_name   s    #&3r   NrG   r   r   r=   rr   r   )r   r   r    __annotations__rO   ro   r"   rN   r   r   r   rt   rt      sX         ,,,,llll&&& X&&&r   rt   c                      e Zd ZddZej        dd            Zej        dd            Zedd	            Z	ddZ
ddZedd            ZdS )rL   r   r=   c                .    | j          o| j        | _        d S r?   )_has_valid_outer_pip_has_virtualenv_create_with_virtualenvr   s    r   r@   z_PipBackend.__init__   s    +/+D'D']I]$$$r   bool | Nonec                l   t          dd          x}r|j        }|rt          d |D                       S t          j        dk    rmt          j                    5  t          j        d           t          j	        
                    d          	 ddd           dS 	 ddd           n# 1 swxY w Y   d	S dS )
z
        This checks for a valid global pip. Returns None if pip is missing, False
        if pip is too old or debundled, and True if it can be used.
        r   z22.3c              3  Z   K   | ]&}t          |                              d           V  'dS )zpip/_vendorN)r   
startswith)rk   fs     r   rm   z3_PipBackend._has_valid_outer_pip.<locals>.<genexpr>   s6      KK3q66,,];;KKKKKKr   )      ignorezpip._vendorNTF)r7   filesanyrR   version_infowarningscatch_warningssimplefilterr.   util	find_spec)r   distr   s      r   r|   z _PipBackend._has_valid_outer_pip   s    #5&1114 	JE LKKUKKKKKK
 7**,.. $ $)(333 ~//>>J#$ $ $ $ $ $ $ $J$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 5ts   5B''B+.B+boolc                    ddl m dt          j                                      duo-t          fdt          d d          D                        S )z
        virtualenv might be incompatible if it was installed separately
        from build. This verifies that virtualenv and all of its
        dependencies are installed as required by build.
        r   )Requirement
virtualenvNc              3  r   K   | ]1}t          |          d k     |d                    j        k    V  2dS )r   N)lenr%   )rk   dr   r%   s     r   rm   z._PipBackend._has_virtualenv.<locals>.<genexpr>   s[       F
 F
/0Z]^_Z`Z`cdZdZdKK!"d*ZdZdZdZdF
 F
r   zbuild[])packaging.requirementsr   r.   r   r   r   r
   )r   r   r%   s    @@r   r}   z_PipBackend._has_virtualenv   s     	766666~''--T9 
# F
 F
 F
 F
 F
4DEUdEUEUEU4V4VF
 F
 F
 C
 C
 ?
 	
r   r   c                     t          j                    dk    rQt          j                    \  } }}t          | d |                     d                             dk    r|dk    }|rdndS dS )NDarwin.   x86_64z21.0.1z20.3.0z19.1.0)platformsystemmac_verintfind)release_machineis_apple_silicon_pythons       r   _get_minimum_pip_version_strz(_PipBackend._get_minimum_pip_version_str   sw    ?(("*"2"4"4GQ7.W\\#.../00B66 +2X*='#:HxxH xr   rG   c                   | j         rdd l}dd l}ddlm} |j                            |j                            d                    }|ddddg}||j                            d	          k     r|                    d
           |	                    |d          }t          |j        j                  | _        t          |j        j                  | _        d S dd l}| j         }		 |                    t'                      |	                              |           n<# t*          j        $ r*}
t/          j        |
           t3          |
d          d d }
~
ww xY wt5          |          \  | _        | _        }|	rq|                                 }t9          d||g          st;          | j        dddd| g           t9          d|g          rt;          | j        dddddg           d S d S d S )Nr   r   r-   r   z--activators z--no-setuptoolsz--no-periodic-updatez20.31.0z
--no-wheelF)setup_loggingsymlinkswith_pipz7Failed to create venv. Maybe try installing virtualenv.r   )rG   -Imrq   zpip>=
setuptools	uninstallz-y)r~   r/   r   r0   r.   r5   r,   r   appendcli_runr   creatorexer   
script_dirrd   venvr|   
EnvBuilder_fs_supports_symlinkrO   
subprocessCalledProcessErrorr   log_subprocess_errorr	   _find_executable_and_scriptsr   r7   r   )r   rG   	packagingr   r.   virtualenv_veroptsresultr   r   excpurelibminimum_pip_version_strs                r   rO   z_PipBackend.create   so   ' 5	l$$$$******&.66y7I7Q7QR^7_7_``N !&D 	 1 9 9) D DDDL)))''E'BBF &));%<%<D""6>#<==D KKK44Hs)=)?)?(SSZZ[_````0 s s s)#...(.ghhnrrs A]]a@b@b=D"D$4g l*.*K*K*M*M'&+!   y
 #D$:E5)Uv]tUvUv#wxxx # !   l #D$:E5+W[]i#jkkkkkl ll ls   $6D E*%EEre   rf   rg   c                <   t          j                    5 }| j        rt          j        ddd| j        g}n
| j        ddg}t          j        dk    r|ddt          j        dz
  z   gz  }|g dz  }t          j	        d	d
ddd          5 }|
                    t          j                            |                     d d d            n# 1 swxY w Y   |                    t          j        t          j        |j                             |dt          j                            |j                  gz  }|rt          j	        d	dddd          5 }|
                    t          j                            |                     d d d            n# 1 swxY w Y   |                    t          j        t          j        |j                             |dt          j                            |j                  gz  }t+          |           d d d            d S # 1 swxY w Y   d S )Nz-mr   --pythonr   r   -v)rq   z--use-pep517z--no-warn-script-locationz--no-compilewzbuild-requirements-.txtFutf-8rC   suffixdeleteencodingz-rbuild-constraints--c)
contextlib	ExitStackr|   rR   
executabler   r   	verbosityrD   NamedTemporaryFilewriterF   lineseprc   callback	functoolspartialunlinkr%   rG   abspathr   )r   re   rg   
exit_stackcmdrequirement_fileconstraint_files          r   ro   z _PipBackend.install_dependencies  s   !## 	 z( =~tUJ@VW-ue<~!!8C4>A#568899[[[[C ,1&Y`   F! &&rz|'D'DEEEF F F F F F F F F F F F F F F 	 1")=M=R S STTTD"'//*:*?@@AAC E0 4VE\c   H$#))"*//+*F*FGGGH H H H H H H H H H H H H H H ##I$5biAU$V$VWWWbgooo.BCCDD3=	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s\   A2H3C9HC			HC		A>H3F
>H
F	HF	A2HHHc                    | j         rdndS )Nzvirtualenv+pipzvenv+pip)r~   r   s    r   rN   z_PipBackend.display_name7  s    #'#?OZOr   N)r   r=   )r   r   r   r   r   rx   rr   )r   r   r    r@   r   cached_propertyr|   r}   staticmethodr   rO   ro   r"   rN   r   r   r   rL   rL      s        ^ ^ ^ ^    2 
 
 
 
    \6l 6l 6l 6lp       B P P P XP P Pr   rL   c                  6    e Zd ZddZdd	Zedd
            ZdS )rJ   rG   r   r   r=   c                   dd l }|| _        	 dd l}|                                | _        n|# t
          t          f$ rh t          j        t          j
                            d          pd          }|d}t          |          d t          j        d|            || _        Y nw xY w|                    t!                      d                              | j                   t%          | j                  \  | _        | _        }d S )Nr   UVr   zuv executable not foundzUsing external uv from Fr   )r   	_env_pathr   find_uv_bin_uv_binModuleNotFoundErrorFileNotFoundErrorrY   whichrF   r`   ra   RuntimeErrorr   rM   r   r   rO   r   r   rd   )r   rG   r   r   uv_binmsgr   s          r   rO   z_UvBackend.create=  s   	"III>>++DLL#%67 	" 	" 	"\"*.."6"6">$??F~/"3''T1H7v77888!DLLL	" 	!5!7!7%HHOOPTP^___6RSWSa6b6b3 0!!!s   + A6B$#B$re   rf   rg   c           	        t          j                    5 }| j        dg}t          j        dk    r'|ddt          dt          j        dz
            z   gz  }|dg|z  }|d| j        gz  }|rt          j        dd	d
dd          5 }|	                    t          j                            |                     d d d            n# 1 swxY w Y   |                    t          j        t          j        |j                             |dt          j                            |j                  gz  }t)          |i t          j        d| j        i           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r      rq   r   r   r   r   Fr   r   r   VIRTUAL_ENV)env)r   r   r   r   r   minr   rD   r   r   rF   r   rc   r   r   r   r   r%   rG   r   r   r`   r   )r   re   rg   r   r   r   s         r   ro   z_UvBackend.install_dependenciesR  s   !## 	Sz<'C~!!>C#a!);"<"<<>>??I---CJ 677C E0 4VE\c   H$#))"*//+*F*FGGGH H H H H H H H H H H H H H H ##I$5biAU$V$VWWWbgooo.BCCDD3$Qrz$Q=$.$Q$QRRRR%	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	Ss7   A0E!3C7E!C	E!
C	B	E!!E%(E%c                    dS )Nzvenv+uvr   r   s    r   rN   z_UvBackend.display_nameg  s    yr   Nrx   rr   r   )r   r   r    rO   ro   r"   rN   r   r   r   rJ   rJ   <  sd        c c c c*S S S S*    X  r   rJ   r   c                 D   t           j        dk    rdS t          j        d          5 } |  d}	 t          j        | j        |           t          j        |           n)# t          t          t          f$ r Y ddd           dS w xY w	 ddd           dS # 1 swxY w Y   dS )z%Return True if symlinks are supportedntTzbuild-symlink-rB   z-bNF)	rF   r%   rD   r   symlinkr   OSErrorNotImplementedErrorAttributeError)tmp_filedests     r   r   r   l  s    
w$t 
	$,<	=	=	= 	Jx}d+++IdOOOO,n= 	 	 	       
	                 s4   B.ABB5BBBBBrG   tuple[str, str, str]c                B   t          j                                                    }| |d<   t          j                    }d|v rt          j        d|          }nKd|v rt          j        d|          }n0d|v rt          j        d|          }nt          j        |          }t
          j                            |d         t
          j        d	k    rd
nd          }t
          j        	                    |          sd| d}t          |          ||d         |d         fS )z
    Detect the Python executable and script folder of a virtual environment.

    :param path: The location of the virtual environment
    :return: The Python executable, script folder, and purelib folder
    baser   )schemevarsposix_localposix_prefixosx_framework_library)r  scriptsr   z
python.exepythonz0Virtual environment creation failed, executable z missingr   )	sysconfigget_config_varscopyget_scheme_names	get_pathsrF   rG   rc   r%   rX   r   )rG   config_varsscheme_namespathsr   r   s         r   r   r   ~  s)    +--2244KK-//L #6DDD	,	&	& #>LLL	 L	0	0 #>LLL#555eI.4U]^^J7>>*%%  UUUU3uY'y)999r   r?   )r%   r   r&   r'   r(   r)   r   r*   r   )rG   r   r   r   )-
__future__r   r#   r   r   importlib.utilr.   rF   r   rY   r   rR   r	  rD   typingr   collections.abcr   r   r   r   r   _exceptionsr	   _utilr
   TYPE_CHECKING_compat.importlibr   importlib_metadataLiteralr<   get_args
INSTALLERSProtocolr   r7   r9   rt   rL   rJ   cacher   r   __all__r   r   r   <module>r      s   " " " " " " 



             				       



        / / / / / / / /                   + + + + + + # # # # # # 
 BAAAAAA N;'	V_Y''

Q 
Q 
Q 
Q 
Q&/ 
Q 
Q 
Q 26    4KJ KJ KJ KJ KJ KJ KJ KJ\	' 	' 	' 	' 	'&/ 	' 	' 	'VP VP VP VP VP+ VP VP VPr- - - - - - - -`    "(: (: (: (:X r   