a
    e0h                     @   sV  d dl m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 m!Z! d dl"m#Z# e#rd dl$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+ e+de,e,e(e, dZ-e.e/Z0G dd deeZ1dd Z2dddZ3dd Z4dS )    )absolute_importN)OrderedDict)pkg_resources)parse)xmlrpc_client)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)PyPI)PipXmlrpcTransport)get_terminal_size)
indent_log)get_distributionwrite_output)MYPY_CHECK_RUNNING)Values)DictListOptional)	TypedDictTransformedHitnamesummaryversionsc                   @   s0   e Zd ZdZdZdZdd Zdd Zdd	 Zd
S )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>Tc                 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)self r*   K/var/www/auris/lib/python3.9/site-packages/pip/_internal/commands/search.pyadd_options.   s    zSearchCommand.add_optionsc                 C   sT   |st d|}| ||}t|}d }tj r<t d }t||d |rPtS t	S )Nz)Missing required argument (search query).r   )terminal_width)
r   searchtransform_hitssysstdoutisattyr   print_resultsr
   r	   )r)   optionsargsqueryZ	pypi_hitshitsr-   r*   r*   r+   run9   s    

zSearchCommand.runc           
   
   C   s   |j }| |}t||}t||}z|||dd}W n@ tjy| } z&dj|j|j	d}	t
|	W Y d }~n
d }~0 0 |S )N)r   r   orz-XMLRPC request failed [code: {code}]
{string})codestring)r   get_default_sessionr   r   ServerProxyr.   Faultformat	faultCodefaultStringr   )
r)   r6   r4   	index_urlsession	transportpypir7   faultmessager*   r*   r+   r.   J   s    

zSearchCommand.searchN)	__name__
__module____qualname____doc__usageignore_require_venvr,   r8   r.   r*   r*   r*   r+   r   '   s   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   versionr   r   )r   keysappendhighest_versionlistvalues)r7   packageshitr   r   rN   r*   r*   r+   r/   ]   s    r/   c              	   C   s~  | sd S |d u r&t dd | D d }dd tjD }| D ]<}|d }|d pRd}t|dd	g}|d ur|| d
 }|dkrt||}	dd|d   |	}djf ddjf i t	 it	 }
zt
|
 ||v r`t|}|d usJ t X |j|krt
d|j n.t
d|j t|jr6t
d| n
t
d| W d    n1 sV0    Y  W q: tyv   Y q:0 q:d S )Nc              	   S   s.   g | ]&}t |d  t t|ddg qS )r   r   -)lenrQ   get).0rU   r*   r*   r+   
<listcomp>   s   z!print_results.<locals>.<listcomp>   c                 S   s   g | ]
}|j qS r*   )project_name)rY   pr*   r*   r+   rZ          r   r    r   rV      
   
    z-{name_latest:{name_column_width}} - {summary}Zname_latestz{name} ({latest})zINSTALLED: %s (latest)zINSTALLED: %sz=LATEST:    %s (pre-release; install with "pip install --pre")zLATEST:    %s)maxr   working_setrQ   rX   textwrapwrapjoinr?   localsr   r   r   rN   parse_versionpreUnicodeEncodeError)r7   Zname_column_widthr-   Zinstalled_packagesrU   r   r   ZlatestZtarget_widthZsummary_lineslinedistr*   r*   r+   r3   z   sR    

.r3   c                 C   s   t | tdS )N)key)re   rk   )r   r*   r*   r+   rQ      s    rQ   )NN)5
__future__r   loggingr0   rg   collectionsr   pip._vendorr   Zpip._vendor.packaging.versionr   rk   Zpip._vendor.six.movesr   pip._internal.cli.base_commandr   pip._internal.cli.req_commandr   pip._internal.cli.status_codesr	   r
   pip._internal.exceptionsr   pip._internal.models.indexr   Zpip._internal.network.xmlrpcr   pip._internal.utils.compatr   pip._internal.utils.loggingr   pip._internal.utils.miscr   r   pip._internal.utils.typingr   optparser   typingr   r   r   Ztyping_extensionsr   strr   	getLoggerrH   loggerr   r/   r3   rQ   r*   r*   r*   r+   <module>   s<   
6
-