3
W>p_                 @   s   d dl mZm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dS )    )absolute_importunicode_literals)SUPPRESSArgumentDefaultsHelpFormatterArgumentParser	Namespace)OrderedDict)get_type   )get_env_var)	IniConfigc                   sL   e Zd Z fddZdd Z fddZdd Zed	d
 Zdd Z	  Z
S )VirtualEnvOptionsc                s"   t t| jf | d | _i | _d S )N)superr   __init___src_sources)selfkwargs)	__class__ /home/aldo/Documentos/tesis/tesis/device auto/pruebas pulsar/pruebaclonado/envClonado/lib/python3.6/site-packages/virtualenv/config/cli/parser.pyr      s    zVirtualEnvOptions.__init__c             C   s(   t | || |jdrd}|| j|< d S )Nzenv var)setattr
startswithr   )r   keyvaluesrcr   r   r   set_src   s    
zVirtualEnvOptions.set_srcc                s2   t | dd d k	r| j| j|< tt| j|| d S )Nr   )getattrr   r   r   r   __setattr__)r   r   r   )r   r   r   r      s    zVirtualEnvOptions.__setattr__c             C   s   | j j|S )N)r   get)r   r   r   r   r   
get_source   s    zVirtualEnvOptions.get_sourcec             C   s.   t | d rt | d rd S t| j| j dS )Nverbosequietr   )hasattrmaxr!   r"   )r   r   r   r   	verbosity    s    zVirtualEnvOptions.verbosityc             C   s*   dj t| jdjdd t| j D S )Nz{}({})z, c             s   s(   | ] \}}|j d sdj||V  qdS )_z{}={}N)r   format).0kvr   r   r   	<genexpr>)   s    z-VirtualEnvOptions.__repr__.<locals>.<genexpr>)r'   type__name__joinvarsitems)r   r   r   r   __repr__&   s    zVirtualEnvOptions.__repr__)r-   
__module____qualname__r   r   r   r    propertyr%   r1   __classcell__r   r   )r   r   r      s   r   c                   sH   e Zd ZdZd fdd	Zdd Zdd Zd	d
 Zd fdd	Z  Z	S )VirtualEnvConfigParserzy
    Custom option parser which updates its defaults by checking the configuration files and environmental variables
    Nc                s   t  | _g | _| jj|d< d|d< t|d< d|d< tt| j|| t | _	|d k	rht
|t rhtd|d krvt n|| _d | _d | _d S )NepilogFadd_helpformatter_class
virtualenvprogz)options must be of type VirtualEnvOptions)r   file_configZepilog_listr7   HelpFormatterr   r6   r   set_fixed
isinstancer   	TypeErroroptions_interpreterZ	_app_data)r   rB   argsr   )r   r   r   r   2   s    zVirtualEnvConfigParser.__init__c             C   s<   x6| j D ],}t|}|| jkr| j| | jj| qW d S )N)_actionsidr?   _fix_defaultadd)r   actionZ	action_idr   r   r   _fix_defaultsA   s
    

z$VirtualEnvConfigParser._fix_defaultsc             C   s   t |drt |dr|jtkrt|}tdd |jD }d }x |D ]}t||}|d k	rDP qDW |d kr| jrx$|D ]}| jj||}|d k	rtP qtW |d k	r|\|_|_	n
|jdf}| j
j|jf|  d S )Ndefaultdestc             s   s$   | ]}|j d jd ddfV  qdS )-r&   N)lstripreplace)r(   ir   r   r   r+   K   s    z6VirtualEnvConfigParser._fix_default.<locals>.<genexpr>)r#   rK   r   r	   r   option_stringsr   r<   r   default_sourcerB   r   rL   )r   rI   Zas_typenamesZoutcomenamer   r   r   rG   H   s"    



z#VirtualEnvConfigParser._fix_defaultc             C   s    | j   | jdddtdd d S )Nz-hz--helphelpzshow this help message and exit)rI   rK   rU   )rJ   add_argumentr   )r   r   r   r   enable_help\   s    z"VirtualEnvConfigParser.enable_helpc                sV   |d kr| j }n|| j k	r"td| j  d| j _ztt| j||dS d | j _X d S )Nzcan only pass in parser.optionscli)	namespace)rB   
ValueErrorrJ   r   r   r6   parse_known_args)r   rD   rY   )r   r   r   r[   `   s    
z'VirtualEnvConfigParser.parse_known_args)N)NN)
r-   r2   r3   __doc__r   rJ   rG   rW   r[   r5   r   r   )r   r   r6   -   s   r6   c                   s(   e Zd Z fddZ fddZ  ZS )r=   c                s   t t| j|ddd d S )N       )max_help_positionwidth)r   r=   r   )r   r;   )r   r   r   r   n   s    zHelpFormatter.__init__c                sD   t t| j|}t|dr@d}|j|r@dj|d t|  }|S )NrR   z (default: %(default)s)z4{} (default: %(default)s -> from %(default_source)s))r   r=   _get_help_stringr#   endswithr'   len)r   rI   textrK   )r   r   r   ra   q   s    

zHelpFormatter._get_help_string)r-   r2   r3   r   ra   r5   r   r   )r   r   r=   m   s   r=   N)
__future__r   r   argparser   r   r   r   collectionsr   Zvirtualenv.config.convertr	   env_varr   Zinir   r   r6   r=   r   r   r   r   <module>   s   !@