o
    Vh                     @  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 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 d dlmZ erbd dlmZ d dlmZ G dd deZdS )    )annotationsN)contextmanager)deepcopy)cached_property)Path)TYPE_CHECKING)Any)Env)GET_BASE_PREFIX)GET_ENVIRONMENT_INFO)	GET_PATHS)GET_SYS_PATH)Iterator)Tagc                      s   e Zd ZdZd6d7 fd	d
Zed8ddZd9ddZd:ddZd;ddZ	d<ddZ
d<ddZd= fd d!Z		d>d?d&d'Zd@ fd+d,ZedAd.d/ZdBd0d1Zed<d2d3ZdC fd4d5Z  ZS )D
VirtualEnvz'
    A virtual Python environment.
    Npathr   basePath | NonereturnNonec                   s6   t  || |d u r| t}t| | _d S d S N)super__init__run_python_scriptr
   r   strip_base)selfr   r   output	__class__ p/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/utils/env/virtual_env.pyr       s
   
zVirtualEnv.__init__	list[str]c                 C     |  t}t|}|S r   )r   r   jsonloadsr   r   pathsr    r    r!   sys_path+   s   

zVirtualEnv.sys_path	list[Tag]c                 C  s   ddl m} ddl m} ddl m} | jd d }| jd }| jd }|dkr*d	}n|d
kr5| | }nd }g |d
kr@||n| |||dS )Nr   )compatible_tags)cpython_tags)generic_tags   interpreter_nameinterpreter_versionpppp3cp)interpreter)packaging.tagsr*   r+   r,   version_info
marker_env)r   r*   r+   r,   pythonr.   r/   r3   r    r    r!   get_supported_tags1   s    


zVirtualEnv.get_supported_tagsdict[str, Any]c                 C  r#   r   )r   r   r$   r%   )r   r   envr    r    r!   get_marker_envF   s   

zVirtualEnv.get_marker_envdict[str, str]c                 C  r#   r   )r   r   r$   r%   r&   r    r    r!   	get_pathsL   s   

zVirtualEnv.get_pathsboolc                 C  s   dS )NTr    r   r    r    r!   is_venvQ   s   zVirtualEnv.is_venvc                 C  s   t j| jS r   )osr   existsr7   r?   r    r    r!   is_saneT   s   zVirtualEnv.is_sanecmdkwargsr   strc                   s*   | j |dd|d< t j|fi |S Nr:   )environ)get_temp_environgetr   _run)r   rD   rE   r   r    r!   rK   X   s   zVirtualEnv._runrH   dict[str, str] | Noneexcludelist[str] | Nonec                   sz    pg    ddg |rt|} D ]}||d  qn fddtj D }|| |  |d< t| j	|d< |S )N
PYTHONHOME__PYVENV_LAUNCHER__c                   s   i | ]\}}| vr||qS r    r    ).0kvrM   r    r!   
<dictcomp>j   s    z/VirtualEnv.get_temp_environ.<locals>.<dictcomp>PATHVIRTUAL_ENV)
extendr   poprA   rH   itemsupdate_updated_pathrF   _path)r   rH   rM   rE   keyr    rT   r!   rI   \   s   
zVirtualEnv.get_temp_environbinargsintc                   s0   | j |dd|d< t j|g|R i |S rG   )rI   rJ   r   execute)r   r_   r`   rE   r   r    r!   rb   s   s   zVirtualEnv.executeIterator[None]c              	   c  sH    t tj}zd V  W tj  tj| d S tj  tj| w r   )dictrA   rH   clearr[   )r   rH   r    r    r!   temp_environw   s   


zVirtualEnv.temp_environc                 C  s    t jt| jt jddgS )NrV    )rA   pathsepjoinrF   _bin_dirrH   rJ   r?   r    r    r!   r\      s    zVirtualEnv._updated_pathc                 C  s4   | j d }| otd|jddtjtjB d uS )Nz
pyvenv.cfgz/^\s*include-system-site-packages\s*=\s*true\s*$zutf-8)encoding)r]   rB   research	read_text
IGNORECASE	MULTILINE)r   
pyvenv_cfgr    r    r!   includes_system_site_packages   s   


z(VirtualEnv.includes_system_site_packagesc                   s   t  |p| jo| j|S r   )r   is_path_relative_to_librr   
parent_env)r   r   r   r    r!   rs      s   
z"VirtualEnv.is_path_relative_to_libr   )r   r   r   r   r   r   )r   r"   )r   r)   )r   r9   )r   r<   )r   r>   )rD   r"   rE   r   r   rF   )NN)rH   rL   rM   rN   rE   rF   r   r<   )r_   rF   r`   rF   rE   r   r   ra   )r   rc   )r   rF   )r   r   r   r>   )__name__
__module____qualname____doc__r   propertyr(   r8   r;   r=   r@   rC   rK   rI   rb   r   rf   r\   r   rr   rs   __classcell__r    r    r   r!   r      s*    





r   )
__future__r   r$   rA   rl   
contextlibr   copyr   	functoolsr   pathlibr   typingr   r   poetry.utils.env.base_envr	   poetry.utils.env.script_stringsr
   r   r   r   collections.abcr   r4   r   r   r    r    r    r!   <module>   s&    