a
    ”¼deo$  ã                   @   sÊ   d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZmZ d dlmZ er¬d d	lmZ d d
lmZmZmZ d dlmZ e  e¡ZG dd„ deƒZdS )é    N)ÚCommand)ÚERRORÚSUCCESS)ÚConfigurationÚget_configuration_filesÚkinds)ÚPipError)Ú
indent_log)Úget_progÚwrite_output)ÚMYPY_CHECK_RUNNING)ÚValues)ÚAnyÚListÚOptional)ÚKindc                   @   sˆ   e Zd ZdZdZdZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd S )!ÚConfigurationCommandah  
    Manage local and global configuration.

    Subcommands:

    - list: List the active configuration (or from the file specified)
    - edit: Edit the configuration file in an editor
    - get: Get the value associated with name
    - set: Set the name=value
    - unset: Unset the value associated with name
    - debug: List the configuration files and values defined under them

    If none of --user, --global and --site are passed, a virtual
    environment configuration file is used if one is active and the file
    exists. Otherwise, all modifications happen on the to the user file by
    default.
    Ta  
        %prog [<file-option>] list
        %prog [<file-option>] [--editor <editor-path>] edit

        %prog [<file-option>] get name
        %prog [<file-option>] set name value
        %prog [<file-option>] unset name
        %prog [<file-option>] debug
    c                 C   sl   | j jdddd dd� | j jdddd	d
d� | j jdddd	dd� | j jdddd	dd� | j d| j ¡ d S )Nz--editorÚeditorÚstorez\Editor to use to edit the file. Uses VISUAL or EDITOR environment variables if not provided.)ÚdestÚactionÚdefaultÚhelpz--globalÚglobal_fileÚ
store_trueFz+Use the system-wide configuration file onlyz--userÚ	user_filez$Use the user configuration file onlyz--siteÚ	site_filez3Use the current environment configuration file onlyr   )Úcmd_optsÚ
add_optionÚparserÚinsert_option_group©Úself© r#   ú]/var/www/sistema_ama/venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.pyÚadd_options4   s:    úûûûz ConfigurationCommand.add_optionsc              
   C   s  | j | j| j| j| j| jdœ}|r.|d |vrHt dd t	|ƒ¡¡ t
S |d }z| j||dv d�}W n8 tyž } z t |jd ¡ t
W  Y d }~S d }~0 0 t|j|d�| _| j ¡  z|| ||dd … ƒ W n: t�y } z t |jd ¡ t
W  Y d }~S d }~0 0 tS )	N)ÚlistÚeditÚgetÚsetÚunsetÚdebugr   zNeed an action (%s) to perform.z, )r(   r)   r*   r'   )Ú
need_value)ÚisolatedÚ	load_onlyé   )Úlist_valuesÚopen_in_editorÚget_nameÚset_name_valueÚ
unset_nameÚlist_config_valuesÚloggerÚerrorÚjoinÚsortedr   Ú_determine_filer   Úargsr   Úisolated_modeÚconfigurationÚloadr   )r"   Úoptionsr;   Úhandlersr   r.   Úer#   r#   r$   Úrun[   s>    ú
þÿ
ÿ
zConfigurationCommand.runc                 C   s€   dd„ t j|jft j|jft j|jffD ƒ}|s`|s8d S tdd„ tƒ t j D ƒƒrXt jS t jS nt	|ƒdkrt|d S t
dƒ‚d S )Nc                 S   s   g | ]\}}|r|‘qS r#   r#   )Ú.0ÚkeyÚvaluer#   r#   r$   Ú
<listcomp>‹   s   üz8ConfigurationCommand._determine_file.<locals>.<listcomp>c                 s   s   | ]}t j |¡V  qd S )N)ÚosÚpathÚexists)rC   Úsite_config_filer#   r#   r$   Ú	<genexpr>•   s   ÿz7ConfigurationCommand._determine_file.<locals>.<genexpr>r/   r   zLNeed exactly one file to operate upon (--user, --site, --global) to perform.)r   ÚUSERr   ÚGLOBALr   ÚSITEr   Úanyr   Úlenr   )r"   r?   r,   Zfile_optionsr#   r#   r$   r:   ‰   s$    


ý
þÿz$ConfigurationCommand._determine_filec                 C   s8   | j |ddd� t| j ¡ ƒD ]\}}td||ƒ qd S )Nr&   r   ©Únú%s=%r)Ú_get_n_argsr9   r=   Úitemsr   ©r"   r?   r;   rD   rE   r#   r#   r$   r0   ¤   s    z ConfigurationCommand.list_valuesc                 C   s*   | j |ddd�}| j |¡}td|ƒ d S )Nz
get [name]r/   rQ   z%s)rT   r=   Ú	get_valuer   rV   r#   r#   r$   r2   «   s    zConfigurationCommand.get_namec                 C   s.   | j |ddd�\}}| j ||¡ |  ¡  d S )Nzset [name] [value]é   rQ   )rT   r=   Ú	set_valueÚ_save_configurationrV   r#   r#   r$   r3   ²   s    z#ConfigurationCommand.set_name_valuec                 C   s(   | j |ddd�}| j |¡ |  ¡  d S )Nzunset [name]r/   rQ   )rT   r=   Úunset_valuerZ   )r"   r?   r;   rD   r#   r#   r$   r4   ¹   s    zConfigurationCommand.unset_namec              
   C   s”   | j |ddd� |  ¡  t| j ¡ ƒD ]h\}}td|ƒ |D ]P}tƒ �6 tj 	|¡}td||ƒ |rn|  
|¡ W d  ƒ q<1 s‚0    Y  q<q&dS )z9List config key-value pairs across different config filesr+   r   rQ   ú%s:z%s, exists: %rN)rT   Úprint_env_var_valuesr9   r=   Úiter_config_filesr   r	   rG   rH   rI   Úprint_config_file_values)r"   r?   r;   ÚvariantÚfilesÚfnameZfile_existsr#   r#   r$   r5   À   s    
ÿz'ConfigurationCommand.list_config_valuesc              	   C   sP   | j  |¡ ¡ D ]:\}}tƒ � td||ƒ W d  ƒ q1 s@0    Y  qdS )z.Get key-value pairs from the file of a variantz%s: %sN)r=   Úget_values_in_configrU   r	   r   )r"   r`   ÚnamerE   r#   r#   r$   r_   Ò   s
    ÿz-ConfigurationCommand.print_config_file_valuesc                 C   sf   t ddƒ tƒ �B t| j ¡ ƒD ]"\}}d | ¡ ¡}t d||ƒ q W d  ƒ n1 sX0    Y  dS )z5Get key-values pairs present as environment variablesr\   Úenv_varzPIP_{}rS   N)r   r	   r9   r=   Úget_environ_varsÚformatÚupper)r"   rD   rE   re   r#   r#   r$   r]   Ú   s
    
