a
    0f                     @   st  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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 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% erG dd deZ&e 'e(Z)G dd deeZ*eee+e+f  ed dddZ,e+e+ddddZ-ded ee. ee. ddddZ/ee+ e+dddZ0dS )     N)OrderedDict)Values)TYPE_CHECKINGDictListOptional	TypedDict)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)get_default_environment)PyPI)PipXmlrpcTransport)
indent_log)write_outputc                   @   s*   e Zd ZU eed< eed< ee ed< dS )TransformedHitnamesummaryversionsN)__name__
__module____qualname__str__annotations__r    r   r   V/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pip/_internal/commands/search.pyr      s   
r   c                   @   s^   e Zd ZdZdZdZddddZeee	 e
dd	d
Zee	 eeee	e	f  dddZdS )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>TN)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_options)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.   r/   queryZ	pypi_hitshitsr0   r   r   r   run4   s    
zSearchCommand.run)r9   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ServerProxyr1   Fault	faultCodefaultStringr   
isinstancelist)
r,   r9   r.   	index_urlsession	transportpypir:   faultmessager   r   r   r1   D   s    

zSearchCommand.search)r   r   r   __doc__usageignore_require_venvr-   r   r   r   intr;   r   r1   r   r   r   r   r   !   s   r   )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_versionrE   values)r:   packageshitr   r   rP   r   r   r   r2   V   s    r2   )r   latestr    c                 C   s   t  }|| }|d urt T |j|kr8td|j n,td|j t|jrZtd| n
td| W d    n1 sx0    Y  d S )NzINSTALLED: %s (latest)zINSTALLED: %sz=LATEST:    %s (pre-release; install with `pip install --pre`)zLATEST:    %s)r   get_distributionr   rP   r   parse_versionpre)r   rW   envdistr   r   r   print_dist_installation_infor   s    


r]   )r:   name_column_widthr0   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|| 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   -)lenrS   get).0rV   r   r   r   
<listcomp>   s   z!print_results.<locals>.<listcomp>   r   r    r   r_      
   
    z ()z - )	maxrS   ra   textwrapwrapjoinr   r]   UnicodeEncodeError)r:   r^   r0   rV   r   r   rW   Ztarget_widthZsummary_linesZname_latestliner   r   r   r8      s6    
r8   )r   r    c                 C   s   t | tdS )N)key)rl   rY   )r   r   r   r   rS      s    rS   )NN)1loggingr6   r3   rm   xmlrpc.clientr>   collectionsr   optparser   typingr   r   r   r   r   Zpip._vendor.packaging.versionr	   rY   pip._internal.cli.base_commandr
   pip._internal.cli.req_commandr   pip._internal.cli.status_codesr   r   pip._internal.exceptionsr   pip._internal.metadatar   pip._internal.models.indexr   Zpip._internal.network.xmlrpcr   pip._internal.utils.loggingr   pip._internal.utils.miscr   r   	getLoggerr   loggerr   r   r2   r]   rO   r8   rS   r   r   r   r   <module>   s@   
5   &