� ��^iA� ���ddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z m Z m Z mZddlmZddlmZddlmZddlmZmZdd lmZdd lmZdd lmZdd lm Z dd l!m"Z"ddl#m$Z$e rddl m%Z%Gd�de%��Z&ej'e(��Z)Gd�dee��Z*de e e+e+fde dfd�Z,de+de+ddfd�Z- dde ddee.dee.ddfd�Z/de e+de+fd�Z0dS) �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�:�eZdZUeed<eed<eeed<dS)�TransformedHit�name�summary�versionsN)�__name__� __module__� __qualname__�str�__annotations__r����/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/commands/search.pyrrs4�������� � � �� � � ��s�)�����r rc �~�eZdZdZdZdZd d�Zdedee de fd �Z d ee dedee e e ffd �Z dS) � SearchCommandz@Search for PyPI packages whose name or summary contains .z %prog [options] T�returnNc��|j�ddddtjd���|j�d|j��dS)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)sW�� � � � � � ����M�F� !� � � � � �'�'��4�=�9�9�9�9�9r �options�argsc�&�|std���|}|�||��}t|��}d}tj���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.run5s���� L��J�K�K� K����K�K��w�/�/� ��i�(�(���� �:� � � � � ;�#�5�7�7��:�N��d�>�:�:�:�:� � ��N��r r?c��|j}|�|��}t||��}tj�||��} |�||d�d��}nL#tjj$r5}d�|j |j ���} t| ���d}~wwxYwt|t��sJ�|S)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� ��*�*�7�3�3��&�y�'�:�:� ��}�(�(��I�>�>�� (��;�;��%�@�@�$�G�G�D�D���}�"� (� (� (�F�M�M��_��(�N���G��w�'�'� '�����  (���� �$��%�%�%�%�%�� s�A(�(B1�<0B,�,B1)r$N)rrr�__doc__�usage�ignore_require_venvr2rrr�intrBrr7rr r!r#r#"s�������J�J� !�E��� :� :� :� :� �6� ��c�� �s� � � � � �D��I����4��S�#�X��;O������r r#rAr$c�r�t��}|D]�}|d}|d}|d}||���vr |||gd�||<�;||d�|��|t||d��kr |||d<��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. rr�version)rrrr)r�keys�append�highest_versionrP�values)rA�packages�hitrrr\s r!r8r8Xs��� -8�M�M�H��4�4���6�{���i�.���i�.�� �x�}�}��� &� &��"�$�I���H�T�N�N� �T�N�:� &� -� -�g� 6� 6� 6��/�(�4�.��*D�E�E�E�E�,3����y�)�� ����!�!� "� "�"r r�latestc�x�t��}|�|��}|��t��5|j|krt d|j��nJt d|j��t |��jrt d|��nt d|��ddd��dS#1swxYwYdSdS)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�D�D��_�d�l�;�;�;� ��(�(�,�:� �5������ !��&�9�9�9� :� :� :� :� :� :� :� :� :� :� :� :���� :� :� :� :� :� :��s�A,B-�-B1�4B1�name_column_widthr6c���|sdS|�td�|D����dz}|D]�}|d}|dpd}t|�ddg����}|�A||z dz }|d kr3tj||��}d d |d zzz�|��}|�d |�d�} | |��d|��} t | ��t||����#t$rY��wxYwdS)Nc ��g|]I}t|d��tt|�ddg������z��JS)rr�-)�lenr_�get)�.0rbs r!� z!print_results..�sZ��������F� �$�$�s�?�3�7�7�:�PS�u�;U�;U�+V�+V�'W�'W�W���r �rr�rrn�� � � �z (�)z - ) �maxr_rp�textwrap�wrap�joinrrj�UnicodeEncodeError) rArkr6rbrrrc� target_width� summary_lines� name_latest�lines r!r>r>�sh�� ����� � ���#���� � � �  � ������6�{���i�.�&�B�� �����c�U�!;�!;�<�<�� � %�)�,=�=��A�L��b� � � (� �g�|� D� D� ��#�):�Q�)>�"?�?�E�E�m�T�T���*�*��*�*�*� ��0�?�?�?�g�?�?�� � �� � � � (��v� 6� 6� 6� 6��!� � � � �D� ����!�s�2C� C�Crc�.�t|t���S)N)�key)r{rf)rs r!r_r_�s�� �x�]� +� +� +�+r )NN)1�loggingr<r9r|� 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!�r�s������� � � � � � � � ���������#�#�#�#�#�#�������6�6�6�6�6�6�6�6�6�6�6�6�@�@�@�@�@�@�2�2�2�2�2�2�=�=�=�=�=�=�D�D�D�D�D�D�D�D�1�1�1�1�1�1�:�:�:�:�:�:�+�+�+�+�+�+�;�;�;�;�;�;�2�2�2�2�2�2�1�1�1�1�1�1��� � � � � � ���������� �� �8� $� $��3�3�3�3�3�G�0�3�3�3�l#��d�3��8�n�-�#�$�7G�2H�#�#�#�#�8:�s�:�C�:�D�:�:�:�:�*(,�$(�#�#� �� �#���}�#��S�M�#� � #�#�#�#�L,�d�3�i�,�C�,�,�,�,�,�,r