z)ConfigurationCommand.print_env_var_valuesc              
   C   sr   |   |¡}| j ¡ }|d u r$tdƒ‚zt ||g¡ W n6 tjyl } ztd |j¡ƒ‚W Y d }~n
d }~0 0 d S )Nz%Could not determine appropriate file.z*Editor Subprocess exited with exit code {})	Ú_determine_editorr=   Úget_file_to_editr   Ú
subprocessÚ
check_callÚCalledProcessErrorrg   Ú
returncode)r"   r?   r;   r   rb   rA   r#   r#   r$   r1   ã   s    

ÿÿz#ConfigurationCommand.open_in_editorc                 C   s<   t |ƒ|kr$d |tƒ |¡}t|ƒ‚|dkr4|d S |S dS )zJHelper to make sure the command got the right number of arguments
        zJGot unexpected number of arguments, expected {}. (example: "{} config {}")r/   r   N)rP   rg   r
   r   )r"   r;   ZexamplerR   Úmsgr#   r#   r$   rT   ó   s    ÿýz ConfigurationCommand._get_n_argsc                 C   s8   z| j  ¡  W n$ ty2   t d¡ tdƒ‚Y n0 d S )Nz:Unable to save configuration. Please report this as a bug.zInternal Error.)r=   ÚsaveÚ	Exceptionr6   Ú	exceptionr   r!   r#   r#   r$   rZ     s    ÿz(ConfigurationCommand._save_configurationc                 C   sD   |j d ur|j S dtjv r$tjd S dtjv r8tjd S tdƒ‚d S )NZVISUALZEDITORz"Could not determine editor to use.)r   rG   Úenvironr   )r"   r?   r#   r#   r$   ri     s    




z&ConfigurationCommand._determine_editorN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úignore_require_venvÚusager%   rB   r:   r0   r2   r3   r4   r5   r_   r]   r1   rT   rZ   ri   r#   r#   r#   r$   r      s"   
'.	r   ) ÚloggingrG   rk   Úpip._internal.cli.base_commandr   Úpip._internal.cli.status_codesr   r   Úpip._internal.configurationr   r   r   Úpip._internal.exceptionsr   Úpip._internal.utils.loggingr	   Úpip._internal.utils.miscr
   r   Úpip._internal.utils.typingr   Úoptparser   Útypingr   r   r   r   Ú	getLoggerrt   r6   r   r#   r#   r#   r$   Ú<module>   s   
