Y@s=ddlmZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z ddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZejeZGdddeZ ddZ!ddddZ"ddZ#dS))absolute_importN)CommandSUCCESS) OrderedDict)PipXmlrpcTransport)PyPI)get_terminal_size) indent_log) CommandError)NO_MATCHES_FOUND)parse) pkg_resources) xmlrpc_clientcsReZdZdZdZdZdZfddZddZd d Z S) SearchCommandz@Search for PyPI packages whose name or summary contains .searchz %prog [options] zSearch PyPI for packages.c satt|j|||jjdddddddtjdd |jjd |jdS) Nz-iz--indexdestindexmetavarURLdefaulthelpz3Base URL of Python Package Index (default %default)r) superr__init__cmd_opts add_optionrpypi_urlparserinsert_option_group)selfargskw) __class__2/tmp/pip-build-3puug3g5/pip/pip/commands/search.pyrs   zSearchCommand.__init__cCsv|std|}|j||}t|}d}tjjrXtd}t|d||rrtSt S)Nz)Missing required argument (search query).rterminal_width) r rtransform_hitssysstdoutisattyr print_resultsrr )roptionsrquery pypi_hitshitsr$r"r"r#run)s   zSearchCommand.runc Csi|j}|j|J}t||}tj||}|jd|d|id}|SWdQRXdS)Nnamesummaryor)r_build_sessionrr ServerProxyr)rr+r* index_urlsession transportpypir-r"r"r#r9s  zSearchCommand.search) __name__ __module__ __qualname____doc__r/usager0rr.rr"r")r!r#rs  rcCst}x|D]}|d}|d}|d}||jkrhd|d|d|gi||-)lenget).0rEr"r"r# cs z!print_results..cSsg|]}|jqSr") project_name)rKpr"r"r#rLgs r/r0r>rFrG   z %-*s - %sz%s (%s)zINSTALLED: %s (latest)z INSTALLED: %sz LATEST: %srH)maxr working_setrJtextwrapwrapjoinloggerinfoget_distributionr rAr=UnicodeEncodeError) r-name_column_widthr$installed_packagesrEr/r0r= target_widthlinedistlatestr"r"r#r)^s>           r)cCst|dtS)Nkey)rV parse_version)r>r"r"r#rAsrA)$ __future__rloggingr&rXpip.basecommandrr pip.compatr pip.downloadr pip.modelsr pip.utilsrpip.utils.loggingr pip.exceptionsr pip.status_codesr Zpip._vendor.packaging.versionr rf pip._vendorr pip._vendor.six.movesr getLoggerr8r[rr%r)rAr"r"r"r#s&   + &