
    3iI                        d dl mZ d dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZmZ erd dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ  G d de      Z G d de      Z G d de      Zg dZy)    )annotationsN)SUPPRESSArgumentDefaultsHelpFormatterArgumentParser	Namespace)OrderedDict)TYPE_CHECKINGAny)Action)MappingSequence)get_type)get_env_var)	IniConfigc                  V     e Zd Zd fdZddZd	 fdZd
dZedd       ZddZ	 xZ
S )VirtualEnvOptionsc                @    t        |   di | d | _        i | _        y )N )super__init___src_sources)selfkwargs	__class__s     O/var/www/opsc/venv/lib/python3.12/site-packages/virtualenv/config/cli/parser.pyr   zVirtualEnvOptions.__init__   s!    "6" $	(*    c                b    t        | ||       |j                  d      rd}|| j                  |<   y)zSet an option value and record where it came from.

        :param key: the option name
        :param value: the option value
        :param src: the source of the value (e.g. ``"cli"``, ``"env var"``, ``"default"``)

        zenv varN)setattr
startswithr   )r   keyvaluesrcs       r   set_srczVirtualEnvOptions.set_src   s/     	c5!>>)$C cr   c                b    t        | dd       x}|| j                  |<   t        |   ||       y )Nr   )getattrr   r   __setattr__)r   r!   r"   r#   r   s       r   r'   zVirtualEnvOptions.__setattr__$   s4    4..C;!$DMM#C'r   c                8    | j                   j                  |      S )zReturn the source that provided a given option value.

        :param key: the option name

        :returns: the source string (e.g. ``"cli"``, ``"env var"``, ``"default"``), or ``None`` if not tracked

        )r   get)r   r!   s     r   
get_sourcezVirtualEnvOptions.get_source)   s     }}  %%r   c                z    t        | d      st        | d      syt        | j                  | j                  z
  d      S )zThe verbosity level, computed as ``verbose - quiet``, clamped to zero.

        :returns: the verbosity level, or ``None`` if neither ``--verbose`` nor ``--quiet`` has been parsed yet

        verbosequietNr   )hasattrmaxr,   r-   r   s    r   	verbosityzVirtualEnvOptions.verbosity3   s4     tY'g0F4<<$**,a00r   c                    t        |       j                   ddj                  d t        |       j	                         D               dS )N(z, c              3  T   K   | ]   \  }}|j                  d       r| d|  " yw)_=N)r    ).0kvs      r   	<genexpr>z-VirtualEnvOptions.__repr__.<locals>.<genexpr>?   s-     1uAcdcocopsctQCq*1us   (())type__name__joinvarsitemsr0   s    r   __repr__zVirtualEnvOptions.__repr__>   s>    t*%%&a		1udIYIYI[1u(u'vvwxxr   )r   r
   returnNone)r!   strr"   r
   r#   rD   rB   rC   )r!   rD   r"   r
   rB   rC   )r!   rD   rB   
