U
    Mfq                     @   s   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ erd dlmZmZmZ d dlmZ eeZdd Zdd Z dd Z!dd Z"G dd deZ#dS )    )absolute_importN)where)
cmdoptions)Command)make_target_python)SUCCESS)
indent_log)get_pip_version)MYPY_CHECK_RUNNING)AnyListOptional)Valuesc                 C   s   t d| | d S )Nz{}: {})loggerinfoformat)namevalue r   @/tmp/pip-unpacked-wheel-o7_vsxcn/pip/_internal/commands/debug.py
show_value   s    r   c               	   C   sF   t d ttdr"tj} | j}nd}t  td| W 5 Q R X d S )Nzsys.implementation:implementation r   )r   r   hasattrsysr   r   r   r   )r   implementation_namer   r   r   show_sys_implementation!   s    

r   c           	   	   C   s   d}t | }| }| }d}|r.d|}dt||}t| | jdk rpt||krpd}|d | }nd}t 8 |D ]}tt	| q|rdj|d	}t| W 5 Q R X d S )
N
   r   z (target: {})zCompatible tags: {}{}   TFz?...
[First {tag_limit} tags shown. Pass --verbose to show all.])	tag_limit)
r   get_tagsformat_givenr   lenr   r   verboser   str)	optionsr   target_pythontagsZformatted_targetsuffixmsgZtags_limitedtagr   r   r   	show_tags.   s,    

r+   c                    sl   t  }|  D ]\}}||dd  q|s4dS dddg  fdd|D }|sXd	S |d	 d
|S )N.r   zNot specifiedinstallwheeldownloadc                    s   g | ]}| kr|qS r   r   ).0levelZlevels_that_override_globalr   r   
<listcomp>Y   s     z"ca_bundle_info.<locals>.<listcomp>globalz, )setitemsaddsplitremovejoin)configlevelskeyr   Zglobal_overriding_levelr   r2   r   ca_bundle_infoP   s    


r>   c                       s0   e Zd ZdZdZdZ fddZdd Z  ZS )DebugCommandz$
    Display debug information.
    z
      %prog <options>Tc                    s@   t t| j|| | j}t| | jd| | jj	  d S )Nr   )
superr?   __init__cmd_optsr   add_target_python_optionsparserinsert_option_groupr;   load)selfargskwrB   	__class__r   r   rA   l   s
    
zDebugCommand.__init__c                 C   s   t d tdt  tdtj tdtj tdt  tdt  tdt	
  tdtj t  td	t| jj td
tjd
 tdtjd tdt  t| tS )NzThis command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.zpip versionzsys.versionzsys.executablezsys.getdefaultencodingzsys.getfilesystemencodingzlocale.getpreferredencodingzsys.platformz'cert' config valueREQUESTS_CA_BUNDLECURL_CA_BUNDLEzpip._vendor.certifi.where())r   warningr   r	   r   version
executablegetdefaultencodinggetfilesystemencodinglocalegetpreferredencodingplatformr   r>   rD   r;   osenvirongetr   r+   r   )rG   r%   rH   r   r   r   runt   s(     zDebugCommand.run)	__name__
__module____qualname____doc__usageignore_require_venvrA   rY   __classcell__r   r   rJ   r   r?   c   s
   r?   )$
__future__r   rS   loggingrV   r   Zpip._vendor.certifir   Zpip._internal.clir   pip._internal.cli.base_commandr   Zpip._internal.cli.cmdoptionsr   pip._internal.cli.status_codesr   pip._internal.utils.loggingr   pip._internal.utils.miscr	   pip._internal.utils.typingr
   typingr   r   r   optparser   	getLoggerrZ   r   r   r   r+   r>   r?   r   r   r   r   <module>   s*   
"