o
    ֌h\                     @   s
  d dl Z 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 d dlmZmZ d dlmZmZ d d	lmZ e eZd
edefdd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)InvalidRequirementcanonicalize_name)Command)ERRORSUCCESS)BaseDistributionget_default_environment)write_outputlabelreturnc                 C   s(   t jt j }tdd|}| | S )N )stringpunctuation
whitespacestr	maketrans	translatelower)r   chars_to_removeremoval_map r   g/var/www/mappanews/MealPlanner/backend/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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> ...Tr   Nc                 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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"   r1   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   r   intr8   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 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d< ee ed< eee  ed< dS )_PackageInfonameversionlocationeditable_project_locationrequiresrequired_by	installermetadata_versionclassifierssummaryhomepageproject_urlsauthorauthor_emaillicenselicense_expressionentry_pointsr"   N)r9   r:   r;   r   __annotations__r   r   r   r   r   r   r@   =   s&   
 r@   r6   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
yN   Y q<w ztdd | D t	jd}W n tyq   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u rd}nt|}|j}|dg }|dd}|s|D ]}|jddd\}}t|}|dkr| } nqtd2i d|jd|jd|jpd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d.|d/dd0|
d1|V  q<dS )3z
    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>[       z(search_packages_info.<locals>.<dictcomp>c                 S   s   g | ]}t |qS r   r
   )rU   rA   r   r   r   
<listcomp>\   rX   z(search_packages_info.<locals>.<listcomp>c                    s   g | ]
\}}| vr|qS r   r   )rU   rA   pkg	installedr   r   rY   ^   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   rA   )rU   dr   r   r   	<setcomp>h   s    zRsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>.<setcomp>NameUNKNOWNN)rS   iter_dependenciesmetadatarT   r^   r   r   	<genexpr>d   s    zHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>)valuesre   r[   re   r   _get_requiring_packagesc   s   
z5search_packages_info.<locals>._get_requiring_packagesc                 S   s   h | ]}|j qS r   )rA   )rU   reqr   r   r   r`   t   s    z'search_packages_info.<locals>.<setcomp>)keyz#N/Azentry_points.txtF)keependsNzProject-URLz	Home-pager   ,   )maxsplitrK   rA   rB   rC   rD   rE   rF   rG   rH   rI   
ClassifierrJ   SummaryrL   rM   AuthorrN   zAuthor-emailrO   LicenserP   zLicense-ExpressionrQ   r"   r   ) r   iter_all_distributionssortedzipr2   r3   joinr   r   r   KeyErrorrc   r   r	   iter_raw_dependencies	read_text
splitlinesFileNotFoundErroriter_declared_entriesrd   get_allgetsplitr    stripr@   raw_nameraw_versionrC   rD   rG   rH   )r6   envquery_namesmissingrh   
query_namerV   rE   rF   entry_points_textrQ   
files_iterr"   rd   rL   rK   url	url_labelnormalized_labelr   r[   r   r4   R   s   




	
r4   distributionsr0   r1   c                 C   s  d}t | D ]\}}d}|dkrtd ttt|jd}td|j td|j td|j	 td	|j
 td
|j td|j |dkrQ|jrQtd|j ntd|j td|j |jdurhtd|j tdd|j tdd|j |rtd|j td|j td |jD ]}td| qtd |jD ]	}td|  qtd |jD ]}	td|	 q|rtd |jdu rtd q|jD ]	}
td|
  qq|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: %s)      zLicense-Expression: %szLicense: %szLocation: %sNzEditable project location: %szRequires: %sr]   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   tuplemapr?   rH   r   rA   rB   rJ   rK   rM   rN   rP   rO   rC   rD   rv   rE   rF   rG   rI   rQ   r   rL   r"   )r   r0   r1   results_printedirV   metadata_version_tuple
classifierentryproject_urlliner   r   r   r5      sT   






r5   )#loggingr   optparser   typingr   r   r   r   r   r   "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   	getLoggerr9   r2   r   r    r!   r@   r4   boolr5   r   r   r   r   <module>   s0     
% ]