U
    «ÃT_q  ã                   @   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r°d 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-8u7dkzi1/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€|r®d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)ÚconfigZ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ÚkwrA   ©Ú	__class__r   r   r@   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 )Nz¸This 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=   rC   r;   ÚosÚenvironÚgetr   r+   r   )rF   r%   rG   r   r   r   Úrunt   s(    ÿ ÿzDebugCommand.run)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚusageÚignore_require_venvr@   rX   Ú__classcell__r   r   rI   r   r>   c   s
   r>   )$Ú
__future__r   rR   ÚloggingrU   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   Ú	getLoggerrY   r   r   r   r+   r=   r>   r   r   r   r   Ú<module>   s*   
"