o
    Uh                     @  s   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 d dlmZ d dlmZ G dd	 d	eZG d
d deZG dd deZg dZdS )    )annotationsN)SUPPRESSArgumentDefaultsHelpFormatterArgumentParser	Namespace)OrderedDict)get_type)get_env_var)	IniConfigc                      sR   e Zd Zd fddZdd Zd fddZd	d
 Zedd ZdddZ	  Z
S )VirtualEnvOptionsreturnNonec                   s"   t  jdi | d | _i | _d S )N )super__init___src_sources)selfkwargs	__class__r   p/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/virtualenv/config/cli/parser.pyr      s   
zVirtualEnvOptions.__init__c                 C  s(   t | || |drd}|| j|< d S )Nzenv var)setattr
startswithr   )r   keyvaluesrcr   r   r   set_src   s   
zVirtualEnvOptions.set_srcc                   s.   t | dd d ur| j| j|< t || d S )Nr   )getattrr   r   r   __setattr__)r   r   r   r   r   r   r      s   zVirtualEnvOptions.__setattr__c                 C  s   | j |S N)r   get)r   r   r   r   r   
get_source   s   zVirtualEnvOptions.get_sourcec                 C  s*   t | dst | dsd S t| j| j dS )Nverbosequietr   )hasattrmaxr#   r$   r   r   r   r   	verbosity    s   zVirtualEnvOptions.verbositystrc                 C  s.   t | j dddd t|  D  dS )N(z, c                 s  s,    | ]\}}| d s| d| V  qdS )_=N)r   ).0kvr   r   r   	<genexpr>'   s   * z-VirtualEnvOptions.__repr__.<locals>.<genexpr>))type__name__joinvarsitemsr'   r   r   r   __repr__&   s   .zVirtualEnvOptions.__repr__r   r   )r   r)   )r3   
__module____qualname__r   r   r   r"   propertyr(   r7   __classcell__r   r   r   r   r      s    
r   c                      sJ   e Zd ZdZdd fddZdd Zd	d
 Zdd Zd fdd	Z  Z	S )VirtualEnvConfigParserzkCustom option parser which updates its defaults by checking the configuration files and environmental vars.Nr   r   c                   s   |d u rt jn|}t|| _g | _|| _| jj|d< d|d< t|d< d|d< t j	|i | t
 | _|d urBt|tsBd}t||d u rIt n|| _d | _d | _d S )NepilogFadd_helpformatter_class
virtualenvprogz)options must be of type VirtualEnvOptions)osenvironr
   file_configepilog_listenvr>   HelpFormatterr   r   set_fixed
isinstancer   	TypeErroroptions_interpreter	_app_data)r   rM   rG   argsr   msgr   r   r   r   -   s    

zVirtualEnvConfigParser.__init__c                 C  s8   | j D ]}t|}|| jvr| | | j| qd S r    )_actionsidrJ   _fix_defaultadd)r   action	action_idr   r   r   _fix_defaults?   s   


z$VirtualEnvConfigParser._fix_defaultsc                 C  s   t |drgt |dri|jtkrkt|}tdd |jD }d }|D ]}t||| j}|d ur0 nq!|d u rJ| jrJ|D ]}| j	||}|d urI nq:|d urU|\|_|_
n|jdf}| jj|jg|R   d S d S d S d S )Ndefaultdestc                 s  s&    | ]}| d d ddfV  qdS )-r+   N)lstripreplace)r-   ir   r   r   r0   I   s   $ z6VirtualEnvConfigParser._fix_default.<locals>.<genexpr>)r%   rY   r   r   r   option_stringsr	   rG   rE   r!   default_sourcerM   r   rZ   )r   rV   as_typenamesoutcomenamer   r   r   rT   F   s(   
z#VirtualEnvConfigParser._fix_defaultc                 C  s    |    | jdddtdd d S )Nz-hz--helphelpzshow this help message and exit)rV   rY   re   )rX   add_argumentr   r'   r   r   r   enable_helpZ   s   z"VirtualEnvConfigParser.enable_helpc                   sd   |d u r| j }n|| j urd}t||   d| j _z| j|_t j||dW d | j _S d | j _w )Nzcan only pass in parser.optionscli)	namespace)rM   
ValueErrorrX   r   rG   r   parse_known_args)r   rP   ri   rQ   r   r   r   rk   ^   s   
z'VirtualEnvConfigParser.parse_known_args)NNr8   )
r3   r9   r:   __doc__r   rX   rT   rg   rk   r<   r   r   r   r   r=   *   s    r=   c                      s*   e Zd Zd fddZ fddZ  ZS )rH   r   r   c                   s   t  j|ddd d S )N       )max_help_positionwidth)r   r   )r   rB   r   r   r   r   n   s   zHelpFormatter.__init__c                   s@   t  |}t|drd}||r|d t|   d}|S )Nr`   z (default: %(default)s)z2 (default: %(default)s -> from %(default_source)s))r   _get_help_stringr%   endswithlen)r   rV   textrY   r   r   r   rq   q   s   

zHelpFormatter._get_help_stringr8   )r3   r9   r:   r   rq   r<   r   r   r   r   rH   m   s    rH   )rH   r=   r   )
__future__r   rC   argparser   r   r   r   collectionsr   virtualenv.config.convertr   virtualenv.config.env_varr	   virtualenv.config.inir
   r   r=   rH   __all__r   r   r   r   <module>   s    C