o
    fC                     @  s   d dl m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mZ d	dlmZ d	dlmZ G dd deZdgZdS )    )annotationsN)copy)handle_store_python)
PythonInfo)ProcessCallFailedError)
ensure_dir)run_cmd   )ViaGlobalRefApiViaGlobalRefMeta)CPython3macOsBrew)Pypy3Windowsc                      sv   e Zd Zd fddZ fddZedd Z fd	d
Zdd Zdd Z	dd Z
dd Z fddZdd Z  ZS )VenvreturnNonec                   s>   |j | _ t || t }||u o|j|jk| _d | _d S N)	describesuper__init__r   current
executablesystem_executablecan_be_inline_context)selfoptionsinterpreterr   	__class__ [/var/www/html/dev/env/lib/python3.10/site-packages/virtualenv/create/via_global_ref/venv.pyr      s
   
zVenv.__init__c                   s&   t   | jrd| jjjfg S g  S )Nr   )r   _argsr   r   __name__)r   r   r   r    r!      s   &z
Venv._argsc                 C  s<   |j rt|rt|S t }|jdkrt||}|S d S )Nwin32)has_venvr   can_describe
setup_metar   platformr   )clsr   metar   r   r    
can_create   s   



zVenv.can_createc                   sB   | j r|   n|   | jD ]}t| qt   |   d S r   )r   create_inlinecreate_via_sub_processlibsr   r   create!executables_for_win_pypy_less_v37)r   libr   r   r    r.   '   s   



zVenv.createc                 C  sB   | j }t|tr|jr|| jD ]}||| j qdS dS dS )z
        PyPy <= 3.6 (v7.3.3) for Windows contains only pypy3.exe and pypy3w.exe
        Venv does not handle non-existing exe sources, e.g. python.exe, so this
        patch does it.
        N)r   
isinstancer   less_v37executablesr   runsymlinks)r   creatorexer   r   r    r/   1   s   z&Venv.executables_for_win_pypy_less_v37c                 C  s4   ddl m} || jd| jdd}|t| j d S )Nr   )
EnvBuilderF)system_site_packagesclearr5   with_pip)venvr8   enable_system_site_packager5   r.   strdest)r   r8   builderr   r   r    r+   <   s   zVenv.create_inlinec                 C  sB   |   }tdd| t|\}}}|dkrt||||d S )Nz)using host built-in venv to create via %s r   )get_host_create_cmdlogginginfojoinr   r   )r   cmdcodeouterrr   r   r    r,   G   s   zVenv.create_via_sub_processc                 C  sB   | j jdddg}| jr|d || jrdndt| jf |S )Nz-mr<   z--without-pipz--system-site-packagesz
--symlinksz--copies)r   r   r=   appendextendr5   r>   r?   )r   rF   r   r   r    rB   N   s
   
zVenv.get_host_create_cmdc                   s(   t | j }t   | j| d S r   )r   	pyenv_cfgrefreshr   set_pyenv_cfgupdate)r   venv_contentr   r   r    rN   U   s   
zVenv.set_pyenv_cfgc                 C  sH   t | d}|d urt||rt||}t|r|dkr|S t | |S )Nr   script)object__getattribute__hasattrgetattrcallable)r   itemr   elementr   r   r    rS   [   s   
zVenv.__getattribute__)r   r   )r"   
__module____qualname__r   r!   classmethodr*   r.   r/   r+   r,   rB   rN   rS   __classcell__r   r   r   r    r      s    


r   )
__future__r   rC   r   &virtualenv.create.via_global_ref.storer   virtualenv.discovery.py_infor   virtualenv.util.errorr   virtualenv.util.pathr   virtualenv.util.subprocessr   apir
   r   builtin.cpython.mac_osr   builtin.pypy.pypy3r   r   __all__r   r   r   r    <module>   s    T