o
    ©„j7   ã                   @  sä   d dl mZ d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZ d dlmZ e e¡Zd"dd„ZG dd„ deƒZG dd„ deƒZd#dd„Z d$d d!„Z!dS )%é    )ÚannotationsN)Ú	GeneratorÚIterableÚIterator)ÚValues)Ú
NamedTuple)ÚInvalidRequirement©Úcanonicalize_name)ÚCommand)ÚERRORÚSUCCESS)ÚBaseDistributionÚget_default_environment)Úwrite_outputÚlabelÚstrÚreturnc                 C  s(   t jt j }t dd|¡}|  |¡ ¡ S )NÚ )ÚstringÚpunctuationÚ
whitespacer   Ú	maketransÚ	translateÚlower)r   Úchars_to_removeÚremoval_map© r   úY/var/www/html/django_cbt/venv/lib/python3.10/site-packages/pip/_internal/commands/show.pyÚnormalize_project_url_label   s   r   c                   @  s,   e Zd ZdZdZdZddd„Zddd„ZdS )ÚShowCommandzx
    Show information about one or more installed packages.

    The output is in RFC-compliant mail header format.
    z$
      %prog [options] <package> ...Tr   ÚNonec                 C  s,   | j jddddddd� | j d| j ¡ d S )	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)Úselfr   r   r   Úadd_options&   s   ú	zShowCommand.add_optionsÚoptionsr   Úargsú	list[str]Úintc                 C  s>   |s	t  d¡ tS |}t||jd�}t||j|jd�stS tS )Nz.ERROR: Please provide a package name or names.)Úinclude_files)Ú
list_filesÚverbose)ÚloggerÚwarningr   Úsearch_packages_infor"   Úprint_resultsr4   r   )r,   r.   r/   ÚqueryÚresultsr   r   r   Úrun2   s   

ÿzShowCommand.runN)r   r!   )r.   r   r/   r0   r   r1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚusageÚignore_require_venvr-   r;   r   r   r   r   r       s    
r    c                   @  sž   e Zd ZU ded< ded< ded< ded< ded< ded	< ded
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< dS )Ú_PackageInfor   ÚnameÚversionÚlocationz
str | NoneÚeditable_project_locationr0   ÚrequiresÚrequired_byÚ	installerÚmetadata_versionÚclassifiersÚsummaryÚhomepageÚproject_urlsÚauthorÚauthor_emailÚlicenseÚlicense_expressionÚentry_pointszlist[str] | Noner"   N)r<   r=   r>   Ú__annotations__r   r   r   r   rB   @   s&   
 rB   r9   r0   r2   Úboolú#Generator[_PackageInfo, None, None]c              	   #  sv  � t ƒ }dd„ | ¡ D ƒ‰ dd„ | D ƒ}t‡ fdd„t| |ƒD ƒƒ}|r-t dd |¡¡ d4‡ fdd„}|D �]}zˆ | }W n	 tyH   Y q6w ztdd„ | ¡ D ƒt	j
d�}W n tyk   t| ¡ t	j
d�}Y nw zt||ƒt	j
d�}	W n tyƒ   dg}	Y nw z| d¡}
|
jdd�}W n tyœ   g }Y nw d}|r­| ¡ }|dur­t|ƒ}|j}| dg ¡}| dd¡}|sÚ|D ]}|jddd�\}}t|ƒ}|dkrÙ| ¡ } nqÀtd5i d|j“d|j“d|jpêd“d |j“d!|“d"|	“d#|j“d$|jpþd“d%| d&g ¡“d'| d(d¡“d|“d)|“d*| d+d¡“d,| d-d¡“d.| d/d¡“d0| d1d¡“d2|“d3|“ŽV  q6dS )6zî
    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.
    c                 S  s   i | ]}|j |“qS r   )Úcanonical_name©Ú.0Údistr   r   r   Ú
