B š•ReTã@sÈddlmZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZddlmZdd lmZer˜dd lmZdd lmZmZmZe e¡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|j d|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-python37-pip-20.2.4-6.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/pip/_internal/commands/show.pyÚ add_options!szShowCommand.add_optionscCs8|st d¡tS|}t|ƒ}t||j|jds4tStS)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ƒƒ}|rbt dd |¡¡dd„}xô‡fdd„|DƒD]܉ˆjˆj ˆj d d„ˆ  ¡Dƒ|ˆjƒd œ}d }d }t ˆtj ƒr&ˆ d ¡rˆ d ¡}dd„|Dƒ} ‡fdd„| Dƒ} ‡fdd„| Dƒ}ˆ d¡rvˆ d¡}nPˆ d¡r`ˆ d¡} ‡fdd„| Dƒ} ‡fdd„| Dƒ}ˆ d¡rvˆ d¡}ˆ d¡r”ˆ d¡} | |d<ˆ d¡rÎx,ˆ d¡D]} |  ¡r¬|  ¡|d<Pq¬Wtƒ} |  |¡|  ¡} xdD]}|  |¡||<qìWg}x4| ¡D](} |  d¡r| | 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„| ¡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|]}| d¡d‘qS)ú,r)Úsplit)r/Úlinerrrr1escsg|]}tj ˆj|¡‘qSr)ÚosÚpathÚjoinr=)r/Úp)Údistrrr1fscsg|]}tj |ˆj¡‘qSr)rDrEÚrelpathr=)r/rG)rHrrr1gsÚMETADATAzinstalled-files.txtcsg|]}tj ˆj|¡‘qSr)rDrErFÚegg_info)r/rG)rHrrr1oscsg|]}tj |ˆj¡‘qSr)rDrErIr=)r/rG)rHrrr1pszPKG-INFOzentry_points.txtÚ entry_pointsÚ INSTALLERÚ installer)zmetadata-versionÚsummaryz home-pageÚauthorz author-emailÚlicensez Classifier: Ú classifiersr)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ÚkeyrRr)rHr3rr":sh                   r"Fc Csºd}x®t|ƒD] \}}d}|dkr.tdƒtd| dd¡ƒtd| d d¡ƒtd | d d¡ƒtd | d d¡ƒtd| dd¡ƒtd| dd¡ƒtd| dd¡ƒtd| dd¡ƒtdd | dg¡¡ƒtdd | dg¡¡ƒ|rptd| dd¡ƒtd| dd¡ƒtdƒx | d g¡D]}td!|ƒq.Wtd"ƒx$| d#g¡D]}td!| ¡ƒqXW|rtd$ƒx$| d%g¡D]}td!| ¡ƒqŠWd%|krtd&ƒqW|S)'zC Print the information from installed distributions found. FTrz---zName: %sr0r?z Version: %sr<z Summary: %srOz Home-page: %sz home-pagez Author: %srPzAuthor-email: %sz author-emailz License: %srQz Location: %sr=z Requires: %sz, r5zRequired-by: %sr>zMetadata-Version: %szmetadata-versionz Installer: %srNz Classifiers:rRz %sz Entry-points:rLzFiles:rz!Cannot locate installed-files.txt)Ú enumerater r]rFrZ) Ú 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