o
    ­—Žj<  ã                   @  sª   d dl m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mZ d dlmZmZ d dlmZmZ e
rFd d	lmZ ddd„ZG dd„ deƒZdS )é    )ÚannotationsN)ÚIterable)ÚTracebackType)ÚTYPE_CHECKING)ÚBuildEnvironmentÚBuildEnvironmentInstallerÚPrefix)ÚVenvCreationErrorÚVenvImportError)ÚTempDirectoryÚtempdir_kinds)ÚInstallRequirementÚnameÚstrÚenv_dirÚreturnc                 C  s   ||dœ}t j| d|d�S )N)ÚbaseÚplatbaseÚvenv)ÚschemeÚvars)Ú	sysconfigÚget_path)r   r   r   © r   úY/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pip/_internal/build_env/venv.pyÚ_get_venv_path_from_sysconfig   s   þr   c                   @  s>   e Zd ZdZddd„Zddd	„Zddd„Zddœd dd„ZdS )!ÚVenvBuildEnvironmentzA venv-based build environment.Ú	installerr   r   ÚNonec           
      C  s  zdd l }W n	 ty   t‚w ttjdd�j| _|jt	j
dkd�}z| | j¡}| | j¡ W n tyB } ztt|ƒƒ‚d }~ww tjdkrR|jg| _|j| _nmtjd d… dkrktd	| jƒg| _td
| jƒ| _nTtjdkrzt	j | jdd¡}ntjj
dkr‚dnd}t	j | jd|› tjj› dtjj› �d¡}|g| _z|j| _W n ty¾   t	j
dkr±dnd}t	j | j|¡| _Y nw z|j| _W n+ tyð   z|j| _W n tyí   t	j
dkràdnd}	t	j | j|	¡| _Y nw Y nw i | _ || _!t	j "| j¡�std| j› �ƒ‚d S )Nr   T)ÚkindÚglobally_managedÚnt)Úsymlinks)é   é   é   )r#   é   ÚpurelibÚscriptsÚwin32ÚLibzsite-packagesÚpypyÚpythonÚlibÚ.ÚScriptsÚbinz
python.exez$Python executable failed to copy to )#r   ÚImportErrorr
   r   r   Ú	BUILD_ENVÚpathÚ	_env_pathÚ
EnvBuilderÚosr   Úensure_directoriesÚcreateÚOSErrorr	   r   ÚsysÚversion_infoÚlib_pathÚlib_dirsÚbin_pathÚ	_bin_pathr   ÚplatformÚjoinÚimplementationÚmajorÚminorÚAttributeErrorÚenv_exec_cmdÚpython_executableÚenv_exeÚ	_save_envÚ
_installerÚexists)
Úselfr   r   ÚenvÚcontextÚeÚlibpathr,   Úscripts_dirÚexecutable_namer   r   r   Ú__init__!   st   ÿÿþ€ÿ



üþ
þ€ý
ÿþzVenvBuildEnvironment.__init__c                 C  sV   dd„ dD ƒ| _ | jg}| j d  }r| | tj¡¡ tj tj |¡ddœ¡ d S )Nc                 S  s   i | ]
}|t j |d ¡“qS ©N)r6   ÚenvironÚget)Ú.0r   r   r   r   Ú
<dictcomp>l   s    ÿz2VenvBuildEnvironment.__enter__.<locals>.<dictcomp>)ÚPATHÚ
PYTHONPATHrY   Ú )	rI   r?   ÚextendÚsplitr6   ÚpathseprU   ÚupdaterA   )rL   Únew_pathÚold_pathr   r   r   Ú	__enter__i   s   ÿzVenvBuildEnvironment.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | Nonec                 C  s:   | j  ¡ D ]\}}|d u rtj |d ¡ q|tj|< qd S rT   )rI   Úitemsr6   rU   Úpop)rL   rc   re   rg   ÚvarnameÚ	old_valuer   r   r   Ú__exit__w   s
   üzVenvBuildEnvironment.__exit__N)Úfor_reqÚrequirementsúIterable[str]Úprefix_as_stringr   r   rn   úInstallRequirement | Nonec                C  s0   |sd S t | j| jd�}| jj||||d� d S )N)Úvenv_executable)r   rn   )r   r4   rG   rJ   Úinstall)rL   ro   rq   r   rn   Úprefixr   r   r   Úinstall_requirementsƒ   s   z)VenvBuildEnvironment.install_requirements)r   r   r   r   )r   r   )rc   rd   re   rf   rg   rh   r   r   )
ro   rp   rq   r   r   r   rn   rr   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   rb   rm   rv   r   r   r   r   r      s    

H
úr   )r   r   r   r   r   r   )Ú
__future__r   r6   r:   r   Úcollections.abcr   Útypesr   Útypingr   Úpip._internal.build_env.baser   r   r   Úpip._internal.exceptionsr	   r
   Úpip._internal.utils.temp_dirr   r   Úpip._internal.req.req_installr   r   r   r   r   r   r   Ú<module>   s    
