0{Y@s ddlZddlZddlZddlmZmZddlmZddl m Z ddl m Z m Z mZddlmZddlmZddlmZdd lmZmZGd d d eZd d ZddddZddZddZdS)N)CommandSUCCESS)get_terminal_size)logger) xmlrpclibreducecmp) CommandError)NO_MATCHES_FOUND) pkg_resources) StrictVersion LooseVersioncsReZdZdZdZdZdZfddZddZd d Z S) SearchCommandz@Search for PyPI packages whose name or summary contains .searchz %prog [options] zSearch PyPI for packages.c s[tt|j|||jjddddddddd |jjd |jdS) Nz--indexdestindexmetavarURLdefaultzhttps://pypi.python.org/pypihelpz3Base URL of Python Package Index (default %default)r)superr__init__cmd_opts add_optionparserinsert_option_group)selfargskw) __class__./tmp/pip-ok8sy_ze-build/pip/commands/search.pyrs zSearchCommand.__init__cCs|stdn|}|j}|j||}t|}d}tjjrgtd}nt|d||rt St S)Nz)Missing required argument (search query).rterminal_width) r rrtransform_hitssysstdoutisattyr print_resultsrr )roptionsrquery index_url pypi_hitshitsr"r r r!run"s  zSearchCommand.runcCs3tj|}|ji|d6|d6d}|S)Nnamesummaryor)r ServerProxyr)rr)r*pypir,r r r!r4s zSearchCommand.search) __name__ __module__ __qualname____doc__r.usager/rr-rr r )rr!rs  rcCsi}x|D]}|d}|d}|d}|d}|dkrPd}n||jkri|d6|d6|gd6|d6||Tsz transform_hits..reverseT)keysappendhighest_versionsortedvalues)r,packageshitr.r/r8r; package_listr r r!r#:s        ,$r#c CsgddtjD}xJ|D]B}|d}|dp:d}|dk rtj|||d}dd|d j|}nd |j||f}ytj|||krItj|}tj d 7_ z_t |d } |j | kr tjd |j n%tjd|j tjd| Wdtj d 8_ XnWqt k r^YqXqWdS)NcSsg|]}|jqSr ) project_name).0pr r r! Ys z!print_results..r.r/  z%s - %sr:zINSTALLED: %s (latest)z INSTALLED: %sz LATEST: %s) r working_settextwrapwrapjoinljustrnotifyget_distributionindentrBr8UnicodeEncodeError) r,name_column_widthr"installed_packagesrFr.r/linedistlatestr r r!r'Xs,      r'cCsytt|t|SWntk r1YnXytt|t|SWnKtk rtddt|jDddt|jDSYnXdS)NcSsg|]}t|qSr )str)rJvr r r!rLs z$compare_versions..cSsg|]}t|qSr )ra)rJrbr r r!rLs )rr ValueErrorr TypeErrorr8)version1version2r r r!compare_versionsts  rgcCstdd|S)NcSst||dkr|p|S)N)rg)v1v2r r r!r>sz!highest_version..)r)r:r r r!rBsrB)r$rT pip.downloadpippip.basecommandrrpip.utilrpip.logrZpip.backwardcompatrrrpip.exceptionsr pip.status_codesr pip._vendorr distutils.versionr r rr#r'rgrBr r r r!s   *