HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-87-generic #88-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 09:28:41 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc
�

��hA�	��ddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZmZm
Z
mZddlmZddlmZddlmZddlmZmZdd	lmZdd
lmZddlmZddlm Z dd
l!m"Z"ddl#m$Z$erddl
m%Z%Gd�de%�Z&ejNe(�Z)Gd�dee�Z*de
ee+e+fde
dfd�Z,de+de+ddfd�Z-		dde
ddee.dee.ddfd�Z/de
e+de+fd�Z0y) �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�2�eZdZUeed<eed<eeed<y)�TransformedHit�name�summary�versionsN)�__name__�
__module__�__qualname__�str�__annotations__r���?/usr/lib/python3/dist-packages/pip/_internal/commands/search.pyrrs���	����s�)�r rc	�d�eZdZdZdZdZdd�Zdedee	de
fd	�Zd
ee	dedeee	e	ffd�Z
y)
�
SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>T�returnNc��|jjddddtjd��|jjd|j�y)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)�selfs r!�add_optionszSearchCommand.add_options)sI���
�
� � ������M�M�F�
	!�	
�	
���'�'��4�=�=�9r �options�argsc��|std��|}|j||�}t|�}d}tjj�rt
j�d}t||��|rtStS)Nz)Missing required argument (search query).r)�terminal_width)r�search�transform_hits�sys�stdout�isatty�shutil�get_terminal_size�
print_resultsr
r)r1r3r4�query�	pypi_hits�hitsr6s       r!�runzSearchCommand.run5sp����J�K�K����K�K��w�/�	��i�(�����:�:����#�5�5�7��:�N��d�>�:���N��r r?c��|j}|j|�}t||�}tjj||�}	|j
||d�d�}t|t�sJ�|S#tjj$r7}dj|j|j��}	t|	��d}~wwxYw)N)rr�orz-XMLRPC request failed [code: {code}]
{string})�code�string)r&�get_default_sessionr�xmlrpc�client�ServerProxyr7�Fault�format�	faultCode�faultStringr�
isinstance�list)
r1r?r3�	index_url�session�	transport�pypirA�fault�messages
          r!r7zSearchCommand.searchEs����M�M�	��*�*�7�3��&�y�'�:�	��}�}�(�(��I�>��	(��;�;��%�@�$�G�D��$��%�%�%�����}�}�"�"�	(�F�M�M��_�_��(�(�N��G��w�'�'��	(�s�A4�4C�2C�C)r$N)rrr�__doc__�usage�ignore_require_venvr2rrr�intrBrr7rr r!r#r#"s`��J�
!�E���
:� �6� ��c�� �s� � �D��I����4��S�#�X��;O�r r#rAr$c��t�}|D]b}|d}|d}|d}||j�vr|||gd�||<�/||dj|�|t||d�k(s�[|||d<�dt	|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.
    rr�version)rrrr)r�keys�append�highest_versionrP�values)rA�packages�hitrrr\s      r!r8r8Xs���-8�M�H��4���6�{���i�.���i�.���x�}�}��&��"�$�I��H�T�N�
�T�N�:�&�-�-�g�6��/�(�4�.��*D�E�E�,3����y�)�!4�$����!�"�"r r�latestc�R�t�}|j|�}|�~t�5|j|k(rt	d|j�nDt	d|j�t|�jr
t	d|�nt	d|�ddd�yy#1swYyxYw)NzINSTALLED: %s (latest)z
INSTALLED: %sz=LATEST:    %s (pre-release; install with `pip install --pre`)z
LATEST:    %s)r�get_distributionrr\r�
parse_version�pre)rrc�env�dists    r!�print_dist_installation_inforjts���
!�
#�C�����%�D���
�\�	:��|�|�v�%��5�t�|�|�D��_�d�l�l�;� ��(�,�,� �5���!��&�9�	:�	:��	:�	:�s�A+B�B&�name_column_widthr6c��|sy|�Nt|D�cgc]6}t|d�tt|jddg���z��8c}�dz}|D]�}|d}|dxsd}t|jddg��}|�=||z
dz
}|dkDr0t	j
||�}d	d
|dzzzj
|�}|�d|�d
�}	|	|�d��d|��}
	t|
�t||���ycc}w#t$rY��wxYw)Nrr�-�r���
�
� �z (�)z - )
�max�lenr_�get�textwrap�wrap�joinrrj�UnicodeEncodeError)rArkr6rbrrrc�target_width�
summary_lines�name_latest�lines           r!r>r>�sP��
��� �� $�����F��$�s�?�3�7�7�:�PS�u�;U�+V�'W�W��
��

�	�����6�{���i�.�&�B�� �����c�U�!;�<���%�)�,=�=��A�L��b� � (�
�
�g�|� D�
��#�):�Q�)>�"?�?�E�E�m�T����b����*���0�1��1�2�#�g�Y�?��	����(��v�6�����0"�	��	�s�;C0�C5�5	D�Drc�$�t|t��S)N)�key)rvrf)rs r!r_r_�s���x�]�+�+r )NN)1�loggingr<r9ry�
xmlrpc.clientrH�collectionsr�optparser�typingrrrr�pip._vendor.packaging.versionr	rf�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�pip._internal.network.xmlrpcr�pip._internal.utils.loggingr�pip._internal.utils.miscrrr�	getLoggerr�loggerr#rr8rjrZr>r_rr r!�<module>r�s���
�
���#��6�6�@�2�=�D�1�:�+�;�2�1�� ����
��	�	�8�	$��3�G�0�3�l#��d�3��8�n�-�#�$�7G�2H�#�8:�s�:�C�:�D�:�*(,�$(�#�
��
 �#���}�#��S�M�#�
�	#�L,�d�3�i�,�C�,r