
    ZjF                       d dl mZ ddej         dej         dej         dddd	d
ddddddg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 ddlmZ ddlmZ ddlmZ dZer&d dlmZmZ ddlmZ  ej!        dk     rd dl"m#Z# nd dlm#Z# ej$        d         Z% ej&        e%          Z' G d dej(                  Z)	 d8d9d'Z* G d( d)e)          Z+ G d* d+ej(                  Z,ej-        d:d-            Z.d;d/Z/ G d0 d1e,          Z0 G d2 d3e,          Z1ej-        d:d4            Z2d<d7Z3d)dgZ4dS )=    )annotationsabc
contextlibz._ctxz._exceptionsz._util	importlibzimportlib.utilosplatformshutil
subprocesssys	sysconfigtempfilewarningsN   )_ctx)run_subprocess)FailedProcessError)check_dependencyF)
CollectionMapping)metadata)      )Self)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    F/var/www/FlaskApp/flask-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_environD   r&   r'   Nr   r   )r   r(   )	__name__
__module____qualname____doc__propertyr   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   r   r2   Nr!   )
packaging.versionr9   _compatr   nextiterr   distributionsStopIterationversion)r2   r3   r5   r9   r   distributions         r$   _has_dependencyrC   I   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                  z    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d!dZdS )"DefaultIsolatedEnvz[
    Isolated environment which supports several different underlying implementations.
    r   	installerrG   	Installerr   Nonec                   || _         d S NrF   )r#   rG   s     r$   __init__zDefaultIsolatedEnv.__init__h   s    
 %.r'   r   c                   	 t          j        d          }t          j                            |          }|| _        |  | j        dk    rt                      | _        nt                      | _        t          j        d| j        j         dd           | j                            | j                   n*# t          $ r  | j        t!          j                       w xY w| S )Nz
build-env-prefixr   zCreating isolated environment: z...stepkind)r   mkdtempr   pathrealpath_pathrG   
_UvBackend_env_backend_PipBackendr   logdisplay_namecreate	Exception__exit__r   exc_infor#   rU   s     r$   	__enter__zDefaultIsolatedEnv.__enter__o   s    	#<888D 7##D))DDJ* ~%%$.LL!!$/MM!HZt7H7UZZZajkkkk$$TZ0000 	 	 	DM3<>>**	 s   B2B5 5'Cargsr6   c                <    t          j        | j        d           d S )NT)ignore_errors)r	   rmtreerW   )r#   rc   s     r$   r_   zDefaultIsolatedEnv.__exit__   s    dj555555r'   r   c                    | j         S )z/The location of the isolated build environment.)rW   r"   s    r$   rU   zDefaultIsolatedEnv.path   s     zr'   c                    | j         j        S )z8The python executable of the isolated build environment.)rY   r%   r"   s    r$   r%   z$DefaultIsolatedEnv.python_executable   s      22r'   dict[str, str]c                    t           j                            d          }|+t           j                            | j        j        |g          n| j        j        ddS )NPATH )rk   
PYTHONPATH)r   environgetpathsepjoinrY   scripts_dirra   s     r$   r*   z%DefaultIsolatedEnv.make_extra_environ   s[    z~~f%%  JOOT%6%BD$IJJJ". 
 
 	
r'   F_freshrequirementsCollection[str]constraintsrt   boolc          	         |sdS t          j        dd                    d t          |          D                       z   d           | 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)      HpHpVWaHpHpHpHpHpHpr'   rP   rR   rs   )r   r[   rq   sortedrY   install_dependenciesr#   ru   rw   rt   s       r$   installzDefaultIsolatedEnv.install   s      	F<tyyHpHp[abn[o[oHpHpHp?p?pp	
 	
 	
 	
 	..|[QW.XXXXXr'   N)rG   rH   r   rI   )r   r   )rc   r6   r   rI   r+   )r   ri   ru   rv   rw   rv   rt   rx   r   rI   )r,   r-   r.   r/   rL   rb   r_   r0   rU   r%   r*   r   r!   r'   r$   rE   rE   c   s           %. . . . . .   86 6 6 6    X 3 3 3 X3

 

 

 

 (*Y
 Y Y Y Y Y Y Y Yr'   rE   c                  R    e Zd ZU ded<   ded<   ddZdd	ddZedd            ZdS )_EnvBackendr   r%   rr   rU   r   rI   c                    d S rK   r!   ra   s     r$   r]   z_EnvBackend.create   r&   r'   Frs   ru   rv   rw   rt   rx   c                   d S rK   r!   r   s       r$   r   z _EnvBackend.install_dependencies   s	     sr'   c                    d S rK   r!   r"   s    r$   r\   z_EnvBackend.display_name   s    #&3r'   NrU   r   r   rI   r   r+   )r,   r-   r.   __annotations__r]   r   r0   r\   r!   r'   r$   r   r      sq         ,,,,       &&& X&&&r'   r   rx   c                 .    t          j        d          d uS )Nkeyring)r	   whichr!   r'   r$   _has_keyring_clir      s    <	""$..r'   dict[str, str] | Nonec                 b    dt           j        vr t                      ri t           j        ddiS d S )NPIP_KEYRING_PROVIDERr
   )r   rn   r   r!   r'   r$   _pip_envr      s8    RZ//4D4F4F/C"*C4lCCC4r'   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ddZedd            ZdS )rZ   r   rI   c                .    | j          o| j        | _        d S rK   )_has_valid_outer_pip_has_virtualenv_create_with_virtualenvr"   s    r$   rL   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)r|   fs     r$   r~   z3_PipBackend._has_valid_outer_pip.<locals>.<genexpr>   s6      KK3q66,,];;KKKKKKr'   )r      ignorezpip._vendorNTF)rC   filesanyr   version_infor   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+rx   c                    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)lenr2   )r|   dr   r2   s     r$   r~   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   r2   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.r   x86_64z21.0.1z20.3.0z19.1.0)r   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'   rU   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          |          \  | _        | _        }|	r|                                 }t9          d||g          s+t;          | j        ddddd| gt=                                 t9          d|g          r-t;          | j        ddddddgt=                                 d S d S d S )Nr   r   r:   r   z--activatorsrl   z--no-setuptoolsz--no-periodic-updatez20.31.0z