<dictcomp>a   ó    z(search_packages_info.<locals>.<dictcomp>c                 S  s   g | ]}t |ƒ‘qS r   r	   )rY   rC   r   r   r   Ú
<listcomp>b   r\   z(search_packages_info.<locals>.<listcomp>c                   s   g | ]
\}}|ˆ vr|‘qS r   r   )rY   rC   Úpkg©Ú	installedr   r   r]   d   s    zPackage(s) not found: %sú, Úcurrent_distr   r   úIterator[str]c                   s   ‡ fdd„ˆ  ¡ D ƒS )Nc                 3  s6   � | ]}ˆ j d d„ | ¡ D ƒv r|jd pdV  qdS )c                 S  s   h | ]}t |jƒ’qS r   )r
   rC   )rY   Údr   r   r   Ú	<setcomp>n   s    zRsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>.<setcomp>ÚNameÚUNKNOWNN)rW   Úiter_dependenciesÚmetadatarX   ©rb   r   r   Ú	<genexpr>j   s   € ÿþýzHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>)Úvaluesrj   r_   rj   r   Ú_get_requiring_packagesi   s   
þz5search_packages_info.<locals>._get_requiring_packagesc                 S  s   h | ]}|j ’qS r   )rC   )rY   Úreqr   r   r   re   z   s    z'search_packages_info.<locals>.<setcomp>)Úkeyz#N/Azentry_points.txtF)ÚkeependsNzProject-URLz	Home-pager   ú,é   )ÚmaxsplitrM   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Ú
ClassifierrL   ÚSummaryrN   rO   ÚAuthorrP   zAuthor-emailrQ   ÚLicenserR   zLicense-ExpressionrS   r"   )rb   r   r   rc   r   )r   Úiter_all_distributionsÚsortedÚzipr5   r6   ÚjoinÚKeyErrorrh   r   r   r   Úiter_raw_dependenciesÚ	read_textÚ
splitlinesÚFileNotFoundErrorÚiter_declared_entriesri   Úget_allÚgetÚsplitr   ÚstriprB   Úraw_nameÚraw_versionrE   rF   rI   rJ   )r9   r2   ÚenvÚquery_namesÚmissingrm   Ú
query_namerZ   rG   rH   Úentry_points_textrS   r"   Ú
files_iterri   rN   rM   ÚurlÚ	url_labelÚnormalized_labelr   r_   r   r7   U   s¶   €
ÿ
ÿ
ýÿ
ÿ
ÿþÿþ€ýüûúù€ø	÷
öõôóòñðïîÒr7   ÚdistributionsúIterable[_PackageInfo]r3   r4   c                 C  sº  d}t | ƒD ]Ô\}}d}|dkrtdƒ |j}|r#ttt| d¡ƒƒnd}td|jƒ td|jƒ td	|j	ƒ td
|j
ƒ td|jƒ td|jƒ |dkrW|jrWtd|jƒ ntd|jƒ td|jƒ |jdurntd|jƒ tdd |j¡ƒ tdd |j¡ƒ |r½td|jƒ td|jƒ tdƒ |jD ]}td|ƒ q•tdƒ |jD ]	}	td|	 ¡ ƒ q¤tdƒ |jD ]}
td|
ƒ qµ|rÚtdƒ |jdu rÍtdƒ q|jD ]	}td| ¡ ƒ qÐq|S )zC
    Print the information from installed distributions found.
    FTr   z---Ú.r   zName: %szVersion: %szSummary: %szHome-page: %sz
Author: %szAuthor-email: %s)é   é   zLicense-Expression: %szLicense: %szLocation: %sNzEditable project location: %szRequires: %sra   zRequired-by: %szMetadata-Version: %szInstaller: %szClassifiers:z  %szEntry-points:zProject-URLs:zFiles:z+Cannot locate RECORD or installed-files.txt)Ú	enumerater   rJ   ÚtupleÚmapr1   r„   rC   rD   rL   rM   rO   rP   rR   rQ   rE   rF   r{   rG   rH   rI   rK   rS   r…   rN   r"   )r‘   r3   r4   Úresults_printedÚirZ   rJ   Úmetadata_version_tupleÚ
classifierÚentryÚproject_urlÚliner   r   r   r8   µ   sX   ÿ
ÿ





€r8   )r   r   r   r   )r9   r0   r2   rU   r   rV   )r‘   r’   r3   rU   r4   rU   r   rU   )"Ú
__future__r   Úloggingr   Úcollections.abcr   r   r   Úoptparser   Útypingr   Ú"pip._vendor.packaging.requirementsr   Úpip._vendor.packaging.utilsr
   Úpip._internal.cli.base_commandr   Úpip._internal.cli.status_codesr   r   Úpip._internal.metadatar   r   Úpip._internal.utils.miscr   Ú	getLoggerr<   r5   r   r    rB   r7   r8   r   r   r   r   Ú<module>   s$    

%
`