o
    ©„j–  ã                   @  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„Z+d/d d!„Z,d0d#d$„Z-		d1d2d(d)„Z.d3d,d-„Z/dS )4é    )Ú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   ú[/var/www/html/django_cbt/venv/lib/python3.10/site-packages/pip/_internal/commands/search.pyr      s   
 r   c                   @  s6   e Zd ZdZdZdZddd„Zddd„Zddd„ZdS )ÚSearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>TÚreturnÚNonec                 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Úoptionsr   Úargsr   Úintc                 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/   ÚqueryÚ	pypi_hitsÚhitsr1   r   r   r   Úrun6   s   
zSearchCommand.runr:   úlist[dict[str, str]]c           
   
   C  sŠ   |j }|  |¡}t||ƒ}tj ||¡}z| ||dœd¡}W n tjjy; } zd|j› d|j	› �}	t
|	ƒ‚d }~ww t|tƒsCJ ‚|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.   r   r/   r   r   r0   )r:   r   r.   r   r   r>   )	r   r   r   Ú__doc__ÚusageÚignore_require_venvr-   r=   r2   r   r   r   r   r   #   s    

r   r<   r>   r   úlist[TransformedHit]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   r3   X   s   ý€r3   Úlatestr   ÚdistúBaseDistribution | Noner    c                 C  sœ   |d urLt ƒ �; |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 sEw   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   rS   r   Úparse_versionÚpre)rZ   r[   r   r   r   Úprint_dist_installation_infot   s"   

ýôþ"úÿr_   r   c                 C  s   t ƒ }| | ¡S )N)r   Úget_distribution)r   Úenvr   r   r   Úget_installed_distribution…   s   
rb   Úname_column_widthú
int | Noner1   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rI|| d	 }|d
krIt ||¡}dd|d    |¡}|› d|› d�}	|	|› ›d|› �}
zt|
ƒ t|ƒ}t||ƒ W q t	yr   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   re   é   é
   Ú
ú é   z (ú)z - )
ÚmaxrV   rg   ÚtextwrapÚwrapÚjoinr   rb   r_   ÚUnicodeEncodeError)r<   rc   r1   rY   r   r   rZ   Útarget_widthÚsummary_linesÚname_latestÚliner[   r   r   r   r9   Š   s<   þÿúÿ
ÿïr9   r   r   c                 C  s   t | td�S )N)Úkey)rr   r]   )r   r   r   r   rV   ±   s   rV   )r<   r>   r   rR   )rZ   r   r[   r\   r   r    )r   r   r   r\   )NN)r<   rR   rc   rd   r1   rd   r   r    )r   r   r   r   )0Ú
__future__r   Úloggingr7   r4   rs   Úxmlrpc.clientrA   Úcollectionsr   Úoptparser   Útypingr   Ú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.metadata.baser   Úpip._internal.models.indexr   Úpip._internal.network.xmlrpcr   Úpip._internal.utils.loggingr   Úpip._internal.utils.miscr   r   Ú	getLoggerr   Úloggerr   r3   r_   rb   r9   rV   r   r   r   r   Ú<module>   s<    

5

ý'