î
½1kdo  ã               @   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 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)Ú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__© úB/var/www/pythonscrapper/code/venv/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.   r7   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é   r9   zINSTALLED: %s (latest)zINSTALLED: %szLATEST:    %s)Úpkg_resourcesÚworking_setÚtextwrapÚwrapÚjoinÚljustr   ÚnotifyÚget_distributionÚindentrA   r7   ÚUnicodeEncodeError)
r+   Úname_column_widthr!   Úinstalled_packagesrE   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)rI   Úvr   r   r    rK      s   	 z$compare_versions.<locals>.<listcomp>c             S   s   g  |  ] } t  | ƒ ‘ q Sr   )ra   )rI   rb   r   r   r    rK   €   s   	 )r   r   Ú
ValueErrorr   Ú	TypeErrorr7   )Ú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   )r9   r   r   r    rA   ƒ   s    rA   )r#   rT   Úpip.downloadÚpipÚpip.basecommandr   r   Úpip.utilr   Úpip.logr   Zpip.backwardcompatr   r   r   Úpip.exceptionsr	   Úpip.status_codesr
   rR   Údistutils.versionr   r   r   r"   r&   rg   rA   r   r   r   r    Ú<module>   s   *