<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Pf                 @   s   d dl mZ d dlZd dlZd dl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 d dlmZ d dlmZ d dlmZ ejeZG dd deZ dd Z!dddZ"dd Z#dS )    )absolute_importN)CommandSUCCESS)OrderedDict)PipXmlrpcTransport)PyPI)get_terminal_size)
indent_log)CommandError)NO_MATCHES_FOUND)parse)pkg_resources)xmlrpc_clientc                   s<   e Zd ZdZdZdZdZ fddZdd Zd	d
 Z	  Z
S )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.searchz
      %prog [options] <query>zSearch PyPI for packages.c                s@   t t| j|| | jjddddtjdd | jjd| j d S )Nz-iz--indexindexZURLz3Base URL of Python Package Index (default %default))destmetavardefaulthelpr   )	superr   __init__Zcmd_optsZ
add_optionr   Zpypi_urlparserZinsert_option_group)selfargskw)	__class__ /usr/lib/python3.6/search.pyr      s    zSearchCommand.__init__c             C   sT   |st d|}| j||}t|}d }tjj r<t d }t||d |rPtS t	S )Nz)Missing required argument (search query).r   )terminal_width)
r
   r   transform_hitssysstdoutisattyr   print_resultsr   r   )r   optionsr   queryZ	pypi_hitshitsr   r   r   r   run)   s    

zSearchCommand.runc             C   sH   |j }| j|.}t||}tj||}|j||dd}|S Q R X d S )N)namesummaryor)r   Z_build_sessionr   r   ZServerProxyr   )r   r&   r%   Z	index_urlZsessionZ	transportZpypir'   r   r   r   r   9   s    
zSearchCommand.search)__name__
__module____qualname____doc__r)   Zusager*   r   r(   r   __classcell__r   r   )r   r   r      s   r   c             C   s   t  }xv| D ]n}|d }|d }|d }||j krH|||gd||< q|| d j| |t|| d kr||| d< qW t|j 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*   versionsr2   )r   keysappendhighest_versionlistvalues)r'   Zpackageshitr)   r*   r1   r   r   r   r    B   s    
r    c             C   sT  | sd S |d kr&t dd | D d }dd tjD }x| D ]}|d }|d pVd}|jdd	gd }|d k	r|| d }|dkrtj||}dd|d   j|}d|d||f |f }	yvtj|	 ||kr2tj	|}
t
 H t|d }|
j|krtjd|
j ntjd|
j tjd| W d Q R X W q> tk
rJ   Y q>X q>W d S )Nc             S   s.   g | ]&}t |d  t |jddgd  qS )r)   r2   -   )lenget).0r8   r   r   r   
<listcomp>c   s   z!print_results.<locals>.<listcomp>   c             S   s   g | ]
}|j qS r   )Zproject_name)r>   pr   r   r   r?   g   s    r)   r*    r2   r9   r:      
   
    z	%-*s - %sz%s (%s)zINSTALLED: %s (latest)zINSTALLED: %szLATEST:    %sr;   )maxr   Zworking_setr=   textwrapZwrapjoinloggerinfoZget_distributionr	   r5   r1   UnicodeEncodeError)r'   Zname_column_widthr   Zinstalled_packagesr8   r)   r*   r1   Ztarget_widthlineZdistZlatestr   r   r   r$   ^   s>    


r$   c             C   s   t | tdS )N)key)rH   parse_version)r2   r   r   r   r5      s    r5   )NN)$Z
__future__r   Zloggingr!   rI   Zpip.basecommandr   r   Z
pip.compatr   Zpip.downloadr   Z
pip.modelsr   Z	pip.utilsr   Zpip.utils.loggingr	   Zpip.exceptionsr
   Zpip.status_codesr   Zpip._vendor.packaging.versionr   rP   Zpip._vendorr   Zpip._vendor.six.movesr   Z	getLoggerr,   rK   r   r    r$   r5   r   r   r   r   <module>   s&   
+
&