U
    +|jÞ  ã                   @   s.  d dl 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mZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ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% G dd„ de%ƒZ&e  'e(¡Z)G dd„ deeƒZ*dd„ Z+ddd„Z,dd„ Z-dS )é    N)ÚOrderedDict)ÚValues)ÚTYPE_CHECKINGÚDictÚListÚOptional)Úparse)ÚCommand)ÚSessionCommandMixin)ÚNO_MATCHES_FOUNDÚSUCCESS)ÚCommandError)Úget_default_environment)ÚPyPI)ÚPipXmlrpcTransport)Ú
indent_log)Úwrite_output)Ú	TypedDictc                   @   s*   e Zd ZU eed< eed< ee ed< dS )ÚTransformedHitÚnameÚsummaryÚversionsN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   © r   r   úeC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\site-packages\pip/_internal/commands/search.pyr      s   
r   c                   @   s0   e Zd ZdZdZdZdd„ Zdd„ Zdd	„ Zd
S )ÚSearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>Tc                 C   s.   | j jddddtjdd� | j d| j ¡ d S )Nz-iz--indexÚindexÚURLz3Base URL of Python Package Index (default %default))ÚdestÚmetavarÚdefaultÚhelpr   )Úcmd_optsÚ
add_optionr   Úpypi_urlÚparserÚinsert_option_group)Úselfr   r   r   Úadd_options(   s     ûzSearchCommand.add_optionsc                 C   sV   |st dƒ‚|}|  ||¡}t|ƒ}d }tj ¡ r>t ¡ d }t||d� |rRt	S t
S )Nz)Missing required argument (search query).r   )Úterminal_width)r   ÚsearchÚtransform_hitsÚsysÚstdoutÚisattyÚshutilÚget_terminal_sizeÚprint_resultsr   r   )r+   ÚoptionsÚargsÚqueryZ	pypi_hitsÚhitsr-   r   r   r   Úrun3   s    
zSearchCommand.runc           
   
   C   s’   |j }|  |¡}t||ƒ}tj ||¡}z| ||dœd¡}W n@ tjjk
r~ } zdj|j	|j
d�}	t|	ƒ‚W 5 d }~X Y nX t|tƒsŽt‚|S )N)r   r   Úorz-XMLRPC request failed [code: {code}]
{string})ÚcodeÚstring)r    Úget_default_sessionr   ÚxmlrpcÚclientÚServerProxyr.   ÚFaultÚformatÚ	faultCodeÚfaultStringr   Ú
isinstanceÚlistÚAssertionError)
r+   r8   r6   Ú	index_urlÚsessionÚ	transportÚpypir9   ÚfaultÚmessager   r   r   r.   D   s    

þzSearchCommand.searchN)	r   r   r   Ú__doc__ÚusageÚignore_require_venvr,   r:   r.   r   r   r   r   r   !   s   r   c                 C   s†   t ƒ }| D ]n}|d }|d }|d }|| ¡ krF|||gdœ||< q
|| d  |¡ |t|| d ƒkr
||| d< q
t| ¡ ƒS )z¼
    The list from pypi is really a list of versions. We want a list of
    packages with the list of versions stored inline. This converts the
    list from pypi into one we can use.
    r   r   Úversion)r   r   r   r   )r   ÚkeysÚappendÚhighest_versionrG   Úvalues)r9   ÚpackagesÚhitr   r   rR   r   r   r   r/   X   s    ýr/   c              
   C   sR  | sd S |d kr&t dd„ | D ƒƒd }tƒ }| D �]}|d }|d pHd}t| ddg¡ƒ}|d k	rš|| d	 }|d
kršt ||¡}	dd|d    |	¡}|› d|› d�}
|
|› ›d|› �}zxt|ƒ | |¡}|d k	�r2t	ƒ �L |j
|krútd|j
ƒ n.td|j
ƒ t|ƒj�rtd|ƒ n
td|ƒ W 5 Q R X W q0 tk
�rJ   Y q0X q0d S )Nc              	   S   s.   g | ]&}t |d  ƒt t| ddg¡ƒƒ ‘qS )r   r   ú-)ÚlenrU   Úget)Ú.0rX   r   r   r   Ú
<listcomp>z   s   ÿz!print_results.<locals>.<listcomp>é   r   r   Ú r   rY   é   é
   Ú
ú é   z (ú)z - zINSTALLED: %s (latest)zINSTALLED: %sz=LATEST:    %s (pre-release; install with "pip install --pre")zLATEST:    %s)Úmaxr   rU   r[   ÚtextwrapÚwrapÚjoinr   Úget_distributionr   rR   Úparse_versionÚpreÚUnicodeEncodeError)r9   Zname_column_widthr-   ÚenvrX   r   r   ZlatestZtarget_widthZsummary_linesZname_latestÚlineÚdistr   r   r   r5   u   sJ    þý
ÿ


ÿr5   c                 C   s   t | td�S )N)Úkey)rf   rk   )r   r   r   r   rU       s    rU   )NN).Úloggingr3   r0   rg   Úxmlrpc.clientr?   Úcollectionsr   Úoptparser   Útypingr   r   r   r   Zpip._vendor.packaging.versionr   rk   Úpip._internal.cli.base_commandr	   Úpip._internal.cli.req_commandr
   Úpip._internal.cli.status_codesr   r   Úpip._internal.exceptionsr   Úpip._internal.metadatar   Úpip._internal.models.indexr   Zpip._internal.network.xmlrpcr   Úpip._internal.utils.loggingr   Úpip._internal.utils.miscr   r   r   Ú	getLoggerr   Úloggerr   r/   r5   rU   r   r   r   r   Ú<module>   s2   
7
+