a
lj @ s 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 %e&Z'G dd deZ(dS ) N)Values)AnyIterableListOptionalUnion)
LegacyVersionVersion)
cmdoptions)IndexGroupCommand)ERRORSUCCESS)print_dist_installation_info)CommandErrorDistributionNotFoundPipError)
LinkCollector)
PackageFinder)SelectionPreferences)TargetPython)
PipSession)write_outputc @ sn e Zd ZdZdZddddZeee e ddd Z
deeee
ee ed
ddZeee ddd
dZdS )IndexCommandz=
Inspect information available from package indexes.
z&
%prog versions
N)returnc C s~ t | j | jt | jt | jt | jt t t j | j
}| j
d| | j
d| j d S )Nr )r
Zadd_target_python_optionsZcmd_optsZ
add_optionignore_requires_pythonpreZ no_binaryZonly_binaryZmake_option_groupZindex_groupparserZinsert_option_group)selfZ
index_opts r @/usr/lib/python3.9/site-packages/pip/_internal/commands/index.pyadd_options s zIndexCommand.add_options)optionsargsr c
C s d| j i}td |r$|d |vr>tddt| tS |d }z|| ||dd W n8 ty } z t|jd tW Y d }~S d }~0 0 t S )Nversionsztpip 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_versionsloggerZwarningerrorjoinsortedr r r" r
)r r! r" handlersactioner r r run/ s$ zIndexCommand.run)r! session
target_pythonr r c C s. t j||d}td|j|d}tj|||dS )zK
Create a package finder appropriate to the index command.
)r! F)Zallow_yankedZallow_all_prereleasesr )link_collectorselection_prefsr0 )r Zcreater r r )r r! r/ r0 r r1 r2 r r r _build_package_finderM s
z"IndexCommand._build_package_finderc
C s t |dkrtdt|}|d }| |}| j||||jd}dd ||D }|jsndd |D }t |}|st
d|d d
t|ddD }|d } W d n1 s0 Y t
d
|| t
dd| t|| d S )Nr% z(You need to specify exactly one argumentr )r! r/ r0 r c s s | ]}|j V qd S N)version).0 candidater r r u s z>IndexCommand.get_available_package_versions..c s s | ]}|j s|V qd S r4 )Z
is_prerelease)r6 r5 r r r r8 { s z%No matching distribution found for {}c S s g | ]}t |qS r )str)r6 Zverr r r