o
    0i                     @  s  d dl mZ d dlZd dl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mZ d dlmZmZ d dlmZ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( e)e*Z+G dd deZ,dS )    )annotationsN)Iterable)Values)AnyCallable)canonicalize_name)Version)
cmdoptions)IndexGroupCommand)ERRORSUCCESS)get_installed_distributionprint_dist_installation_info)CommandErrorDistributionNotFoundPipError)LinkCollector)PackageFinder)SelectionPreferences)TargetPython)
PipSession)write_outputc                   @  sP   e Zd ZdZdZdZdddZd d	d
Zd!ddZ		d"d#ddZ	d$ddZ
dS )%IndexCommandz=
    Inspect information available from package indexes.
    Tz&
        %prog versions <package>
    returnNonec                 C  s|   t | j | jt   | jt   t t j| j}t t j	| j}| j
d| | j
d| | j
d| j d S )Nr   )r	   add_target_python_optionscmd_opts
add_optionignore_requires_pythonjsonmake_option_groupindex_groupparserpackage_selection_groupinsert_option_group)self
index_optsselection_opts r(   ^/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/pip/_internal/commands/index.pyadd_options(   s   zIndexCommand.add_options.dict[str, Callable[[Values, list[str]], None]]c                 C  s
   d| j iS )Nversions)get_available_package_versions)r%   r(   r(   r)   handler_map<   s   zIndexCommand.handler_mapoptionsr   args	list[str]intc              
   C  s   t | |  }|r|d |vrtddt| tS |d }z|| ||dd   W t
S  tyL } zt|j	d  tW  Y d }~S d }~ww )Nr   zNeed an action (%s) to perform.,    )r	   check_release_control_exclusiver.   loggererrorjoinsortedr   r   r0   r   )r%   r/   r0   r.   actioner(   r(   r)   runA   s"   
zIndexCommand.runNsessionr   target_pythonTargetPython | Noner   bool | Noner   c                 C  s6   t j||d}td|j|j|d}tj||||jdS )zK
        Create a package finder appropriate to the index command.
        )r/   F)allow_yankedrelease_controlformat_controlr   )link_collectorselection_prefsr>   uploaded_prior_to)r   creater   rB   rC   r   rF   )r%   r/   r=   r>   r   rD   rE   r(   r(   r)   _build_package_finderY   s   
z"IndexCommand._build_package_finder	list[Any]c                 C  sF  t |dkr
tdt|}|d }| |G}| j||||jd}dd ||D }| |t	|r<dd |D }t
|}|sItd| d	d
 t|ddD }|d }	W d    n1 sbw   Y  t|}
|jr|||	d}|
d urt|
j|d< tt| d S t| d|	 d tdd| t|	|
 d S )Nr4   z(You need to specify exactly one argumentr   )r/   r=   r>   r   c                 s  s    | ]}|j V  qd S N)version).0	candidater(   r(   r)   	<genexpr>   s    
z>IndexCommand.get_available_package_versions.<locals>.<genexpr>c                 s  s    | ]}|j s|V  qd S rJ   )is_prerelease)rL   rK   r(   r(   r)   rN      s    
z#No matching distribution found for c                 S  s   g | ]}t |qS r(   )str)rL   verr(   r(   r)   
<listcomp>   s    z?IndexCommand.get_available_package_versions.<locals>.<listcomp>T)reverse)namer,   latestinstalled_versionz ()zAvailable versions: {}r3   )lenr   r	   make_target_python_build_sessionrH   r   find_all_candidatesshould_exclude_prereleaser   setr   r9   r   r   rP   rK   r   dumpsformatr8   r   )r%   r/   r0   r>   queryr=   finderr,   formatted_versionsrU   diststructured_outputr(   r(   r)   r-   t   sL   

z+IndexCommand.get_available_package_versions)r   r   )r   r+   )r/   r   r0   r1   r   r2   )NN)
r/   r   r=   r   r>   r?   r   r@   r   r   )r/   r   r0   rI   r   r   )__name__
__module____qualname____doc__ignore_require_venvusager*   r.   r<   rH   r-   r(   r(   r(   r)   r      s    


r   )-
__future__r   r   loggingcollections.abcr   optparser   typingr   r   pip._vendor.packaging.utilsr   pip._vendor.packaging.versionr   pip._internal.clir	   pip._internal.cli.req_commandr
   pip._internal.cli.status_codesr   r   pip._internal.commands.searchr   r   pip._internal.exceptionsr   r   r   pip._internal.index.collectorr   "pip._internal.index.package_finderr   $pip._internal.models.selection_prefsr   "pip._internal.models.target_pythonr   pip._internal.network.sessionr   pip._internal.utils.miscr   	getLoggerre   r6   r   r(   r(   r(   r)   <module>   s*    
