a
    sh                     @  sh  d dl mZ d dlZd dlZd dlZd dlZd dl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 d d	l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# d dl$m%Z% G dd deZ&e'e(Z)G dd deeZ*dddddZ+ddddddZ,ddd d!d"Z-d+dd#d#dd$d%d&Z.d'dd(d)d*Z/dS ),    )annotationsN)OrderedDict)Values)	TypedDict)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)get_default_environment)BaseDistribution)PyPI)PipXmlrpcTransport)
indent_log)write_outputc                   @  s&   e Zd ZU ded< ded< ded< dS )TransformedHitstrnamesummary	list[str]versionsN)__name__
__module____qualname____annotations__ r   r   Y/var/www/html/assistant/venv/lib/python3.9/site-packages/pip/_internal/commands/search.pyr      s   
r   c                   @  sJ   e Zd ZdZdZdZddddZdd	d
dddZd	dddddZdS )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>TNone)returnc                 C  s.   | j jddddtjdd | jd| j  d S )Nz-iz--indexindexURLz3Base URL of Python Package Index (default %default))destmetavardefaulthelpr   )cmd_opts
add_optionr   pypi_urlparserinsert_option_group)selfr   r   r   add_options*   s    	zSearchCommand.add_optionsr   r   int)optionsargsr    c                 C  sV   |st d|}| ||}t|}d }tj r>t d }t||d |rRt	S t
S )Nz)Missing required argument (search query).r   )terminal_width)r   searchtransform_hitssysstdoutisattyshutilget_terminal_sizeprint_resultsr
   r	   )r,   r/   r0   queryZ	pypi_hitshitsr1   r   r   r   run6   s    
zSearchCommand.runlist[dict[str, str]])r:   r/   r    c           
   
   C  s   |j }| |}t||}tj||}z|||dd}W nD tjjy } z(d|j d|j	 }	t
|	W Y d }~n
d }~0 0 t|tsJ |S )N)r   r   orzXMLRPC request failed [code: z]
)r!   get_default_sessionr   xmlrpcclientServerProxyr2   Fault	faultCodefaultStringr   
isinstancelist)
r,   r:   r/   	index_urlsession	transportpypir;   faultmessager   r   r   r2   F   s    

zSearchCommand.searchN)	r   r   r   __doc__usageignore_require_venvr-   r<   r2   r   r   r   r   r   #   s   r   r=   zlist[TransformedHit])r;   r    c                 C  s   t  }| D ]n}|d }|d }|d }|| vrF|||gd||< q
|| d | |t|| d kr
||| d< q
t| S )z
    The list from pypi is really a list of versions. We want a list of
    packages with the list of versions stored inline. This converts the
    list from pypi into one we can use.
    r   r   version)r   r   r   r   )r   keysappendhighest_versionrG   values)r;   packageshitr   r   rQ   r   r   r   r3   X   s    r3   r   zBaseDistribution | Noner   )latestdistr    c                 C  sv   |d urrt  T |j| kr(td|j n,td|j t| jrJtd|  n
td|  W d    n1 sh0    Y  d S )NzINSTALLED: %s (latest)zINSTALLED: %sz=LATEST:    %s (pre-release; install with `pip install --pre`)zLATEST:    %s)r   rQ   r   parse_versionpre)rX   rY   r   r   r   print_dist_installation_infot   s    

r\   )r   r    c                 C  s   t  }|| S )N)r   get_distribution)r   envr   r   r   get_installed_distribution   s    r_   z
int | None)r;   name_column_widthr1   r    c              	   C  s   | sd S |d u r&t dd | D d }| D ]}|d }|d p@d}t|ddg}|d ur|| d	 }|d
krt||}dd|d   |}| d| d}	|	| d| }
zt|
 t|}t|| W q* t	y   Y q*0 q*d S )Nc              	   S  s.   g | ]&}t |d  t t|ddg qS )r   r   -)lenrT   get).0rW   r   r   r   
<listcomp>   s   z!print_results.<locals>.<listcomp>   r   r    r   ra      
   
    z ()z - )
maxrT   rc   textwrapwrapjoinr   r_   r\   UnicodeEncodeError)r;   r`   r1   rW   r   r   rX   Ztarget_widthZsummary_linesZname_latestlinerY   r   r   r   r9      s8    
r9   r   )r   r    c                 C  s   t | tdS )N)key)rn   rZ   )r   r   r   r   rT      s    rT   )NN)0
__future__r   loggingr7   r4   ro   xmlrpc.clientr@   collectionsr   optparser   typingr   Zpip._vendor.packaging.versionr   rZ   pip._internal.cli.base_commandr   pip._internal.cli.req_commandr   pip._internal.cli.status_codesr	   r
   pip._internal.exceptionsr   Zpip._internal.metadatar   Zpip._internal.metadata.baser   pip._internal.models.indexr   Zpip._internal.network.xmlrpcr   pip._internal.utils.loggingr   pip._internal.utils.miscr   r   	getLoggerr   loggerr   r3   r\   r_   r9   rT   r   r   r   r   <module>   s:   
5  '