<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Re$                 @   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rd d	lmZmZmZ d d
l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)ListAnyOptional)Values)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"   /builddir/build/BUILDROOT/alt-python37-pip-20.2.4-6.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/pip/_internal/commands/configuration.pyadd_options8   s2    z ConfigurationCommand.add_optionsc          
   C   s  | j | j| j| j| j| jd}|r.|d |krHtddt	| t
S |d }y| j||dkd}W n2 tk
r } zt|jd  t
S d }~X Y nX t|j|d| _| j  y|| ||dd   W n4 tk
r } zt|jd  t
S d }~X Y nX 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_   s6    

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)rB   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#   r9      s     

z$ConfigurationCommand._determine_filec             C   s<   | j |ddd x&t| j D ]\}}td|| q W d S )Nr%   r   )nz%s=%r)_get_n_argsr8   r<   itemsr   )r!   r>   r:   rC   rD   r"   r"   r#   r/      s    z ConfigurationCommand.list_valuesc             C   s*   | j |ddd}| j|}td| d S )Nz
get [name]r.   )rP   z%s)rQ   r<   	get_valuer   )r!   r>   r:   rC   rD   r"   r"   r#   r1      s    zConfigurationCommand.get_namec             C   s.   | j |ddd\}}| j|| |   d S )Nzset [name] [value]   )rP   )rQ   r<   	set_value_save_configuration)r!   r>   r:   rC   rD   r"   r"   r#   r2      s    z#ConfigurationCommand.set_name_valuec             C   s(   | j |ddd}| j| |   d S )Nzunset [name]r.   )rP   )rQ   r<   unset_valuerV   )r!   r>   r:   rC   r"   r"   r#   r3      s    zConfigurationCommand.unset_namec             C   s   | j |ddd |   xjt| j D ]X\}}td| xD|D ]<}t , tj	|}td|| |rr| 
| W dQ R X q@W q(W dS )z9List config key-value pairs across different config filesr*   r   )rP   z%s:z%s, exists: %rN)rQ   print_env_var_valuesr8   r<   iter_config_filesr   r	   rF   rG   rH   print_config_file_values)r!   r>   r:   variantfilesfnameZfile_existsr"   r"   r#   r4      s    

z'ConfigurationCommand.list_config_valuesc          
   C   s@   x:| j | D ]&\}}t  td|| W dQ R X qW dS )z.Get key-value pairs from the file of a variantz%s: %sN)r<   get_values_in_configrR   r	   r   )r!   r[   namerD   r"   r"   r#   rZ      s    z-ConfigurationCommand.print_config_file_valuesc          	   C   sV   t dd t < x4t| j D ]"\}}d| }t d|| q"W W dQ R X dS )z5Get key-values pairs present as environment variablesz%s:env_varzPIP_{}z%s=%rN)r   r	   r8   r<   get_environ_varsformatupper)r!   rC   rD   r`   r"   r"   r#   rX      s
    
z)ConfigurationCommand.print_env_var_valuesc          
   C   sp   |  |}| j }|d kr$tdyt||g W n4 tjk
rj } ztd|jW d d }~X Y nX d S )Nz%Could not determine appropriate file.z*Editor Subprocess exited with exit code {})	_determine_editorr<   get_file_to_editr   
subprocess
check_callCalledProcessErrorrb   
returncode)r!   r>   r:   r   r]   r@   r"   r"   r#   r0      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)rO   rb   r
   r   )r!   r:   ZexamplerP   msgr"   r"   r#   rQ      s    z ConfigurationCommand._get_n_argsc             C   s:   y| j   W n& tk
r4   td tdY nX d S )Nz:Unable to save configuration. Please report this as a bug.zInternal Error.)r<   save	Exceptionr5   	exceptionr   )r!   r"   r"   r#   rV     s    z(ConfigurationCommand._save_configurationc             C   sD   |j d k	r|j S dtjkr$tjd S dtjkr8tjd S tdd S )NZVISUALZEDITORz"Could not determine editor to use.)r   rF   environr   )r!   r>   r"   r"   r#   rd     s    




z&ConfigurationCommand._determine_editorN)__name__
__module____qualname____doc__ignore_require_venvusager$   rA   r9   r/   r1   r2   r3   r4   rZ   rX   r0   rQ   rV   rd   r"   r"   r"   r#   r      s"   	'.	r   ) loggingrF   rf   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   typingr   r   r   optparser   r   	getLoggerro   r5   r   r"   r"   r"   r#   <module>   s   
