o
    Uh*                     @  s   d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 d dl
mZ ddlmZ er2d dlmZmZ G d	d
 d
eZG dd deZd
dgZdS )    )annotations)OrderedDictdefaultdict)TYPE_CHECKING
NamedTuple)Describe)VirtualenvBuiltin   )ComponentBuilder)CreatorCreatorMetac                   @  s.   e Zd ZU ded< ded< ded< ded< d	S )
CreatorInfozdict[str, type[Creator]]key_to_classzdict[str, CreatorMeta]key_to_metaztype[Describe] | Nonedescribestrbuiltin_keyN)__name__
__module____qualname____annotations__ r   r   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/virtualenv/run/plugin/creators.pyr      s
   
 r   c                      sR   e Zd Zd fddZedd Zdd Zed	d
 Zdd Z	 fddZ
  ZS )CreatorSelectorreturnNonec                   s.   |  |\}| _| _| _t ||d| d S )Ncreator)for_interpreterr   r   r   super__init__)selfinterpreterparsercreators	__class__r   r   r      s   zCreatorSelector.__init__c                 C  s  t  i d d f\}}}}tt}| d D ]L\}}|dkr$d}	t|	||}
|
rR|
jr7||
j | nd|vrJt	|t
rJ|}||d< |
|d< |||< |
||< |d u rbt	|trb||rb|}q|s|rwdd | D }td|d| }	t|	t||||dS )	Nzvirtualenv.createbuiltinz"builtin creator is a reserved namec                 S  s.   g | ]\}}| d d dd |D  qS )z for creators z, c                 s  s    | ]}|j V  qd S N)r   ).0ir   r   r   	<genexpr>2   s    z=CreatorSelector.for_interpreter.<locals>.<listcomp>.<genexpr>)join)r(   kvr   r   r   
<listcomp>2   s   . z3CreatorSelector.for_interpreter.<locals>.<listcomp>
z!No virtualenv implementation for )r   r   r   r   )r   r   listoptionsitemsRuntimeError
can_createerrorappend
issubclassr   r   can_describer+   r   )clsr!   r   r   r   r   errorskeycreator_classmsgmetarowsr   r   r   r      s>   

zCreatorSelector.for_interpreterc              	   C  sX   t |dd d}| |}| jjd| ||dd| jd u rdnd| j d	 d
 d S )Nc                 S  s   | dkrdS dS )Nr&   r   r	   r   )ar   r   r   <lambda>?   s    z8CreatorSelector.add_selector_arg_parse.<locals>.<lambda>)r;   z--Fzcreate environment via z (builtin = ))choicesdefaultrequiredhelp)sorted_get_defaultr"   add_argumentr   )r    namerD   default_valuer   r   r   add_selector_arg_parse=   s   
 
z&CreatorSelector.add_selector_arg_parsec                 C  s   t t| S r'   )nextiter)rD   r   r   r   rI   I   s   zCreatorSelector._get_defaultc                 C  s6   d| j  d| | j_| j| j| j| j| | d S )Nzoptions for  )rK   r"   description_impl_classadd_parser_argumentsr!   r   )r    selectedapp_datar   r   r   populate_selected_argparseM   s    z*CreatorSelector.populate_selected_argparsec                   s<   | j t|| j |_t| jts| || j|_t	 
|S r'   )r   getattrrK   r>   r7   rR   r   r   r!   r   create)r    r1   r$   r   r   rX   Q   s   zCreatorSelector.create)r   r   )r   r   r   r   classmethodr   rM   staticmethodrI   rV   rX   __classcell__r   r   r$   r   r      s    
!
r   N)
__future__r   collectionsr   r   typingr   r   virtualenv.create.describer   4virtualenv.create.via_global_ref.builtin.builtin_wayr   baser
   virtualenv.create.creatorr   r   r   r   __all__r   r   r   r   <module>   s    C