<!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>
U
    .e:                     @   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mZ e eZG dd deZdS )	    N)Command)ERRORSUCCESS)Configurationget_configuration_fileskinds)PipError)get_progwrite_outputc                       sx   e Zd ZdZdZdZ f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  ZS )ConfigurationCommanda9  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

        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.
    Tz
        %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
    c                    s   t t| j|| 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jdddd	dd | jd| j d S )Nz--editoreditorZ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   )superr   __init__configurationZcmd_optsZ
add_optionparserZinsert_option_group)selfargskwargs	__class__ H/usr/lib/python3.8/site-packages/pip/_internal/commands/configuration.pyr   0   s>    zConfigurationCommand.__init__c              
   C   s  | j | j| j| j| jd}|r*|d |krHtddt	| t
S |d }z| j||dkd}W n: tk
r } zt|jd  t
 W Y S d }~X Y nX t|j|d| _| j  z|| ||dd   W n< tk
r } zt|jd  t
 W Y S d }~X Y nX tS )	N)listeditgetsetunsetr   zNeed an action ({}) to perform.z, )r"   r#   r$   r!   )
need_value)isolated	load_only   )list_valuesopen_in_editorget_nameset_name_value
unset_nameloggererrorformatjoinsortedr   _determine_filer   r   r   Zisolated_moder   loadr   )r   optionsr   Zhandlersr   r'   er   r   r   runZ   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)r8   Z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   ZUSERr   ZGLOBALr   ZSITEr   anyr   lenr   )r   r5   r%   Zfile_optionsr   r   r   r3      s$    



z$ConfigurationCommand._determine_filec                 C   s8   | j |ddd t| j D ]\}}td|| qd S )Nr    r   nz%s=%r)_get_n_argsr2   r   itemsr
   r   r5   r   r9   r:   r   r   r   r)      s    z ConfigurationCommand.list_valuesc                 C   s*   | j |ddd}| j|}td| d S )Nz
get [name]r(   rB   z%s)rD   r   Z	get_valuer
   rF   r   r   r   r+      s    zConfigurationCommand.get_namec                 C   s.   | j |ddd\}}| j|| |   d S )Nzset [name] [value]   rB   )rD   r   Z	set_value_save_configurationrF   r   r   r   r,      s    z#ConfigurationCommand.set_name_valuec                 C   s(   | j |ddd}| j| |   d S )Nzunset [name]r(   rB   )rD   r   Zunset_valuerH   )r   r5   r   r9   r   r   r   r-      s    zConfigurationCommand.unset_namec              
   C   sp   |  |}| j }|d kr$tdzt||g W n4 tjk
rj } ztd|jW 5 d }~X Y nX d S )Nz%Could not determine appropriate file.z*Editor Subprocess exited with exit code {})	_determine_editorr   Zget_file_to_editr   
subprocessZ
check_callZCalledProcessErrorr0   
returncode)r   r5   r   r   Zfnamer6   r   r   r   r*      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)rA   r0   r	   r   )r   r   ZexamplerC   msgr   r   r   rD      s      z ConfigurationCommand._get_n_argsc                 C   s>   z| j   W n* tk
r8   tjddd tdY nX d S )Nz:Unable to save configuration. Please report this as a bug.r(   )exc_infozInternal Error.)r   Zsave	Exceptionr.   r/   r   )r   r   r   r   rH      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   r<   environr   )r   r5   r   r   r   rI      s    




z&ConfigurationCommand._determine_editor)__name__
__module____qualname____doc__Zignore_require_venvZusager   r7   r3   r)   r+   r,   r-   r*   rD   rH   rI   __classcell__r   r   r   r   r      s   	*+r   )Zloggingr<   rJ   Zpip._internal.cli.base_commandr   Zpip._internal.cli.status_codesr   r   Zpip._internal.configurationr   r   r   Zpip._internal.exceptionsr   Zpip._internal.utils.miscr	   r
   Z	getLoggerrP   r.   r   r   r   r   r   <module>   s   
