£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
Pf                 @   s   d dl mZ d dlZd dlZd dl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 d d
lmZ d dlmZ d dlmZ d dlmZ ejeZG dd deZ dd Z!dddZ"dd Z#dS )    )absolute_importN)CommandSUCCESS)OrderedDict)PipXmlrpcTransport)PyPI)get_terminal_size)
indent_log)CommandError)NO_MATCHES_FOUND)parse)pkg_resources)xmlrpc_clientc                   s<   e Zd ZdZdZdZdZ fddZdd Zd	d
 Z	  Z
S )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.searchz
      %prog [options] <query>zSearch PyPI for packages.c                s@   t t| j|| | jjddddtjdd | jjd| j d S )Nz-iz--indexindexZURLz3Base URL of Python Package Index (default %default))destmetavardefaulthelpr   )	superr   __init__Zcmd_optsZ
add_optionr   Zpypi_urlparserZinsert_option_group)selfargskw)	__class__ /usr/lib/python3.6/search.pyr      s    zSearchCommand.__init__c             C   sT   |st d|}| j||}t|}d }tjj r<t d }t||d |rPtS t	S )Nz)Missing required argument (search query).r   )terminal_width)
r
   r   transform_hitssysstdoutisattyr   print_resultsr   r   )r   optionsr   queryZ	pypi_hitshitsr   r   r   r   run)   s    

zSearchCommand.runc             C   sH   |j }| j|.}t||}tj||}|j||dd}|S Q R X d S )N)namesummaryor)r   Z_build_sessionr   r   ZServerProxyr   )r   r&   r%   Z	index_urlZsessionZ	transportZpypir'   r   r   r   r   9   s    
zSearchCommand.search)__name__
__module____qualname____doc__r)   Zusager*   r   r(   r   __classcell__r   r   )r   r   r      s   r   c             C   s   t  }xv| D ]n}|d }|d }|d }||j krH|||gd||< q|| d j| |t|| d kr||| d< qW t|j 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*   versionsr2   )r   keysappendhighest_versionlistvalues)r'   Zpackageshitr)   r*   r1   r   r   r   r    B   s    
r    c             C   sT  | sd S |d kr&t dd | D d }dd tjD }x| D ]}|d }|d pVd}|jdd	gd }|d k	r|| d }|dkrtj||}dd|d   j|}d|d||f |f }	yvtj|	 ||kr2tj	|}
t
 H t|d }|
j|krtjd|
j ntjd|
j tjd| W d Q R X W q> tk
rJ   Y q>X q>W d S )Nc             S   s.   g | ]&}t |d  t |jddgd  qS )r)   r2   -   )lenget).0r8   r   r   r   
<listcomp>c   s   z!print_results.<locals>.<listcomp>   c             S   s   g | ]
}|j qS r   )Zproject_name)r>   pr   r   r   r?   g   s    r)   r*    r2   r9   r:      
   
    z	%-*s - %sz%s (%s)zINSTALLED: %s (latest)zINSTALLED: %szLATEST:    %sr;   )maxr   Zworking_setr=   textwrapZwrapjoinloggerinfoZget_distributionr	   r5   r1   UnicodeEncodeError)r'   Zname_column_widthr   Zinstalled_packagesr8   r)   r*   r1   Ztarget_widthlineZdistZlatestr   r   r   r$   ^   s>    


r$   c             C   s   t | tdS )N)key)rH   parse_version)r2   r   r   r   r5      s    r5   )NN)$Z
__future__r   Zloggingr!   rI   Zpip.basecommandr   r   Z
pip.compatr   Zpip.downloadr   Z
pip.modelsr   Z	pip.utilsr   Zpip.utils.loggingr	   Zpip.exceptionsr
   Zpip.status_codesr   Zpip._vendor.packaging.versionr   rP   Zpip._vendorr   Zpip._vendor.six.movesr   Z	getLoggerr,   rK   r   r    r$   r5   r   r   r   r   <module>   s&   
+
&