a
    ñ»j�  ã                   @  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d„Zddœd	d
„Zddddœdd„Zdddddddœdd„Z	ddddœdd„Z
dS )ÚIndexCommandz=
    Inspect information available from package indexes.
    Tz&
        %prog versions <package>
    ÚNone)Úreturnc                 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ÚparserZpackage_selection_groupÚinsert_option_group)ÚselfÚ
index_optsZselection_opts© r&   úBE:\soccer\ml_env\Lib\site-packages\pip/_internal/commands/index.pyÚadd_options(   s    þþzIndexCommand.add_optionsz.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_mapr   z	list[str]Úint)ÚoptionsÚargsr   c              
   C  sœ   t  |¡ |  ¡ }|r"|d |vr<t dd t|ƒ¡¡ tS |d }z|| ||dd … ƒ W n8 ty– } z t |j	d ¡ tW  Y d }~S d }~0 0 t
S )Nr   zNeed an action (%s) to perform.ú, é   )r	   Zcheck_release_control_exclusiver+   ÚloggerÚerrorÚjoinÚsortedr   r   r.   r   )r$   r-   r.   r+   ÚactionÚer&   r&   r'   ÚrunA   s    
þzIndexCommand.runNr   zTargetPython | Nonezbool | Noner   )r-   ÚsessionÚtarget_pythonr   r   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_prefsr9   Úuploaded_prior_to)r   Úcreater   r;   r<   r   r?   )r$   r-   r8   r9   r   r=   r>   r&   r&   r'   Ú_build_package_finderY   s    
üüz"IndexCommand._build_package_finderz	list[Any]c                 C  sH  t |ƒdkrtdƒ‚t |¡}|d }|  |¡�Ž}| j||||jd�}dd„ | |¡D ƒ}|  |t	|ƒ¡rxdd„ |D ƒ}t
|ƒ}|s’td|› �ƒ‚d	d
„ t|dd�D ƒ}|d }	W d   ƒ n1 sÄ0    Y  t|ƒ}
|j�r|||	dœ}|
d u�rt|
jƒ|d< tt |¡ƒ n2t|› d|	› d�ƒ td d |¡¡ƒ t|	|
ƒ d S )Nr0   z(You need to specify exactly one argumentr   )r-   r8   r9   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 rB   )Úis_prerelease)rD   rC   r&   r&   r'   rF   ˆ   s   z#No matching distribution found for c                 S  s   g | ]}t |ƒ‘qS r&   )Ústr)rD   Úverr&   r&   r'   Ú
<listcomp>’   ó    z?IndexCommand.get_available_package_versions.<locals>.<listcomp>T)Úreverse)Únamer)   ÚlatestÚinstalled_versionz (ú)zAvailable versions: {}r/   )Úlenr   r	   Úmake_target_pythonÚ_build_sessionrA   r   Úfind_all_candidatesZshould_exclude_prereleaser   Úsetr   r4   r   r   rH   rC   r   ÚdumpsÚformatr3   r   )r$   r-   r.   r9   Úqueryr8   Úfinderr)   Zformatted_versionsrN   ÚdistZstructured_outputr&   r&   r'   r*   t   sJ    
üÿÿÿ&ý
z+IndexCommand.get_available_package_versions)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úignore_require_venvÚusager(   r+   r7   rA   r*   r&   r&   r&   r'   r      s     ûr   )-Ú
__future__r   r   ÚloggingÚcollections.abcr   Úoptparser   Útypingr   r   Úpip._vendor.packaging.utilsr   Zpip._vendor.packaging.versionr   Zpip._internal.clir	   Úpip._internal.cli.req_commandr
   Úpip._internal.cli.status_codesr   r   Z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   Ú	getLoggerr[   r1   r   r&   r&   r&   r'   Ú<module>   s(   
