ó
ÇvSc           @   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 d
 e f d „  ƒ  YZ d „  Z d d d „ Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   Commandt   SUCCESS(   t   get_terminal_size(   t   logger(   t	   xmlrpclibt   reducet   cmp(   t   CommandError(   t   NO_MATCHES_FOUND(   t   pkg_resources(   t   StrictVersiont   LooseVersiont   SearchCommandc           B   s;   e  Z d  Z d Z d Z d Z d „  Z d „  Z d „  Z RS(   s@   Search for PyPI packages whose name or summary contains <query>.t   searchs   
      %prog [options] <query>s   Search PyPI for packages.c      
   O   s[   t  t |  ƒ j | | Ž  |  j j d d d d d d d d d	 ƒ|  j j d
 |  j ƒ d  S(   Ns   --indext   destt   indext   metavart   URLt   defaults   https://pypi.python.org/pypit   helps3   Base URL of Python Package Index (default %default)i    (   t   superR   t   __init__t   cmd_optst
   add_optiont   parsert   insert_option_group(   t   selft   argst   kw(    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyR      s    	c         C   s…   | s t  d ƒ ‚ n  | } | j } |  j | | ƒ } t | ƒ } d  } t j j ƒ  rg t ƒ  d } n  t	 | d | ƒ| r� t
 St S(   Ns)   Missing required argument (search query).i    t   terminal_width(   R   R   R   t   transform_hitst   Nonet   syst   stdoutt   isattyR   t   print_resultsR   R   (   R   t   optionsR   t   queryt	   index_urlt	   pypi_hitst   hitsR   (    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyt   run"   s    	c         C   s3   t  j | ƒ } | j i | d 6| d 6d ƒ } | S(   Nt   namet   summaryt   or(   R   t   ServerProxyR   (   R   R%   R&   t   pypiR(   (    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyR   4   s     (	   t   __name__t
   __module__t   __doc__R*   t   usageR+   R   R)   R   (    (    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyR      s   		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
 t ƒ} | S(   s¼   
    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+   t   versiont   _pypi_orderingi    t   versionst   scoret   keyc         S   s   |  d S(   NR6   (    (   t   x(    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyt   <lambda>T   s    t   reverseN(   R   t   keyst   appendt   highest_versiont   sortedt   valuest   True(   R(   t   packagest   hitR*   R+   R3   R6   t   package_list(    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyR   :   s     



	,!i   c         C   so  g  t  j D] } | j ^ q
 } xI|  D]A} | d } | d pC d } | d  k	 rŠ t j | | | d ƒ } d d | d j | ƒ } n  d | j | ƒ | f } y° t j	 | ƒ | | k rR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
 rfq& Xq& Wd  S(   NR*   R+   t    i   s   
t    i   s   %s - %si   R5   s   INSTALLED: %s (latest)s   INSTALLED: %ss   LATEST:    %s(   R	   t   working_sett   project_nameR   t   textwrapt   wrapt   joint   ljustR   t   notifyt   get_distributiont   indentR=   R3   t   UnicodeEncodeError(   R(   t   name_column_widthR   t   pt   installed_packagesRB   R*   R+   t   linet   distt   latest(    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyR#   X   s,    
c         C   s´   y t  t |  ƒ t | ƒ ƒ SWn t k
 r0 n Xy t  t |  ƒ t | ƒ ƒ SWn_ t k
 r¯ t  g  t |  ƒ j D] } t | ƒ ^ qq g  t | ƒ j D] } t | ƒ ^ q– ƒ SXd  S(   N(   R   R
   t
   ValueErrorR   t	   TypeErrorR3   t   str(   t   version1t   version2t   v(    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyt   compare_versionst   s    (c         C   s   t  d „  |  ƒ S(   Nc         S   s   t  |  | ƒ d k r |  p | S(   Ni   (   R\   (   t   v1t   v2(    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyR9   „   s    (   R   (   R5   (    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyR=   ƒ   s    (   R    RH   t   pip.downloadt   pipt   pip.basecommandR    R   t   pip.utilR   t   pip.logR   t   pip.backwardcompatR   R   R   t   pip.exceptionsR   t   pip.status_codesR   t   pip._vendorR	   t   distutils.versionR
   R   R   R   R   R#   R\   R=   (    (    (    sM   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/pip/commands/search.pyt   <module>   s   *		