a
    b3j                     @  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&   y/www/wwwroot/dpstar/app/297b3aabda72fedb274352021c2dd8b5_venv/lib/python3.9/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
|}|std| d	d
 t|ddD }|d }	W d    n1 s0    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   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(   
