
    3i                        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rd 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e      Z G d de      ZddgZy)    )annotations)OrderedDictdefaultdict)TYPE_CHECKING
NamedTuple)Describe)VirtualenvBuiltin   )ComponentBuilder)Sequence)
PythonInfo)VirtualEnvConfigParserVirtualEnvOptions)CreatorCreatorMetac                  6    e Zd ZU ded<   ded<   ded<   ded<   y	)
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__     Q/var/www/opsc/venv/lib/python3.12/site-packages/virtualenv/run/plugin/creators.pyr   r      s    **''##r   r   c                  `     e Zd Zd fdZedd       Zd	dZed
d       ZddZ	d fdZ
 xZS )CreatorSelectorc                t    | j                  |      \  }| _        | _        | _        t        |   ||d|       y )Ncreator)for_interpreterr   r   r   super__init__)selfinterpreterparsercreators	__class__s       r   r&   zCreatorSelector.__init__   s8    FJFZFZ[fFgC$"DM43CfiBr   c           
        t               i d d f\  }}}}t        t              }| j                  d      j	                         D ]  \  }}|dk(  rd}	t        |	      |j                  |      }
|
rU|
j                  r||
j                     j                  |       n*d|vrt        |t              r|}||d<   |
|d<   |||<   |
||<   |t        |t              s|j                  |      s|} |si|rW|j	                         D cg c]"  \  }}| ddj                  d |D               $ }}}t        dj                  |            d| }	t        |	      t        ||||xs d	
      S c c}}w )Nzvirtualenv.createbuiltinz"builtin creator is a reserved namez for creators z, c              3  4   K   | ]  }|j                     y wN)r   ).0is     r   	<genexpr>z2CreatorSelector.for_interpreter.<locals>.<genexpr>7   s     5LQajj5Ls   
z!No virtualenv implementation for  )r   r   r   r   )r   r   listoptionsitemsRuntimeError
can_createerrorappend
issubclassr	   r   can_describejoinr   )clsr(   r   r   r   r   errorskeycreator_classmsgmetakvrowss                 r   r$   zCreatorSelector.for_interpreter    s   ;F="dTX;X8k;T""%++.A"B"H"H"J 	)Ci:"3'' ++K8D::4::&--m< 4MSd9e&)2?Y/15I.(5L%'+K$J}h$GMLfLfgrLs(!	)" [a[g[g[ijSWSTVW1#^DII5L!5L,L+MNjj"499T?335k]CCs##%##)r	
 	
	 ks   'E*c           
         t        |d       }| j                  |      }| j                  j                  d| ||dd| j                  dnd| j                   d 	       y )
Nc                    | dk(  rdS dS )Nr-   r   r
   r   )as    r   <lambda>z8CreatorSelector.add_selector_arg_parse.<locals>.<lambda>D   s    Q)^  r   )rA   z--Fzcreate environment viar4   z (builtin = ))choicesdefaultrequiredhelp)sorted_get_defaultr)   add_argumentr   )r'   namerM   default_values       r   add_selector_arg_parsez&CreatorSelector.add_selector_arg_parseB   ss    &JK))'2  K!)0@0@0H"P\]a]m]m\nnoNp)qr 	! 	
r   c                *    t        t        |             S r/   )nextiter)rM   s    r   rR   zCreatorSelector._get_defaultN   s    DM""r   c                    d| j                    d| | j                  _        | j                  J | j                  j	                  | j                  | j
                  | j                  |   |       y )Nzoptions for  )rT   r)   description_impl_classadd_parser_argumentsr(   r   )r'   selectedapp_datas      r   populate_selected_argparsez*CreatorSelector.populate_selected_argparseR   sb    $01XJ"G+++--dkk4;K;KTM]M]^fMgiqrr   c                   | j                   t        || j                           |_        | j                  J t        | j                  t              s!| j                  || j                        |_        t        | )  |      S r/   )r   getattrrT   rD   r]   r<   r   r   r(   r%   create)r'   r6   r+   s     r   rd   zCreatorSelector.createW   sj    ''(CD+++$**H5#}}Wd6F6FGGw~g&&r   )r(   r   r)   r   returnNone)r(   r   re   r   )rT   r   rM   zSequence[str]re   rf   )rM   z	list[str]re   r   )r_   r   r`   objectre   rf   )r6   r   re   r   )r   r   r   r&   classmethodr$   rV   staticmethodrR   ra   rd   __classcell__)r+   s   @r   r!   r!      sG    C 
 
B

 # #s
' 'r   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   <module>rv      sQ    " 0 , / R "(+V>* A'& A'J r   