3 ReT@sddlmZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZddlmZdd lmZerdd lmZdd lmZmZmZejeZGd d d e ZddZdddZdS))absolute_importN) FeedParser) pkg_resources)canonicalize_name)Command)ERRORSUCCESS) write_output)MYPY_CHECK_RUNNING)Values)ListDictIteratorc@s(eZdZdZdZdZddZddZdS) ShowCommandzx Show information about one or more installed packages. The output is in RFC-compliant mail header format. z$ %prog [options] ...TcCs,|jjddddddd|jjd|jdS) Nz-fz--filesfiles store_trueFz7Show the full list of installed files for each package.)destactiondefaulthelpr)cmd_opts add_optionparserinsert_option_group)selfr/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el9.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/commands/show.py add_options!szShowCommand.add_optionscCs8|stjdtS|}t|}t||j|jds4tStS)Nz.ERROR: Please provide a package name or names.) list_filesverbose)loggerwarningrsearch_packages_info print_resultsrrr)roptionsargsqueryresultsrrrrun,s zShowCommand.runN)__name__ __module__ __qualname____doc__usageignore_require_venvrr(rrrrrs  rc#sfixtjD]}|t|j<q Wdd|D}tfddt||D}|rbtjddj|dd}xfdd|DD]܉jj j d dj D|jd }d }d }t tj r&jd rjd }dd|D} fdd| D} fdd| D}jdrvjd}nPjdr`jd} fdd| D} fdd| D}jdrvjd}jdrjd} | |d<jdrx,jdD]} | jr| j|d<PqWt} | j|| j} xd#D]}| j|||<qWg}x4|jD](} | jd r|j| td d qW||d!<|rXt||d"<|VqWd 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).0namerrr Fsz(search_packages_info..csg|]\}}|kr|qSrr)r/r0pkg) installedrrr1HszPackage(s) not found: %sz, cst|fddtjDS)Ncs(g|] }dd|jDkr|jqS)cSsg|]}t|jqSr)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)r7rget_requiring_packagesMsz4search_packages_info..get_requiring_packagescsg|]}|kr|qSrr)r/r2)r3rrr1WscSsg|] }|jqSr)r6)r/deprrrr1\s)r0versionlocationr5 required_byNRECORDcSsg|]}|jddqS),r)split)r/linerrrr1escsg|]}tjjj|qSr)ospathjoinr=)r/p)distrrr1fscsg|]}tjj|jqSr)rDrErelpathr=)r/rG)rHrrr1gsMETADATAzinstalled-files.txtcsg|]}tjjj|qSr)rDrErFegg_info)r/rG)rHrrr1oscsg|]}tjj|jqSr)rDrErIr=)r/rG)rHrrr1pszPKG-INFOzentry_points.txt entry_points INSTALLER installermetadata-versionsummary home-pageauthor author-emaillicensez Classifier: classifiersr)rOrPrQrRrSrT)rr8rr6sortedzipr r!rFr<r=r5 isinstanceDistInfoDistribution has_metadataget_metadata_lines get_metadatastriprfeedcloseget splitlines startswithappendlen)r&rGZ query_namesmissingr:package file_listmetadatalinespathsrLrC feed_parser pkg_info_dictkeyrUr)rHr3rr":sj                  r"Fc Csd}xt|D]\}}d}|dkr.tdtd|jddtd|jd dtd |jd dtd |jd dtd|jddtd|jddtd|jddtd|jddtddj|jdgtddj|jdg|rptd|jddtd|jddtdx |jd gD]}td!|q.Wtd"x$|jd#gD]}td!|jqXW|rtd$x$|jd%gD]}td!|jqWd%|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_printedirH classifierentryrCrrrr#s@ r#)FF) __future__rloggingrD email.parserr pip._vendorrZpip._vendor.packaging.utilsrpip._internal.cli.base_commandrpip._internal.cli.status_codesrrpip._internal.utils.miscr pip._internal.utils.typingr optparser typingr r r getLoggerr)r rr"r#rrrrs         $Z