--no-wheelF)setup_loggingsymlinkswith_pipz7Failed to create venv. Maybe try installing virtualenv.r   )rU   -Imr   
--no-inputzpip>=env
setuptools	uninstallz-y)r   r;   r   r<   r   rA   r9   r   appendcli_runr   creatorexer%   
script_dirrr   venvr   
EnvBuilder_fs_supports_symlinkr]   r
   CalledProcessErrorr   log_subprocess_errorr   _find_executable_and_scriptsr   rC   r   r   )r#   rU   	packagingr   r   virtualenv_veroptsresultr   r   excpurelibminimum_pip_version_strs                r$   r]   z_PipBackend.create  s   ' ;	$$$$******&.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 *.*K*K*M*M'&+!   
 #/y,Xy`wXyXyz$JJ    # !    #/{LZ^`lm$JJ     %  s   $6D E*%EEFrs   ru   rv   rw   rt   c               d   t          j                    5 }| j        rt          j        ddd| j        g}n
| j        ddg}t          j        x}dk    r|dd|dz
  z   gz  }|dgz  }|r|d	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+          |t-                                 d d d            d S # 1 swxY w Y   d S )Nz-mr   --pythonr   r   -vr   z--ignore-installed)z--use-pep517z--no-warn-script-locationz--no-compiler   wzbuild-requirements-.txtFutf-8rO   suffixdeleteencodingz-rbuild-constraints--cr   )r   	ExitStackr   r   
