�
��^i� � � � d dl Z d dlmZ d dlmZmZmZmZmZ d dl m
Z
mZ d dlm
Z
d dlmZ d dlmZmZ d dlmZ d d lmZmZmZ d d
lmZ d dlmZ d dlmZ d d
lm Z d dl!m"Z" d dl#m$Z$ e j% e&� � Z' G d� de� � Z(dS )� N)�Values)�Any�Iterable�List�Optional�Union)�
LegacyVersion�Version)�
cmdoptions)�IndexGroupCommand)�ERROR�SUCCESS)�print_dist_installation_info)�CommandError�DistributionNotFound�PipError)�
LinkCollector)�
PackageFinder)�SelectionPreferences)�TargetPython)�
PipSession)�write_outputc � � e Zd ZdZdZdd�Zdedee de fd�Z
dded ed
ee
dee def
d�Zdedee ddfd
�ZdS )�IndexCommandz=
Inspect information available from package indexes.
z&
%prog versions
�returnNc �N � t j | j � � | j � t j � � � � | j � t j � � � � | j � t j � � � � | j � t j � � � � t j t j | j
� � }| j
� d|� � | j
� d| j � � d S )Nr )r �add_target_python_options�cmd_opts�
add_option�ignore_requires_python�pre� no_binary�only_binary�make_option_group�index_group�parser�insert_option_group)�self�
index_optss ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/commands/index.py�add_optionszIndexCommand.add_options s� � ��,�T�]�;�;�;��
� � ��!B�!D�!D�E�E�E��
� � ���!1�!1�2�2�2��
� � ��!5�!7�!7�8�8�8��
� � ��!7�!9�!9�:�:�:��1��"��K�
�
�
�
��'�'��:�6�6�6���'�'��4�=�9�9�9�9�9� �options�argsc �� � d| j i}t � d� � |r
|d |vrBt � dd� t |� � � � � � t S |d } || ||dd � � � nC# t $ r6}t � |j d � � t cY d }~S d }~ww xY wt S )N�versionsztpip index is currently an experimental command. It may be removed/changed in a future release without prior warning.r zNeed an action (%s) to perform.�, � )
�get_available_package_versions�logger�warning�error�join�sortedr
r r. r )r( r- r. �handlers�action�es r* �runzIndexCommand.run/ s� � ���;�
�� ���
%�
�
�
� � �t�A�w�h�.�.��L�L�1�� � �&��*�*�+�+�
�
�
� �L��a��� ��H�V��W�d�1�2�2�h�/�/�/�/��� � � ��L�L�����#�#�#��L�L�L�L�L�L����� ���� �s �;B �
C� +C�C�C�session�
target_pythonr c � � t j ||�� � }t d|j |�� � }t j |||�� � S )zK
Create a package finder appropriate to the index command.
)r- F)�allow_yanked�allow_all_prereleasesr )�link_collector�selection_prefsr> )r �creater r! r )r( r- r= r> r rB rC s r* �_build_package_finderz"IndexCommand._build_package_finderM s_ � � '�-�g�w�G�G�G�� /��")�+�#9�
�
�
�� �#�)�+�'�
�
�
�
r, c �� � t |� � dk rt d� � �t j |� � }|d }| � |� � 5 }| � ||||j �� � }d� |� |� � D � � }|j sd� |D � � }t |� � }|s"t d� |� � � � �d� t |d �
� � D � � }|d } d d d � � n# 1 swxY w Y t d� || � � � � t d� d
� |� � � � � � t || � � d S )Nr2 z(You need to specify exactly one argumentr )r- r= r> r c 3 �$ K � | ]}|j V � �d S �N)�version)�.0� candidates r* � z>IndexCommand.get_available_package_versions..u s> � � � � A� A�&/� �!�A� A� A� A� A� Ar, c 3 �( K � | ]
}|j � |V � �d S rH )�
is_prerelease)rJ rI s r* rL z>IndexCommand.get_available_package_versions..{ s> � � � � � � '�7�;P���� � � � � r, z%No matching distribution found for {}c �, � g | ]}t |� � ��S � )�str)rJ �vers r* �
z?IndexCommand.get_available_package_versions..� s � �!U�!U�!U�s�#�c�(�(�!U�!U�!Ur, T)�reversez{} ({})zAvailable versions: {}r1 )�lenr r �make_target_python�_build_sessionrE r �find_all_candidatesr! �setr �formatr8 r r7 r )
r( r- r. r> �queryr= �finderr0 �formatted_versions�latests
r* r3 z+IndexCommand.get_available_package_versionsf s� � ��t�9�9��>�>��I�J�J�J�"�5�g�>�>�
��Q���
�
�
��
)�
)� +�W��/�/���+�'.�'E� 0� � �F�A� A�39�3M�3M�e�3T�3T�A� A� A�H� �;�
�� �+3�� � �� �8�}�}�H��
�*�;�B�B�5�I�I�� � � "V�!U�f�X�t�6T�6T�6T�!U�!U�!U��'��*�F�3 +� +� +� +� +� +� +� +� +� +� +���� +� +� +� +�6 �Y�%�%�e�V�4�4�5�5�5��-�4�4�T�Y�Y�?Q�5R�5R�S�S�T�T�T�$�U�F�3�3�3�3�3s �B'D�D�D)r N)NN)�__name__�
__module__�__qualname__�__doc__�usager+ r r rQ �intr<