U
    „~$h�  ã                   @   sž  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	m
Z
mZm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 d dl m!Z! d dl"m#Z# d dl$m%Z% e &e'¡Z(e)e	ddœdd„Z*ddœdd„Z+e
e)e)f dœdd„Z,e)ee dœdd„Z-e)ee) dœdd„Z.e
e)e)f ddœdd„Z/ddœd d!„Z0edd"œd#d$„Z1ee)d%œd&d'„Z2G d(d)„ d)eƒZ3dS )*é    N)ÚValues)Ú
ModuleType)ÚAnyÚDictÚListÚOptional)Úwhere)Úparse)Ú
cmdoptions)ÚCommand)Úmake_target_python)ÚSUCCESS)ÚConfiguration)Úget_environment)Úopen_text_resource)Ú
indent_log)Úget_pip_version)ÚnameÚvalueÚreturnc                 C   s   t  d| |¡ d S )Nz%s: %s)ÚloggerÚinfo)r   r   © r   ú@/tmp/pip-unpacked-wheel-g27rp152/pip/_internal/commands/debug.pyÚ
show_value   s    r   ©r   c               	   C   s2   t  d¡ tjj} tƒ � td| ƒ W 5 Q R X d S )Nzsys.implementation:r   )r   r   ÚsysÚimplementationr   r   r   )Úimplementation_namer   r   r   Úshow_sys_implementation   s    
r   c               	   C   s:   t ddƒ�} dd„ |  ¡ D ƒ}W 5 Q R X tdd„ |D ƒƒS )Nzpip._vendorz
vendor.txtc                 S   s(   g | ] }d |kr|  ¡  dd¡d ‘qS )ú==ú é   r   )ÚstripÚsplit©Ú.0Úliner   r   r   Ú
<listcomp>)   s     z)create_vendor_txt_map.<locals>.<listcomp>c                 s   s   | ]}|  d d¡V  qdS )r    r"   N©r$   r%   r   r   r   Ú	<genexpr>.   s     z(create_vendor_txt_map.<locals>.<genexpr>)r   Ú	readlinesÚdict)ÚfÚlinesr   r   r   Úcreate_vendor_txt_map%   s
    ÿr/   )Úmodule_namer   c                 C   sx   |   ¡  dd¡} | dkrd} z(td| › �tƒ tƒ dd� ttj| ƒW S  tk
rr   | dkrlt	j
d	k rlY d S ‚ Y nX d S )
Nú-Ú_Ú
setuptoolsÚpkg_resourceszpip._vendor.r   )ÚlevelZ
truststore)é   é
   )ÚlowerÚreplaceÚ
__import__ÚglobalsÚlocalsÚgetattrÚpipÚ_vendorÚImportErrorr   Úversion_info)r0   r   r   r   Úget_module_from_module_name1   s    rB   c                 C   sZ   t | ƒ}t|dd ƒ}|rV|sV|jd k	s*t‚ttj |j¡gƒ}| | ¡}|rVt	|j
ƒ}|S )NÚ__version__)rB   r=   Ú__file__ÚAssertionErrorr   ÚosÚpathÚdirnameÚget_distributionÚstrÚversion)r0   ÚmodulerK   ÚenvÚdistr   r   r   Úget_vendor_version_from_moduleC   s    

rO   )Úvendor_txt_versionsr   c                 C   s\   |   ¡ D ]N\}}d}t|ƒ}|s*d}|}nt|ƒt|ƒkrFd|› d�}t d|||¡ qdS )z{Log the actual version and print extra info if there is
    a conflict or if the actual version could not be imported.
    Ú zM (Unable to locate actual module version, using vendor.txt specified version)z2 (CONFLICT: vendor.txt suggests version should be ú)z%s==%s%sN)ÚitemsrO   Úparse_versionr   r   )rP   r0   Zexpected_versionZextra_messageZactual_versionr   r   r   Úshow_actual_vendor_versionsR   s    ÿ
ÿrU   c               	   C   s.   t  d¡ tƒ } tƒ � t| ƒ W 5 Q R X d S )Nzvendored library versions:)r   r   r/   r   rU   )rP   r   r   r   Úshow_vendor_versionsg   s    
rV   )Úoptionsr   c           	   	   C   sÀ   d}t | ƒ}| ¡ }| ¡ }d}|r0d|› d�}dt|ƒ› |› �}t |¡ | jdk rtt|ƒ|krtd}|d |… }nd}tƒ �8 |D ]}t t|ƒ¡ q„|r²d	|› d
�}t |¡ W 5 Q R X d S )Nr7   rQ   z
 (target: rR   zCompatible tags: r"   TFz...
[First z) tags shown. Pass --verbose to show all.])	r   Zget_sorted_tagsÚformat_givenÚlenr   r   Úverboser   rJ   )	rW   Z	tag_limitÚtarget_pythonÚtagsZformatted_targetÚsuffixÚmsgZtags_limitedÚtagr   r   r   Ú	show_tagso   s&    
r`   )Úconfigr   c                    sZ   dd„ |   ¡ D ƒ}|sdS dddg‰ ‡ fdd„|D ƒ}|s>d	S d	|krP| d	¡ d
 |¡S )Nc                 S   s    h | ]\}}|  d d¡d ’qS )Ú.r"   r   r)   )r&   Úkeyr2   r   r   r   Ú	<setcomp>Ž   s     z!ca_bundle_info.<locals>.<setcomp>zNot specifiedÚinstallÚwheelÚdownloadc                    s   g | ]}|ˆ kr|‘qS r   r   )r&   r5   ©Zlevels_that_override_globalr   r   r(   “   s     z"ca_bundle_info.<locals>.<listcomp>Úglobalz, )rS   ÚremoveÚjoin)ra   ÚlevelsZglobal_overriding_levelr   rh   r   Úca_bundle_info�   s    

ÿ
rm   c                   @   s<   e Zd ZdZdZdZddœdd„Zeee	 e
dœd	d
„ZdS )ÚDebugCommandz$
    Display debug information.
    z
      %prog <options>TNr   c                 C   s,   t  | j¡ | j d| j¡ | jj ¡  d S )Nr   )r
   Úadd_target_python_optionsÚcmd_optsÚparserÚinsert_option_groupra   Úload)Úselfr   r   r   Úadd_options§   s    zDebugCommand.add_options)rW   Úargsr   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dtjjƒ 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()zpip._vendor.DEBUNDLED)r   Úwarningr   r   r   rK   Ú
executableÚgetdefaultencodingÚgetfilesystemencodingÚlocaleÚgetpreferredencodingÚplatformr   rm   rq   ra   rF   ÚenvironÚgetr   r>   r?   Ú	DEBUNDLEDrV   r`   r   )rt   rW   rv   r   r   r   Úrun¬   s,    ÿþzDebugCommand.run)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚusageÚignore_require_venvru   r   r   rJ   Úintrƒ   r   r   r   r   rn   ž   s
   rn   )4r}   ÚloggingrF   r   Úoptparser   Útypesr   Útypingr   r   r   r   Úpip._vendorr>   Zpip._vendor.certifir   Zpip._vendor.packaging.versionr	   rT   Zpip._internal.clir
   Úpip._internal.cli.base_commandr   Zpip._internal.cli.cmdoptionsr   Úpip._internal.cli.status_codesr   Úpip._internal.configurationr   Zpip._internal.metadatar   Úpip._internal.utils.compatr   Úpip._internal.utils.loggingr   Úpip._internal.utils.miscr   Ú	getLoggerr„   r   rJ   r   r   r/   rB   rO   rU   rV   r`   rm   rn   r   r   r   r   Ú<module>   s:   
