3 ]@sddlmZddlmZddlZddlZddlmZddlm Z m Z ddl m Z ddl mZejeZGdd d eZd d Zdd dZdS))absolute_import) FeedParserN)Command)SUCCESSERROR) pkg_resources)canonicalize_namecs4eZdZdZdZdZdZfddZddZZ S) ShowCommandz6Show information about one or more installed packages.showz$ %prog [options] ...z*Show information about installed packages.cs>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__0/tmp/pip-build-8jg9gmni/pip/pip/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__nameusagesummaryrr& __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) installedrrr0<scSsg|] }|jqSr) project_name)r/deprrrr0As)r+versionlocationrequiresNRECORDcSsg|]}|jddqS),r)split)r/lrrrr0Iscsg|]}tjjj|qSr)ospathjoinr6)r/p)distrrr0Jscsg|]}tjj|jqSr)r<r=relpathr6)r/r?)r@rrr0KsMETADATAzinstalled-files.txtcsg|]}tjjj|qSr)r<r=r>egg_info)r/r?)r@rrr0Sscsg|]}tjj|jqSr)r<r=rAr6)r/r?)r@rrr0TszPKG-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!/s^                  r!Fc Csd}xt|D]\}}d}|dkr0tjdtjd|jddtjd|jd dtjd |jd dtjd |jd dtjd|jddtjd|jddtjd|jddtjd|jddtjddj|jdg|rxtjd|jddtjd|jddtjdx"|jdgD]}tjd|q0Wtjd x&|jd!gD]}tjd|jq^W|rtjd"x&|jd#gD]}tjd|jqWd#|krtjd$qW|S)%zD Print the informations from installed distributions found. FTrz---zName: %sr+z Version: %sr5z Summary: %sr-z Home-page: %sz home-pagez Author: %srIzAuthor-email: %sz author-emailz License: %srKz Location: %sr6z Requires: %sz, r7zMetadata-Version: %szmetadata-versionz Installer: %srFz Classifiers:rLz %sz Entry-points:rDzFiles:r z!Cannot locate installed-files.txt) enumeraterinforVr>rS) distributionsrrresults_printedir@ classifierentryrbrrrr"xs>    r")FF) __future__r email.parserrloggingr<pip.basecommandrpip.status_codesrr pip._vendorrpip._vendor.packaging.utilsr getLoggerr'rr r!r"rrrrs      I