o aiA @sddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z m Z m Z mZddlmZddlmZddlmZddlmZmZdd lmZdd lmZdd lmZdd lm Z dd l!m"Z"ddl#m$Z$e rzddl m%Z%Gddde%Z&e'e(Z)GdddeeZ*de e e+e+fde dfddZ,de+de+ddfddZ-  d#de ddee.dee.ddfddZ/d e e+de+fd!d"Z0dS)$N) OrderedDict)Values) TYPE_CHECKINGDictListOptional)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS) CommandError)get_default_environment)PyPI)PipXmlrpcTransport) indent_log) write_output) TypedDictc@s*eZdZUeed<eed<eeed<dS)TransformedHitnamesummaryversionsN)__name__ __module__ __qualname__str__annotations__rrr/builddir/build/BUILDROOT/alt-python310-pip-21.3.1-5.el8.x86_64/opt/alt/python310/lib/python3.10/site-packages/pip/_internal/commands/search.pyrs rc @sbeZdZdZdZdZdddZded ee de fd d Z d ee dedee e e ffd dZ dS) SearchCommandz@Search for PyPI packages whose name or summary contains .z %prog [options] TreturnNcCs.|jjddddtjdd|jd|jdS)Nz-iz--indexindexURLz3Base URL of Python Package Index (default %default))destmetavardefaulthelpr)cmd_opts add_optionrpypi_urlparserinsert_option_group)selfrrr add_options)s zSearchCommand.add_optionsoptionsargscCsV|std|}|||}t|}d}tjrtd}t||d|r)t St S)Nz)Missing required argument (search query).r)terminal_width) r searchtransform_hitssysstdoutisattyshutilget_terminal_size print_resultsr r )r,r.r/queryZ pypi_hitshitsr0rrrrun5s    zSearchCommand.runr9c Cs|j}||}t||}tj||}z |||dd}Wntjjy:}z dj|j |j d} t | d}~wwt |t sBJ|S)N)rrorz-XMLRPC request failed [code: {code}] {string})codestring)r!get_default_sessionrxmlrpcclient ServerProxyr1Faultformat faultCode faultStringr isinstancelist) r,r9r. index_urlsession transportpypir:faultmessagerrrr1Es   zSearchCommand.search)r N)rrr__doc__usageignore_require_venvr-rrrintr;rr1rrrrr"s  *rr:r cCst}|D]7}|d}|d}|d}||vr#|||gd||<q||d||t||dkr<|||d<qt|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. rrversion)rrrr)rkeysappendhighest_versionrHvalues)r:packageshitrrrSrrrr2Xs    r2rlatestcCst}||}|durTt;|j|krtd|jntd|jt|jr-td|ntd|WddSWddSWddS1sMwYdSdS)NzINSTALLED: %s (latest)z INSTALLED: %sz=LATEST: %s (pre-release; install with `pip install --pre`)z LATEST: %s)rget_distributionrrSr parse_versionpre)rrZenvdistrrrprint_dist_installation_infots&     "r`name_column_widthr0c Cs|sdS|durtdd|Dd}|D]Y}|d}|dp d}t|ddg}|durI||d }|d krIt||}d d |d |}|d|d} | |d|} z t| t||WqtynYqwdS)Nc Ss.g|]}t|dtt|ddgqS)rr-)lenrVget).0rYrrr s z!print_results..rrrrb   z ()z - ) maxrVrdtextwrapwrapjoinrr`UnicodeEncodeError) r:rar0rYrrrZZ target_widthZ summary_linesZ name_latestlinerrrr8s:     r8rcCs t|tdS)N)key)ror\)rrrrrVs rV)NN)1loggingr6r3rp xmlrpc.clientr@ collectionsroptparsertypingrrrrZpip._vendor.packaging.versionrr\pip._internal.cli.base_commandr pip._internal.cli.req_commandr pip._internal.cli.status_codesr r pip._internal.exceptionsr pip._internal.metadatarpip._internal.models.indexrZpip._internal.network.xmlrpcrpip._internal.utils.loggingrpip._internal.utils.miscrrr getLoggerrloggerrrr2r`rRr8rVrrrrsJ             "6 &