o g@sddlZddlmZddlmZmZmZmZddlm Z ddl m Z ddl m Z mZddlmZmZddlmZeeZGd d d e ZGd d d eZd eedeefddZdeedededefddZdS)N)Values)IteratorList NamedTupleOptionalcanonicalize_name)Command)ERRORSUCCESS)BaseDistributionget_default_environment) write_outputc@s<eZdZdZdZdZd ddZded ee de fd d Z dS) ShowCommandzx Show information about one or more installed packages. The output is in RFC-compliant mail header format. z$ %prog [options] ...TreturnNcCs,|jjddddddd|jd|jdS) Nz-fz--filesfiles store_trueFz7Show the full list of installed files for each package.)destactiondefaulthelpr)cmd_opts add_optionparserinsert_option_group)selfr=/usr/lib/python3/dist-packages/pip/_internal/commands/show.py add_optionss zShowCommand.add_optionsoptionsargscCs8|s tdtS|}t|}t||j|jdstStS)Nz.ERROR: Please provide a package name or names.) list_filesverbose)loggerwarningr search_packages_info print_resultsrr"r )rrr queryresultsrrrrun&s  zShowCommand.run)rN) __name__ __module__ __qualname____doc__usageignore_require_venvrrrstrintr)rrrrrs   rc@seZdZUeed<eed<eed<eeed<eeed<eed<eed<eeed<eed <eed <eed <eed <eed <eeed<eeeed<dS) _PackageInfonameversionlocationrequires required_by installermetadata_version classifierssummaryhomepageauthor author_emaillicense entry_pointsrN)r*r+r,r0__annotations__rrrrrrr24s     r2r'rc#st}dd|Ddd|D}tfddt||D}|r-tdd|dtd tt ffd d }|D]}z|}Wn t yMYqOz(search_packages_info..cSsg|]}t|qSrr)rDr3rrr PrGz(search_packages_info..csg|] \}}|vr|qSrr)rDr3pkg installedrrrHRszPackage(s) not found: %s, current_distrcsfddDS)Nc3s6|]}jdd|Dvr|jdpdVqdS)cSsh|]}t|jqSr)rr3)rDdrrr \szRsearch_packages_info.._get_requiring_packages...NameUNKNOWNN)rBiter_dependenciesmetadatarCrMrr Xs zHsearch_packages_info.._get_requiring_packages..)valuesrTrJrTr_get_requiring_packagesWs z5search_packages_info.._get_requiring_packagescss|]}|jVqdS)N)r3)rDreqrrrrUesz'search_packages_info..)keyzentry_points.txtF)keependsN ClassifierSummaryz Home-pageAuthorz Author-emailLicense)r3r4r5r6r7r8r9r:r;r<r=r>r?r@r)r iter_distributionssortedzipr#r$joinr rr0KeyErrorrRlower read_text splitlinesFileNotFoundErroriter_declared_entriesrSr2raw_namer4r5r8r9get_allget)r'env query_namesmissingrW query_namerEr6r7entry_points_textr@ files_iterrrSrrJrr%Fs^           r% distributionsr!r"c CsHd}t|D]\}}d}|dkrtdtd|jtd|jtd|jtd|jtd |jtd |jtd |jtd |j td d |j tdd |j |rtd|j td|jtd|jD]}td|qktd|jD] }td|qz|rtd|jdurtdq|jD] }td|qq|S)zC Print the information from installed distributions found. FTrz---zName: %sz Version: %sz Summary: %sz Home-page: %sz Author: %szAuthor-email: %sz License: %sz Location: %sz Requires: %srLzRequired-by: %szMetadata-Version: %sz Installer: %sz Classifiers:z %sz Entry-points:zFiles:Nz+Cannot locate RECORD or installed-files.txt) enumeraterr3r4r;r<r=r>r?r5rcr6r7r9r8r:r@stripr) rsr!r"results_printedirE classifierentrylinerrrr&s@                r&)loggingoptparsertypingrrrrpip._vendor.packaging.utilsrpip._internal.cli.base_commandr pip._internal.cli.status_codesr r pip._internal.metadatar r pip._internal.utils.miscr getLoggerr*r#rr2r0r%boolr&rrrrs*     %C