o
    a+)hA                  	   @   s  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 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rzd dl
m%Z% G dd de%Z&e 'e(Z)G dd deeZ*deee+e+f  ded fddZ,de+de+ddfddZ-		d#ded dee. dee. ddfddZ/d ee+ de+fd!d"Z0dS )$    N)OrderedDict)Values)TYPE_CHECKINGDictListOptional)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)get_default_environment)PyPI)PipXmlrpcTransport)
indent_log)write_output)	TypedDictc                   @   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   \C:\Users\User\Downloads\Proyecto_IoT\venv\Lib\site-packages\pip/_internal/commands/search.pyr      s   
 r   c                	   @   sb   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ee	 dedeee	e	f  fddZdS )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>TreturnNc                 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argsc                 C   sV   |st d|}| ||}t|}d }tj rt d }t||d |r)t	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   run5   s   
zSearchCommand.runr9   c           
   
   C   s   |j }| |}t||}tj||}z|||dd}W n tjjy: } zdj|j	|j
d}	t|	d }~ww t|tsBJ |S )N)r   r   orz-XMLRPC request failed [code: {code}]
{string})codestring)r!   get_default_sessionr   xmlrpcclientServerProxyr1   Faultformat	faultCodefaultStringr   
isinstancelist)
r,   r9   r.   	index_urlsession	transportpypir:   faultmessager   r   r   r1   E   s    

zSearchCommand.search)r    N)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 ]7}|d }|d }|d }|| vr#|||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_versionrH   values)r:   packageshitr   r   rS   r   r   r   r2   X   s   r2   r   latestc                 C   s   t  }|| }|d urTt ; |j|krtd|j ntd|j t|jr-td| ntd| W d    d S W d    d S W d    d S 1 sMw   Y  d S d S )NzINSTALLED: %s (latest)zINSTALLED: %sz=LATEST:    %s (pre-release; install with `pip install --pre`)zLATEST:    %s)r   get_distributionr   rS   r   parse_versionpre)r   rZ   envdistr   r   r   print_dist_installation_infot   s&   


"r`   name_column_widthr0   c              	   C   s   | sd S |d u rt dd | D d }| D ]Y}|d }|d p d}t|ddg}|d urI|| d	 }|d
krIt||}dd|d   |}| d| d}	|	| d| }
zt|
 t|| W q tyn   Y qw d S )Nc              	   S   s.   g | ]}t |d  t t|ddg qS )r   r   -)lenrV   get).0rY   r   r   r   
<listcomp>   s     z!print_results.<locals>.<listcomp>   r   r    r   rb      
   
    z ()z - )	maxrV   rd   textwrapwrapjoinr   r`   UnicodeEncodeError)r:   ra   r0   rY   r   r   rZ   Ztarget_widthZsummary_linesZname_latestliner   r   r   r8      s:   
r8   r   c                 C   s   t | tdS )N)key)ro   r\   )r   r   r   r   rV      s   rV   )NN)1loggingr6   r3   rp   xmlrpc.clientr@   collectionsr   optparser   typingr   r   r   r   Zpip._vendor.packaging.versionr   r\   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   r   	getLoggerr   loggerr   r   r2   r`   rR   r8   rV   r   r   r   r   <module>   sJ    
"6
&