executabler%   r   	verbosityr   NamedTemporaryFilewriter   lineseprq   callback	functoolspartialunlinkr2   rU   abspathr   r   )	r#   ru   rw   rt   
exit_stackcmdr   requirement_fileconstraint_files	            r$   r   z _PipBackend.install_dependenciesS  s    !## !	0z( =~tUJ@VW-ue<!^+	q003C9q=13344I;C .,--^^^^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3HJJ////C!	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0 !	0s\   A8H%3C?H%C	H%C	A>H%3FH%F	H%F	B H%%H),H)c                    | j         rdndS )Nzvirtualenv+pipzvenv+pip)r   r"   s    r$   r\   z_PipBackend.display_name}  s    #'#?OZOr'   N)r   rI   )r   r   r   rx   r+   r   r   )r,   r-   r.   rL   r   cached_propertyr   r   staticmethodr   r]   r   r0   r\   r!   r'   r$   rZ   rZ      s        ^ ^ ^ ^    2 
 
 
 
    \< < < <F (0 (0 (0 (0 (0 (0T P P P XP P Pr'   rZ   c                  <    e Zd ZddZddddZedd            ZdS )rX   rU   r   r   rI   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FileNotFoundErrorr	   r   r   rn   ro   RuntimeErrorr   r[   r   r   r]   r   r%   rr   )r#   rU   r   r   uv_binmsgr   s          r$   r]   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$Frs   ru   rv   rw   rt   rx   c          	     B   t          j                    5 }| j        dg}t          j        x}dk    r|ddt          d|dz
            z   gz  }|dg|d| j        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  }d t          j                                        D             }| j        |d<   dt          j        vrt/                      rd|d<   t1          ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r      r   r   r   r   r   Fr   r   r   c                &    i | ]\  }}|d k    ||S )rm   r!   )r|   kr   s      r$   
<dictcomp>z3_UvBackend.install_dependencies.<locals>.<dictcomp>  s(    LLLDAq!|:K:K1a:K:K:Kr'   VIRTUAL_ENVUV_KEYRING_PROVIDERr
   r   )r   r   r   r   r   minr%   r   r   r   r   r   rq   r   r   r   r   r2   rU   r   rn   itemsr   r   r   )	r#   ru   rw   rt   r   r   r   r   r   s	            r$   r   z_UvBackend.install_dependencies  s9    !## 	)z<'C!^+	q009C#aQ"7"7799::IQQjQ$:PQQC 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LLBJ$4$4$6$6LLLC!%C$BJ66;K;M;M6-9)*3C((((+	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s7   A%F93B8,F8B<	<F?B<	 CFFFc                    dS )Nzvenv+uvr!   r"   s    r$   r\   z_UvBackend.display_name  s    yr'   Nr   r   r+   )r,   r-   r.   r]   r   r0   r\   r!   r'   r$   rX   rX     so        c c c c4 ) ) ) ) ) )<    X  r'   rX   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-rN   z-bNF)	r   r2   r   r   symlinkr   OSErrorNotImplementedErrorAttributeError)tmp_filedests     r$   r   r     s    
w$t 
	$,<	=	=	= 	Jx}d+++IdOOOO,n= 	 	 	       
	                 s4   B.ABB5BBBBBrU   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   )r   get_config_varscopyget_scheme_names	get_pathsr   rU   rq   r2   existsr  )rU   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'   rK   )r2   r   r3   r4   r5   r6   r   r7   r   )r   r   )rU   r   r   r  )5
__future__r   __spec__parent__lazy_modules__r   r   r   importlib.utilr   r   r   r	   r
   r   r   r   typingr   rl   r   r   _exceptionsr   _utilr   TYPE_CHECKINGcollections.abcr   r   _compat.importlibr   importlib_metadatar   typing_extensionsr   LiteralrH   get_args
INSTALLERSProtocolr   rC   rE   r   cacher   r   rZ   rX   r   r   __all__r!   r'   r$   <module>r;     si   " " " " " " 
$$$	 $ 


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



                          + + + + + + # # # # # #   33333333AAAAAA
'!!******* N;'	V_Y''

Q 
Q 
Q 
Q 
Q&/ 
Q 
Q 
Q 26    4WY WY WY WY WY WY WY WYt' ' ' ' '&/ ' ' '$ / / / /   eP eP eP eP eP+ eP eP ePP6 6 6 6 6 6 6 6r    "(: (: (: (:X r'   