o
    Wi                     @  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rFd dlmZ d d	lmZ d d
lmZmZ d 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)Sequence)
PythonInfo)VirtualEnvConfigParserVirtualEnvOptions)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/home/ubuntu/.local/lib/python3.10/site-packages/virtualenv/run/plugin/creators.pyr      s
   
 r   c                      s\   e Zd Zd fddZed d
dZd!ddZed"ddZd#ddZ	d$ fddZ
  ZS )%CreatorSelectorinterpreterr   parserr   returnNonec                   s.   |  |\}| _| _| _t ||d| d S )Ncreator)for_interpreterr   r   r   super__init__)selfr   r   creators	__class__r   r   r%      s   zCreatorSelector.__init__r   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||||pd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>7   s    z=CreatorSelector.for_interpreter.<locals>.<listcomp>.<genexpr>)join)r,   kvr   r   r   
<listcomp>7   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_interpreternamer   choicesSequence[str]c              	   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>D   s    z8CreatorSelector.add_selector_arg_parse.<locals>.<lambda>)r@   z--Fzcreate environment viar4   z (builtin = ))rF   defaultrequiredhelp)sorted_get_defaultr   add_argumentr   )r&   rE   rF   default_valuer   r   r   add_selector_arg_parseB   s   
 
z&CreatorSelector.add_selector_arg_parse	list[str]c                 C  s   t t| S r+   )nextiter)rF   r   r   r   rO   N   s   zCreatorSelector._get_defaultselectedapp_dataobjectc                 C  sD   d| j  d| | j_| jd usJ | j| j| j| j| | d S )Nzoptions for  )rE   r   description_impl_classadd_parser_argumentsr   r   )r&   rV   rW   r   r   r   populate_selected_argparseR   s    z*CreatorSelector.populate_selected_argparser6   r   r   c                   sJ   | j t|| j |_| jd usJ t| jts| || j|_t	 
|S r+   )r   getattrrE   rC   r[   r<   r   r   r   r$   create)r&   r6   r(   r   r   r_   W   s
   zCreatorSelector.create)r   r   r   r   r    r!   )r   r   r    r   )rE   r   rF   rG   r    r!   )rF   rS   r    r   )rV   r   rW   rX   r    r!   )r6   r   r    r   )r   r   r   r%   classmethodr#   rR   staticmethodrO   r]   r_   __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
   collections.abcr   python_discoveryr   virtualenv.config.cli.parserr   r   virtualenv.create.creatorr   r   r   r   __all__r   r   r   r   <module>   s     E