str | None)rB   z
int | None)rB   rD   )r=   
__module____qualname__r   r$   r'   r*   propertyr1   rA   __classcell__r   s   @r   r   r      s1    +
!(
& 1 1yr   r   c                  n     e Zd ZdZ	 	 d	 	 	 	 	 	 	 	 	 d fdZd	dZd
dZd	dZ	 d	 	 	 	 	 d fdZ xZ	S )VirtualEnvConfigParserzkCustom option parser which updates its defaults by checking the configuration files and environmental vars.c                ~   |t         j                  n|}t        |      | _        g | _        || _        | j                  j                  |d<   d|d<   t        |d<   d|d<   t        | $  |i | t               | _        |t        |t              sd}t        |      |
t               n|| _        d | _        d | _        y )NepilogFadd_helpformatter_class
virtualenvprogz)options must be of type VirtualEnvOptions)osenvironr   file_configepilog_listenvrN   HelpFormatterr   r   set_fixed
isinstancer   	TypeErroroptions_interpreter	_app_data)r   r]   rW   argsr   msgr   s         r   r   zVirtualEnvConfigParser.__init__E   s      KbjjS$S>++22x"z$1 !%v$)&)ez';L'M=CC. .5o(*7 r   c                    | j                   D ]H  }t        |      }|| j                  vs| j                  |       | j                  j	                  |       J y )N)_actionsidrZ   _fix_defaultadd)r   action	action_ids      r   _fix_defaultsz$VirtualEnvConfigParser._fix_defaults]   sH    mm 	+F6
I+!!&)	*		+r   c                   t        |d      rt        |d      r|j                  t        k7  rt        |      }t	        d |j
                  D              }d }|D ]  }t        ||| j                        }| n |3| j                  r'|D ]"  }| j                  j                  ||      }|" n ||\  |_        |_
        n|j                  df} | j                  j                  |j                  g|  y y y y )Ndefaultdestc              3  b   K   | ]'  }|j                  d       j                  d d      df ) yw)-r5   N)lstripreplace)r7   is     r   r:   z6VirtualEnvConfigParser._fix_default.<locals>.<genexpr>g   s*     gA#!6!6sC!@$ Ggs   -/)r.   rk   r   r   r   option_stringsr   rW   rU   r)   default_sourcer]   r$   rl   )r   rg   as_typenamesoutcomenames         r   re   z#VirtualEnvConfigParser._fix_defaultd   s    69%'&&*AfnnX`F`v&GgQWQfQfggEG %dGTXX>& 4#3#3! D"..224AG* "8?5 5 ..)3 DLL  7w7# Ga*A%r   c                X    | j                          | j                  dddt        d       y )Nz-hz--helphelpzshow this help message and exit)rg   rk   ry   )ri   add_argumentr   r0   s    r   enable_helpz"VirtualEnvConfigParser.enable_helpx   s(    $Pqrr   c                .   || j                   }n|| j                   urd}t        |      | j                          d| j                   _        	 | j                  |_        t
        |   ||      d | j                   _        S # d | j                   _        w xY w)Nzcan only pass in parser.optionscli)	namespace)r]   
ValueErrorri   r   rW   r   parse_known_args)r   r`   r~   ra   r   s       r   r   z'VirtualEnvConfigParser.parse_known_args|   s     Idll*3CS/!!	% HHIM7+DI+F $DLLDLLs   !B B)NN)
r]   VirtualEnvOptions | NonerW   zMapping[str, str] | Noner`   r
   r   r
   rB   rC   )rB   rC   )rg   r   rB   rC   )r`   zSequence[str] | Noner~   r   rB   z#tuple[VirtualEnvOptions, list[str]])
r=   rF   rG   __doc__r   ri   re   r{   r   rI   rJ   s   @r   rL   rL   B   s|    u -1(,) & 	
  
0+8(s
 X\%(%<T%	,% %r   rL   c                  ,     e Zd Zd fdZd fdZ xZS )rX   c                ,    t        |   |fddd| y )N       )max_help_positionwidth)r   r   )r   rR   r   r   s      r   r   zHelpFormatter.__init__   s    I3I&Ir   c                    t         |   |      }|1t        |d      r%d}|j                  |      r|d t	        |         d}|S )Nrs   z (default: %(default)s)z2 (default: %(default)s -> from %(default_source)s))r   _get_help_stringr.   endswithlen)r   rg   textrk   r   s       r   r   zHelpFormatter._get_help_string   sS    w'/0@ A/G}}W%#g,/00bcr   )rR   rD   r   r
   rB   rC   )rg   r   rB   rE   )r=   rF   rG   r   r   rI   rJ   s   @r   rX   rX      s    J r   rX   )rX   rL   r   )
__future__r   rS   argparser   r   r   r   collectionsr   typingr	   r
   r   collections.abcr   r   virtualenv.config.convertr   virtualenv.config.env_varr   virtualenv.config.inir   r   rL   rX   __all__r   r   r   <module>r      s[    " 	 W W # %1 . 1 +.y	 .ybH%^ H%V
1 
r   