o
    ñ‘Ojñ  ã                   @   sä   d dl Z d dlmZ d dlmZmZmZmZmZ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G d	d
„ d
eƒZG dd„ deƒZdee deeddf fdd„Zdee dededefdd„ZdS )é    N)ÚValues)Ú	GeneratorÚIterableÚIteratorÚListÚ
NamedTupleÚOptional©Úcanonicalize_name)ÚCommand)ÚERRORÚSUCCESS)ÚBaseDistributionÚget_default_environment)Úwrite_outputc                   @   s<   e Zd ZdZdZdZddd„Zded	ee	 de
f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> ...TÚreturnNc                 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)Úself© r   úa/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/pip/_internal/commands/show.pyÚadd_options   s   ú	zShowCommand.add_optionsÚoptionsÚargsc                 C   s8   |s	t  d¡ tS |}t|ƒ}t||j|jd�stS tS )Nz.ERROR: Please provide a package name or names.)Ú
list_filesÚverbose)ÚloggerÚwarningr   Úsearch_packages_infoÚprint_resultsr   r$   r   )r   r!   r"   ÚqueryÚresultsr   r   r   Úrun&   s   

ÿzShowCommand.run)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚusageÚignore_require_venvr    r   r   ÚstrÚintr+   r   r   r   r   r      s    
r   c                   @   sª   e Zd ZU eed< eed< eed< ee ed< ee ed< eed< eed< ee ed< eed	< eed
< ee ed< eed< eed< eed< ee ed< eee  ed< dS )Ú_PackageInfoÚnameÚversionÚlocationÚrequiresÚrequired_byÚ	installerÚmetadata_versionÚclassifiersÚsummaryÚhomepageÚproject_urlsÚauthorÚauthor_emailÚlicenseÚentry_pointsr   N)r,   r-   r.   r2   Ú__annotations__r   r   r   r   r   r   r4   4   s"   
 r4   r)   r   c              	   #   sà  � t ƒ }dd„ | ¡ D ƒ‰ dd„ | D ƒ}t‡ fdd„t| |ƒD ƒƒ}|r-t dd |¡¡ dtd	tt	 f‡ fd
d„}|D ]±}zˆ | }W n	 t
yM   Y q<w tdd„ | ¡ D ƒt	jd�}t||ƒt	jd�}z| d¡}	|	jdd�}
W n ty}   g }
Y nw | ¡ }|du r‰d}nt|ƒ}|j}td+i d|j“dt	|jƒ“d|jp¢d“d|“d|“d|j“d|jp²d“d| dg ¡“d| dd¡“d| d d¡“d!| d"g ¡“d#| d$d¡“d%| d&d¡“d'| d(d¡“d)|
“d*|“ŽV  q<d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.
    c                 S   s   i | ]}|j |“qS r   )Úcanonical_name©Ú.0Údistr   r   r   Ú
<dictcomp>P   ó    z(search_packages_info.<locals>.<dictcomp>c                 S   s   g | ]}t |ƒ‘qS r   r	   )rG   r5   r   r   r   Ú
<listcomp>Q   rJ   z(search_packages_info.<locals>.<listcomp>c                    s   g | ]
\}}|ˆ vr|‘qS r   r   )rG   r5   Úpkg©Ú	installedr   r   rK   S   s    zPackage(s) not found: %sú, Úcurrent_distr   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
   r5   )rG   Údr   r   r   Ú	<setcomp>]   s    zRsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>.<setcomp>ÚNameÚUNKNOWNN)rE   Úiter_dependenciesÚmetadatarF   ©rP   r   r   Ú	<genexpr>Y   s   € ÿý
ÿzHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>)ÚvaluesrW   rM   rW   r   Ú_get_requiring_packagesX   s   
þz5search_packages_info.<locals>._get_requiring_packagesc                 s   s   � | ]}|j V  qd S )N)r5   )rG   Úreqr   r   r   rX   f   s   € z'search_packages_info.<locals>.<genexpr>)Úkeyzentry_points.txtF)ÚkeependsNr5   r6   r7   Ú r8   r9   r:   r;   r<   Ú
Classifierr=   ÚSummaryr>   z	Home-pager?   zProject-URLr@   ÚAuthorrA   zAuthor-emailrB   ÚLicenserC   r   r   )r   Úiter_all_distributionsÚsortedÚzipr%   r&   Újoinr   r   r2   ÚKeyErrorrU   ÚlowerÚ	read_textÚ
splitlinesÚFileNotFoundErrorÚiter_declared_entriesrV   r4   Úraw_namer6   r7   r:   r;   Úget_allÚget)r)   ÚenvÚquery_namesÚmissingrZ   Ú
query_namerH   r8   r9   Úentry_points_textrC   Ú
files_iterr   rV   r   rM   r   r'   G   s‚   €ÿÿ
ÿÿ
þ€ýüûú€ùø	÷
öõôóòñðér'   Údistributionsr#   r$   c           
      C   sf  d}t | ƒD ]ª\}}d}|dkrtdƒ td|jƒ td|jƒ td|jƒ td|jƒ td	|jƒ td
|jƒ td|jƒ td|j	ƒ tdd 
|j¡ƒ tdd 
|j¡ƒ |r“td|jƒ td|jƒ tdƒ |jD ]}td|ƒ qktdƒ |jD ]	}td| ¡ ƒ qzt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---zName: %szVersion: %szSummary: %szHome-page: %sz
Author: %szAuthor-email: %szLicense: %szLocation: %szRequires: %srO   zRequired-by: %szMetadata-Version: %szInstaller: %szClassifiers:z  %szEntry-points:zProject-URLs:zFiles:Nz+Cannot locate RECORD or installed-files.txt)Ú	enumerater   r5   r6   r=   r>   r@   rA   rB   r7   rf   r8   r9   r;   r:   r<   rC   Ústripr?   r   )
rv   r#   r$   Úresults_printedÚirH   Ú
classifierÚentryÚproject_urlÚliner   r   r   r(   ‹   sF   





€r(   )ÚloggingÚoptparser   Útypingr   r   r   r   r   r   Úpip._vendor.packaging.utilsr
   Úpip._internal.cli.base_commandr   Úpip._internal.cli.status_codesr   r   Úpip._internal.metadatar   r   Úpip._internal.utils.miscr   Ú	getLoggerr,   r%   r   r4   r2   r'   Úboolr(   r   r   r   r   Ú<module>   s*     
% Dÿþýü