o
    Wi                     @  s   d dl m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	 e	r6d dl
mZ d dlmZ d dlmZ eeZ	ddddZG dd dZddddZedkrXe  dS dS )    )annotationsN)default_timer)TYPE_CHECKING)MutableMappingVirtualEnvOptions)Sessionargslist[str] | NoneoptionsVirtualEnvOptions | NoneenvMutableMapping[str, str] | NonereturnNonec              
   C  s   |d u rt jn|}t }ddlm} ddlm} | d u r#tjdd  } z|| ||d}t	
t|| W d S  |yd } z#td|j d|j  t|jtjdd	 t|jtjdd	 t|jd }~w ty} } z|jtjkrxtd
tjd  d }~ww )Nr   )cli_run)ProcessCallFailedError   )r   zsubprocess call failed for z with code  )fileendzOSError: [Errno 24] Too many open files. You may need to increase your OS open files limit.
  On macOS/Linux, try 'ulimit -n 2048'.
  For Windows, this is not a common issue, but you can try to close some applications.)r   )osenvironr   virtualenv.runr   virtualenv.util.errorr   sysargvLOGGERwarning
LogSessionprintcmdcodeoutstdouterrstderr
SystemExitOSErrorerrnoEMFILE)r	   r   r   startr   r   session	exception r.   G/home/ubuntu/.local/lib/python3.10/site-packages/virtualenv/__main__.pyrun   s0   
r0   c                   @  s    e Zd ZdddZdd
dZdS )r   r,   r   r+   floatr   r   c                 C  s   || _ || _d S N)r,   r+   )selfr,   r+   r.   r.   r/   __init__1   s   
zLogSession.__init__strc                 C  s   | j jjj}t | j d }d| d|ddd| j jg}| j jjrI|d| j j | j jj	
 }tdd	 |D }|d
d|  | j jr_|dddd	 | j jD   d|S )Ni  zcreated virtual environment z in z.0fmsz
  creator z	  seeder c                 s  s,    | ]}|j d krd|jdV  qdS )z
.dist-infoz==-N)suffixjoinstemsplit.0ir.   r.   r/   	<genexpr>?   s   * z%LogSession.__str__.<locals>.<genexpr>z    added seed packages: z, z  activators ,c                 s  s    | ]}|j jV  qd S r2   )	__class____name__r<   r.   r.   r/   r?   C   s    
)r,   creatorinterpreterspecr   r+   seederenabledappendpurelibiterdirsortedr9   
activators)r3   rF   elapsedlinespathpackagesr.   r.   r/   __str__5   s   
$
zLogSession.__str__N)r,   r   r+   r1   r   r   )r   r5   )rB   
__module____qualname__r4   rR   r.   r.   r.   r/   r   0   s    
r   c                 C  s   ddl m} |d u rtjn|}| }z	t| || W d S  tttfys } zIz6t|ddr. t	|tr8|j
dksBtdt|j| t	|trJ|j
nd}t| W tjD ]}|  qUntjD ]}|  q`w W Y d }~d S d }~ww )Nr   r   with_tracebackFz%s: %sr   )virtualenv.config.cli.parserr   r   r   r0   KeyboardInterruptr'   	Exceptiongetattr
isinstancer"   r   errortyperB   r   exithandlersflush)r	   r   r   r   r-   r"   handlerr.   r.   r/   run_with_catchG   s(   


ra   __main__)NNN)r	   r
   r   r   r   r   r   r   )NN)r	   r
   r   r   r   r   )
__future__r   r)   loggingr   r   timeitr   typingr   collections.abcr   rV   r   virtualenv.run.sessionr   	getLoggerrB   r   r0   r   ra   r.   r.   r.   r/   <module>   s&    

