a *egS@sddlZddlmZddlmZmZmZmZmZm Z ddl m Z ddl m Z ddlmZddlmZmZddlmZmZdd lmZeeZGd d d eZGd d d eZeeeeddfdddZeeeeedddZ dS)N)Values) GeneratorIterableIteratorList NamedTupleOptional)InvalidRequirementcanonicalize_name)Command)ERRORSUCCESS)BaseDistributionget_default_environment) write_outputc@s<eZdZdZdZdZddddZeee e dd d Z dS) ShowCommandzx Show information about one or more installed packages. The output is in RFC-compliant mail header format. z$ %prog [options] ...TN)returncCs,|jjddddddd|jd|jdS) Nz-fz--filesfiles store_trueFz7Show the full list of installed files for each package.)destactiondefaulthelpr)cmd_opts add_optionparserinsert_option_group)selfrE/usr/local/lib/python3.9/site-packages/pip/_internal/commands/show.py add_optionss zShowCommand.add_options)optionsargsrcCs8|stdtS|}t|}t||j|jds4tStS)Nz.ERROR: Please provide a package name or names.) list_filesverbose)loggerwarningr search_packages_info print_resultsrr%r)rr"r#queryresultsrrr run's  zShowCommand.run) __name__ __module__ __qualname____doc__usageignore_require_venvr!rrstrintr,rrrr rs  rc@seZdZUeed<eed<eed<eeed<eeed<eeed<eed<eed<eeed <eed <eed <eeed <eed <eed<eed<eeed<eeeed<dS) _PackageInfonameversionlocationeditable_project_locationrequires required_by installermetadata_version classifierssummaryhomepage project_urlsauthor author_emaillicense entry_pointsrN)r-r.r/r3__annotations__rrrrrr r55s"       r5)r*rc#sRt}dd|Ddd|D}tfddt||D}|rXtdd|ttt dfd d }|D]}z |}Wnt yYqtYn0z td d | Dt j d }Wn$t yt|t j d }Yn0zt||t j d }Wnt ydg}Yn0z|d} | jdd} WntyHg} Yn0|} | durbd} nt| } |j} | dg}| dd}|s|D]L}|jddd\}}|dddd}|dkr|}qqt|j|j|jpd|j|||j|j p d| dg| dd||| dd| dd| d d| | d!VqtdS)"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. cSsi|] }|j|qSr)canonical_name.0distrrr Rz(search_packages_info..cSsg|] }t|qSrr )rIr6rrr SrLz(search_packages_info..csg|]\}}|vr|qSrr)rIr6pkg installedrr rMUrLzPackage(s) not found: %s, ) current_distrcsfddDS)Nc3s4|],}jdd|Dvr|jdp*dVqdS)cSsh|]}t|jqSr)r r6)rIdrrr _rLzRsearch_packages_info.._get_requiring_packages...NameUNKNOWNN)rGiter_dependenciesmetadatarHrRrr [s zHsearch_packages_info.._get_requiring_packages..)valuesrYrOrYr _get_requiring_packagesZs z5search_packages_info.._get_requiring_packagescSsh|] }|jqSr)r6)rIreqrrr rTkrLz'search_packages_info..)keyz#N/Azentry_points.txtF)keependsNz Project-URLz Home-page,)maxsplit-_r@ ClassifierZSummaryZAuthorz Author-emailZLicense)r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrEr)!rZiter_all_distributionssortedzipr&r'joinrrr3KeyErrorrWlowerr Ziter_raw_dependencies read_text splitlinesFileNotFoundErrorZiter_declared_entriesrXget_allgetsplitcasefoldreplacestripr5Zraw_nameZ raw_versionr8r9r<r=)r*envZ query_namesmissingr\Z query_namerJr:r;Zentry_points_textrEZ files_iterrrXrAr@urlZ url_labelZnormalized_labelrrOr r(Is                     r() distributionsr$r%rc Csd}t|D]t\}}d}|dkr*tdtd|jtd|jtd|jtd|jtd |jtd |jtd |jtd |j |j d urtd|j tdd |j tdd |j |rDtd|jtd|jtd|jD]}td|qtd|jD]}td|qtd|jD]}td|q2|r td|jd urftdq |jD]} td| qlq |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: %sNzEditable project location: %sz Requires: %srQzRequired-by: %szMetadata-Version: %sz Installer: %sz Classifiers:z %sz Entry-points:z Project-URLs:zFiles:z+Cannot locate RECORD or installed-files.txt) enumeraterr6r7r?r@rBrCrDr8r9rir:r;r=r<r>rErtrAr) rxr$r%Zresults_printedirJ classifierentry project_urllinerrr r)sL                  r))!loggingoptparsertypingrrrrrrZ"pip._vendor.packaging.requirementsr pip._vendor.packaging.utilsr pip._internal.cli.base_commandr pip._internal.cli.status_codesr rpip._internal.metadatarrpip._internal.utils.miscr getLoggerr-r&rr5r3r(boolr)rrrr s"       %a