
    e                        d dl Z d dlmZ d dlmZmZmZmZmZ d dl	m
Z
m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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 j%        e&          Z' G d de          Z(dS )    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 Zd ZdZdZdZddZdedee	         de
fd	Z	 	 dded
edee         dee         def
dZdedee         ddfdZdS )IndexCommandz=
    Inspect information available from package indexes.
    Tz&
        %prog versions <package>
    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     S/var/www/html/api/venv/lib/python3.11/site-packages/pip/_internal/commands/index.pyadd_optionszIndexCommand.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         |vrBt                              dd                    t          |                               t          S |d         }	  ||         ||dd                     nC# t          $ r6}t                              |j        d                    t          cY d }~S d }~ww xY wt          S )Nversionsztpip index is currently an experimental command. It may be removed/changed in a future release without prior warning.r   zNeed an action (%s) to perform.,    )
get_available_package_versionsloggerwarningerrorjoinsortedr   r   r.   r   )r(   r-   r.   handlersactiones         r*   runzIndexCommand.run0   s    ;
 	%	
 	
 	
  	tAwh..LL1		&**++   La	HVWd122h//// 	 	 	LL###LLLLLL	 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_finderN   s_     '-gwGGG /")+#9
 
 
 #)+'
 
 
 	
r,   c                    t          |          dk    rt          d          t          j        |          }|d         }|                     |          5 }|                     ||||j                  }d |                    |          D             }|j        sd |D             }t          |          }|s"t          d                    |                    d t          |d	
          D             }|d         }	d d d            n# 1 swxY 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*   	<genexpr>z>IndexCommand.get_available_package_versions.<locals>.<genexpr>v   s>       A A&/	!A A A A A Ar,   c              3   (   K   | ]}|j         	|V  d S rH   )is_prerelease)rJ   rI   s     r*   rL   z>IndexCommand.get_available_package_versions.<locals>.<genexpr>|   s>         '7;P     r,   z%No matching distribution found for {}c                 ,    g | ]}t          |          S  )str)rJ   vers     r*   
<listcomp>z?IndexCommand.get_available_package_versions.<locals>.<listcomp>   s    !U!U!Us#c((!U!U!Ur,   T)reversez{} ({})zAvailable 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_versionsg   s   t99>>IJJJ"5g>>Q  )) 	+W//+'.'E	 0  FA A393M3Me3T3TA A AH ;  +3   8}}H *;BB5II   "V!UfXt6T6T6T!U!U!U'*F3	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+6 	Y%%eV44555-44TYY?Q5R5RSSTTT$UF33333s   B'DDD)r   N)NN)__name__
__module____qualname____doc__ignore_require_venvusager+   r   r   rQ   intr<   r   r   r   boolr   rE   r   r3   rP   r,   r*   r   r      s          E: : : : 6 c s    D 1515
 

 
  -	

 !)
 

 
 
 
2$4f $4DI $4RV $4 $4 $4 $4 $4 $4r,   r   ))loggingoptparser   typingr   r   r   r   r   pip._vendor.packaging.versionr	   r
   pip._internal.clir   pip._internal.cli.req_commandr   pip._internal.cli.status_codesr   r   pip._internal.commands.searchr   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_   r4   r   rP   r,   r*   <module>rw      s          7 7 7 7 7 7 7 7 7 7 7 7 7 7 @ @ @ @ @ @ @ @ ( ( ( ( ( ( ; ; ; ; ; ; 9 9 9 9 9 9 9 9 F F F F F F Q Q Q Q Q Q Q Q Q Q 7 7 7 7 7 7 < < < < < < E E E E E E ; ; ; ; ; ; 4 4 4 4 4 4 1 1 1 1 1 1		8	$	$u4 u4 u4 u4 u4$ u4 u4 u4 u4 u4r,   