3 (\@sddlmZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZejeZGdd d e Zd d Zdd dZdS))absolute_importN) FeedParser) pkg_resources)canonicalize_name)Command)ERRORSUCCESScs8eZdZdZdZdZdZdZfddZdd Z Z S) ShowCommandzx Show information about one or more installed packages. The output is in RFC-compliant mail header format. showz$ %prog [options] ...z*Show information about installed packages.Tcs>tt|j|||jjddddddd|jjd|jdS) Nz-fz--filesfiles store_trueFz7Show the full list of installed files for each package.)destactiondefaulthelpr)superr __init__cmd_opts add_optionparserinsert_option_group)selfargskw) __class__n/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-build-k1a8l1r5/pip/pip/_internal/commands/show.pyrszShowCommand.__init__cCs8|stjdtS|}t|}t||j|jds4tStS)Nz.ERROR: Please provide a package name or names.) list_filesverbose)loggerwarningrsearch_packages_info print_resultsr rr)roptionsrqueryresultsrrrrun's zShowCommand.run) __name__ __module__ __qualname____doc__nameusagesummaryZignore_require_venvrr& __classcell__rr)rrr s r c#sixtjD]}|t|j<q Wdd|D}xfdd|DD]ΉjjjddjDd}d}d}ttjrވj drȈj d}dd|D}fd d|D}fd d|D}j d r܈j d }nPj d rj d }fd d|D}fdd|D}j dr.j d}j drLj d}||d<j drx,j dD]} | j rd| j |d<PqdWt } | j|| j} xdD]} | j| || <qWg} x4|jD](} | jdr| j| tddqW| |d<|rt||d<|VqFWdS)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).0r+rrr ?sz(search_packages_info..csg|]}|kr|qSrr)r/pkg) installedrrr0AscSsg|] }|jqSr) project_name)r/deprrrr0Fs)r+versionlocationrequiresNRECORDcSsg|]}|jddqS),r)split)r/lrrrr0Nscsg|]}tjjj|qSr)ospathjoinr6)r/p)distrrr0Oscsg|]}tjj|jqSr)r<r=relpathr6)r/r?)r@rrr0PsMETADATAzinstalled-files.txtcsg|]}tjjj|qSr)r<r=r>egg_info)r/r?)r@rrr0Xscsg|]}tjj|jqSr)r<r=rAr6)r/r?)r@rrr0YszPKG-INFOzentry_points.txt entry_points INSTALLER installermetadata-versionr- home-pageauthor author-emaillicensez Classifier: classifiersr )rGr-rHrIrJrK)r working_setrr3r5r6r7 isinstanceDistInfoDistribution has_metadataget_metadata_lines get_metadatastriprfeedcloseget splitlines startswithappendlensorted)r$r? query_namespackage file_listmetadatalinespathsrDline feed_parser pkg_info_dictkeyrLr)r@r2rr!4s^                  r!Fc sd}xt|D]\}}d}|dkr0tjd|jddfddtjD}tjd tjd |jd dtjd |jd dtjd|jddtjd|jddtjd|jddtjd|jddtjd|jddtjddj|jdgtjddj||rtjd|jddtjd|jddtjd x"|jd!gD]}tjd"|qZWtjd#x&|jd$gD]}tjd"|jqW|rtjd%x&|jd&gD]} tjd"| jqWd&|krtjd'qW|S)(zD Print the informations from installed distributions found. FTrz---r+cs(g|] }dd|jDkr|jqS)cSsg|] }|jqSr)r+)r/requiredrrrr0sz,print_results...)r7r3)r/r1)r+rrr0sz!print_results..zName: %sz Version: %sr5z Summary: %sr-z Home-page: %sz home-pagez Author: %srIzAuthor-email: %sz author-emailz License: %srKz Location: %sr6z Requires: %sz, r7zRequired-by: %szMetadata-Version: %szmetadata-versionz Installer: %srFz Classifiers:rLz %sz Entry-points:rDzFiles:r z!Cannot locate installed-files.txt) enumeraterinforVrrMr>rS) distributionsrrresults_printedir@ required_by classifierentryrbr)r+rr"}sD      r")FF) __future__rloggingr< email.parserr pip._vendorrpip._vendor.packaging.utilsrZpip._internal.cli.base_commandrZpip._internal.cli.status_codesrr getLoggerr'rr r!r"rrrrs      $I