
[Y                 @   s  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 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 Gd
 d   d e  Z d d   Z d d d d  Z d d   Z d d   Z d S)    N)CommandSUCCESS)get_terminal_size)logger)	xmlrpclibreducecmp)CommandError)NO_MATCHES_FOUND)pkg_resources)StrictVersionLooseVersionc                   sR   e  Z d  Z d Z d Z d Z d Z   f d d   Z d d   Z d	 d
   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 d d d d d	 |  j j d
 |  j  d  S)Nz--indexdestindexmetavarURLdefaultzhttps://pypi.python.org/pypihelpz3Base URL of Python Package Index (default %default)r   )superr   __init__cmd_opts
add_optionparserinsert_option_group)selfargskw)	__class__ ?/home/kubikplay/www/django_dtb/build/pip/pip/commands/search.pyr      s    	zSearchCommand.__init__c             C   s   | s t  d   n  | } | j } |  j | |  } t |  } d  } t j j   rg t   d } n  t | d | | r t	 St
 S)Nz)Missing required argument (search query).r   terminal_width)r	   r   r   transform_hitssysstdoutisattyr   print_resultsr   r
   )r   optionsr   query	index_url	pypi_hitshitsr"   r    r    r!   run"   s    	zSearchCommand.runc             C   s3   t  j |  } | j i | d 6| d 6d  } | S)Nnamesummaryor)r   ServerProxyr   )r   r)   r*   pypir,   r    r    r!   r   4   s     zSearchCommand.search)
__name__
__module____qualname____doc__r.   usager/   r   r-   r   r    r    )r   r!   r      s   r   c             C   s  i  } x |  D] } | d } | d } | d } | d } | d k rP d } n  | | j    k r i | d 6| d 6| g d 6| d 6| | <q | | d j |  | t | | d  k r | | | d <| | | d <q q Wt | j   d	 d
 d   d d } | 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_pypi_orderingNr   versionsscorekeyc             S   s   |  d S)Nr;   r    )xr    r    r!   <lambda>T   s    z transform_hits.<locals>.<lambda>reverseT)keysappendhighest_versionsortedvalues)r,   packageshitr.   r/   r8   r;   package_listr    r    r!   r#   :   s     



	,$r#      c       
      C   sg  d d   t  j D } xJ|  D]B} | d } | d p: d } | d  k	 r t j | | | d  } d d | d	 j |  } n  d
 | j |  | f } y t j |  | | k rIt  j |  } t j	 d 7_	 z_ t
 | d  }	 | j |	 k rt j d | j  n% t j d | j  t j d |	  Wd  t j	 d 8_	 Xn  Wq t k
 r^Yq Xq Wd  S)Nc             S   s   g  |  ] } | j   q Sr    )project_name).0pr    r    r!   
<listcomp>Y   s   	 z!print_results.<locals>.<listcomp>r.   r/       
    z%s - %s   r:   zINSTALLED: %s (latest)zINSTALLED: %szLATEST:    %s)r   working_settextwrapwrapjoinljustr   notifyget_distributionindentrB   r8   UnicodeEncodeError)
r,   name_column_widthr"   installed_packagesrF   r.   r/   linedistlatestr    r    r!   r'   X   s,    
r'   c             C   s   y t  t |   t |   SWn t k
 r1 Yn Xy t  t |   t |   SWnK t k
 r t  d d   t |   j D d d   t |  j D  SYn Xd  S)Nc             S   s   g  |  ] } t  |   q Sr    )str)rJ   vr    r    r!   rL      s   	 z$compare_versions.<locals>.<listcomp>c             S   s   g  |  ] } t  |   q Sr    )ra   )rJ   rb   r    r    r!   rL      s   	 )r   r   
ValueErrorr   	TypeErrorr8   )version1version2r    r    r!   compare_versionst   s    rg   c             C   s   t  d d   |   S)Nc             S   s   t  |  |  d k r |  p | S)N   )rg   )v1v2r    r    r!   r>      s    z!highest_version.<locals>.<lambda>)r   )r:   r    r    r!   rB      s    rB   )r$   rT   pip.downloadpippip.basecommandr   r   pip.utilr   pip.logr   Zpip.backwardcompatr   r   r   pip.exceptionsr	   pip.status_codesr
   pip._vendorr   distutils.versionr   r   r   r#   r'   rg   rB   r    r    r    r!   <module>   s   *