1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
U
H=®dTã@sÈddlmZddlZddlZddlmZddlmZddlm    Z    ddl
m Z ddl m Z mZddlmZdd    lmZer˜dd
lmZdd lmZmZmZe e¡ZGd d „d e ƒZdd„Zddd„ZdS)é)Úabsolute_importN)Ú
FeedParser)Ú pkg_resources©Úcanonicalize_name)ÚCommand)ÚERRORÚSUCCESS)Ú write_output)ÚMYPY_CHECK_RUNNING)ÚValues)ÚListÚDictÚIteratorc@s(eZdZdZdZdZdd„Zdd„ZdS)    Ú ShowCommandzx
    Show information about one or more installed packages.
 
    The output is in RFC-compliant mail header format.
    z$
      %prog [options] <package> ...TcCs,|jjddddddd|j d|j¡dS)    Nz-fz--filesÚfilesÚ
store_trueFz7Show the full list of installed files for each package.)ÚdestÚactionÚdefaultÚhelpr)Úcmd_optsÚ
add_optionÚparserÚinsert_option_group)Úself©rúRD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\pip/_internal/commands/show.pyÚ add_options!sûzShowCommand.add_optionscCs8|st d¡tS|}t|ƒ}t||j|jds4tStS)Nz.ERROR: Please provide a package name or names.)Ú
list_filesÚverbose)ÚloggerÚwarningrÚsearch_packages_infoÚ print_resultsrr r    )rÚoptionsÚargsÚqueryÚresultsrrrÚrun,s
ÿzShowCommand.runN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__ÚusageÚignore_require_venvrr)rrrrrs
 rc#sTi‰tjD]}|ˆt|jƒ<q
dd„|Dƒ}t‡fdd„t||ƒDƒƒ}|r^t dd |¡¡dd„}‡fdd„|DƒD]ԉˆjˆj    ˆj
d    d„ˆ  ¡Dƒ|ˆjƒd
œ}d }d }t ˆtj ƒrˆ d ¡rˆ d ¡}dd„|Dƒ}    ‡fdd„|    Dƒ}    ‡fdd„|    Dƒ}ˆ d¡rnˆ d¡}nPˆ d¡rXˆ d¡}    ‡fdd„|    Dƒ}    ‡fdd„|    Dƒ}ˆ d¡rnˆ d¡}ˆ d¡rŒˆ d¡}
|
|d<ˆ d¡rƈ d¡D]"} |  ¡r¢|  ¡|d<qƐq¢tƒ} |  |¡|  ¡} dD]}|  |¡||<qâg}| ¡D](} |  d¡r| | tdƒd …¡q||d<|rHt|ƒ|d<|Vqxd 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|ƒ‘qSrr)Ú.0ÚnamerrrÚ
<listcomp>Fsz(search_packages_info.<locals>.<listcomp>csg|]\}}|ˆkr|‘qSrr)r0r1Úpkg©Ú    installedrrr2HszPackage(s) not found: %sú, cst|ƒ‰‡fdd„tjDƒS)Ncs(g|] }ˆdd„| ¡Dƒkr|j‘qS)cSsg|]}t|jƒ‘qSr)rr1)r0Úrequiredrrrr2SszSsearch_packages_info.<locals>.get_requiring_packages.<locals>.<listcomp>.<listcomp>)ÚrequiresÚ project_name©r0r3©Úcanonical_namerrr2PsÿÿÿzHsearch_packages_info.<locals>.get_requiring_packages.<locals>.<listcomp>)rrÚ working_set)Ú package_namerr;rÚget_requiring_packagesMs
ÿz4search_packages_info.<locals>.get_requiring_packagescsg|]}|ˆkrˆ|‘qSrrr:r4rrr2WscSsg|]
}|j‘qSr)r9)r0Údeprrrr2\s)r1ÚversionÚlocationr8Ú required_byNÚÚRECORDcSsg|]}| d¡d‘qS)ú,r)Úsplit)r0Úlinerrrr2escsg|]}tj ˆj|¡‘qSr)ÚosÚpathÚjoinrB©r0Úp©Údistrrr2fscsg|]}tj |ˆj¡‘qSr©rIrJÚrelpathrBrLrNrrr2gsÚMETADATAzinstalled-files.txtcsg|]}tj ˆj|¡‘qSr)rIrJrKÚegg_inforLrNrrr2oscsg|]}tj |ˆj¡‘qSrrPrLrNrrr2pszPKG-INFOzentry_points.txtÚ entry_pointsÚ    INSTALLERÚ    installer)úmetadata-versionÚsummaryú    home-pageÚauthorú author-emailÚlicensez Classifier: Ú classifiersr)rr=rr9ÚsortedÚzipr!r"rKrArBr8Ú
isinstanceÚDistInfoDistributionÚ has_metadataÚget_metadata_linesÚ get_metadataÚstriprÚfeedÚcloseÚgetÚ
splitlinesÚ
startswithÚappendÚlen)r'rMZ query_namesÚmissingr?ÚpackageÚ    file_listÚmetadataÚlinesÚpathsrTrHÚ feed_parserÚ pkg_info_dictÚkeyr]r)rOr5rr#:sl
ÿ
û 
 
 
 
 
 
 
   r#Fc        Cs¨d}t|ƒD]”\}}d}|dkr*tdƒtd| dd¡ƒtd| d    d¡ƒtd
| d d¡ƒtd | d d¡ƒtd| dd¡ƒtd| dd¡ƒtd| dd¡ƒtd| dd¡ƒtdd | dg¡¡ƒtdd | dg¡¡ƒ|rdtd| dd¡ƒtd| dd¡ƒtdƒ| d g¡D]}td!|ƒq(td"ƒ| d#g¡D]}td!| ¡ƒqN|r td$ƒ| d%g¡D]}td!| ¡ƒq|d%|kr td&ƒq |S)'zC
    Print the information from installed distributions found.
    FTrz---zName: %sr1rDz Version: %srAz Summary: %srXz Home-page: %srYz
Author: %srZzAuthor-email: %sr[z License: %sr\z Location: %srBz Requires: %sr6r8zRequired-by: %srCzMetadata-Version: %srWz Installer: %srVz Classifiers:r]z  %sz Entry-points:rTzFiles:rz!Cannot locate installed-files.txt)Ú    enumerater
rhrKre)    Ú distributionsrr Zresults_printedÚirOÚ
classifierÚentryrHrrrr$”sB
ÿ
r$)FF)Ú
__future__rÚloggingrIÚ email.parserrÚ pip._vendorrZpip._vendor.packaging.utilsrÚpip._internal.cli.base_commandrÚpip._internal.cli.status_codesrr    Úpip._internal.utils.miscr
Úpip._internal.utils.typingr Úoptparser Útypingr rrÚ    getLoggerr*r!rr#r$rrrrÚ<module>s         
$Z