3 ”ReTã@sÈddlmZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZddlmZdd lmZer˜dd lmZdd lmZmZmZejeƒZGd d „d e ƒZdd„Zddd„ZdS)é)Úabsolute_importN)Ú FeedParser)Ú pkg_resources)Úcanonicalize_name)ÚCommand)ÚERRORÚSUCCESS)Ú write_output)ÚMYPY_CHECK_RUNNING)ÚValues)ÚListÚDictÚIteratorc@s(eZdZdZdZdZdd„Zdd„ZdS) Ú ShowCommandzx Show information about one or more installed packages. The output is in RFC-compliant mail header format. z$ %prog [options] ...TcCs,|jjddddddd�|jjd|jƒdS) Nz-fz--filesÚfilesÚ store_trueFz7Show the full list of installed files for each package.)ÚdestÚactionÚdefaultÚhelpr)Úcmd_optsÚ add_optionÚparserÚinsert_option_group)Úself©rúŠ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/commands/show.pyÚ add_options!szShowCommand.add_optionscCs8|stjdƒtS|}t|ƒ}t||j|jd�s4tStS)Nz.ERROR: Please provide a package name or names.)Ú list_filesÚverbose)ÚloggerÚwarningrÚsearch_packages_infoÚ print_resultsrrr)rÚoptionsÚargsÚqueryÚresultsrrrÚrun,s zShowCommand.runN)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚusageÚignore_require_venvrr(rrrrrs  rc#sfi‰xtjD]}|ˆt|jƒ<q Wdd„|Dƒ}t‡fdd„t||ƒDƒƒ}|rbtjddj|ƒƒdd„}�xô‡fdd„|DƒD�]܉ˆjˆj ˆj d d„ˆj ƒDƒ|ˆjƒd œ}d }d }t ˆtj ƒ�r&ˆjd ƒ�rˆjd ƒ}dd„|Dƒ} ‡fdd„| Dƒ} ‡fdd„| Dƒ}ˆjdƒ�rvˆjdƒ}nPˆjdƒ�r`ˆjdƒ} ‡fdd„| Dƒ} ‡fdd„| Dƒ}ˆjdƒ�rvˆjdƒ}ˆjdƒ�r”ˆjdƒ} | |d<ˆjdƒ�rÎx,ˆjdƒD]} | jƒ�r¬| jƒ|d<P�q¬Wtƒ} | j|ƒ| jƒ} xd#D]}| j|ƒ||<�qìWg}x4|jƒD](} | jd ƒ�r|j| td ƒd …ƒ�qW||d!<|�rXt|ƒ|d"<|Vq€Wd S)$zî Gather details from installed distributions. Print distribution name, version, location, and installed files. Installed files requires a pip generated 'installed-files.txt' in the distributions '.egg-info' directory. cSsg|] }t|ƒ‘qSr)r)Ú.0Únamerrrú Fsz(search_packages_info..csg|]\}}|ˆkr|‘qSrr)r/r0Úpkg)Ú installedrrr1HszPackage(s) not found: %sz, cst|ƒ‰‡fdd„tjDƒS)Ncs(g|] }ˆdd„|jƒDƒkr|j‘qS)cSsg|]}t|jƒ‘qSr)rr0)r/Úrequiredrrrr1SszSsearch_packages_info..get_requiring_packages...)ÚrequiresÚ project_name)r/r2)Úcanonical_namerrr1QszHsearch_packages_info..get_requiring_packages..)rrÚ working_set)Ú package_namer)r7rÚget_requiring_packagesMsz4search_packages_info..get_requiring_packagescsg|]}|ˆkrˆ|‘qSrr)r/r2)r3rrr1WscSsg|] }|j‘qSr)r6)r/Údeprrrr1\s)r0ÚversionÚlocationr5Ú required_byNÚÚRECORDcSsg|]}|jdƒd‘qS)ú,r)Úsplit)r/Úlinerrrr1escsg|]}tjjˆj|ƒ‘qSr)ÚosÚpathÚjoinr=)r/Úp)Údistrrr1fscsg|]}tjj|ˆjƒ‘qSr)rDrEÚrelpathr=)r/rG)rHrrr1gsÚMETADATAzinstalled-files.txtcsg|]}tjjˆj|ƒ‘qSr)rDrErFÚegg_info)r/rG)rHrrr1oscsg|]}tjj|ˆjƒ‘qSr)rDrErIr=)r/rG)rHrrr1pszPKG-INFOzentry_points.txtÚ entry_pointsÚ INSTALLERÚ installerúmetadata-versionÚsummaryú home-pageÚauthorú author-emailÚlicensez Classifier: Ú classifiersr)rOrPrQrRrSrT)rr8rr6ÚsortedÚzipr r!rFr<r=r5Ú isinstanceÚDistInfoDistributionÚ has_metadataÚget_metadata_linesÚ get_metadataÚstriprÚfeedÚcloseÚgetÚ splitlinesÚ startswithÚappendÚlen)r&rGZ query_namesÚmissingr:ÚpackageÚ file_listÚmetadataÚlinesÚpathsrLrCÚ feed_parserÚ pkg_info_dictÚkeyrUr)rHr3rr":sj                  r"Fc Csºd}�x®t|ƒD�] \}}d}|dkr.tdƒtd|jddƒƒtd|jd dƒƒtd |jd dƒƒtd |jd dƒƒtd|jddƒƒtd|jddƒƒtd|jddƒƒtd|jddƒƒtddj|jdgƒƒƒtddj|jdgƒƒƒ|�rptd|jddƒƒtd|jddƒƒtdƒx |jd gƒD]}td!|ƒ�q.Wtd"ƒx$|jd#gƒD]}td!|jƒƒ�qXW|rtd$ƒx$|jd%gƒD]}td!|jƒƒ�qŠWd%|krtd&ƒqW|S)'zC Print the information from installed distributions found. FTrz---zName: %sr0r?z Version: %sr<z Summary: %srPz Home-page: %sz home-pagez Author: %srRzAuthor-email: %sz author-emailz License: %srTz Location: %sr=z Requires: %sz, r5zRequired-by: %sr>zMetadata-Version: %szmetadata-versionz Installer: %srNz Classifiers:rUz %sz Entry-points:rLzFiles:rz!Cannot locate installed-files.txt)Ú enumerater r`rFr]) Ú distributionsrrZresults_printedÚirHÚ classifierÚentryrCrrrr#”s@ r#)FF)Ú __future__rÚloggingrDÚ email.parserrÚ pip._vendorrZpip._vendor.packaging.utilsrÚpip._internal.cli.base_commandrÚpip._internal.cli.status_codesrrÚpip._internal.utils.miscr Úpip._internal.utils.typingr Úoptparser Útypingr r rÚ getLoggerr)r rr"r#rrrrÚs         $Z