
    )h                        d dl Z d dlZd dlmZ d dlmZ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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jJ                  e&      Z' G d de      Z(y)    N)Values)AnyIterableListOptional)Version)
cmdoptions)IndexGroupCommand)ERRORSUCCESS)get_installed_distribution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y)IndexCommandz=
    Inspect information available from package indexes.
    Tz&
        %prog versions <package>
    returnNc                    t        j                  | j                         | j                  j                  t        j                                | j                  j                  t        j
                                | j                  j                  t        j                                | j                  j                  t        j                                | j                  j                  t        j                                t        j                  t         j                  | j                        }| j                  j                  d|       | j                  j                  d| j                         y )Nr   )r	   add_target_python_optionscmd_opts
add_optionignore_requires_pythonprejson	no_binaryonly_binarymake_option_groupindex_groupparserinsert_option_group)self
index_optss     O/var/www/html/venv/lib/python3.12/site-packages/pip/_internal/commands/index.pyadd_optionszIndexCommand.add_options$   s    ,,T]];  !B!B!DE  !12  !23  !5!5!78  !7!7!9:11""KK


 	'':6''4==9    optionsargsc                 J   d| j                   i}|r|d   |vr4t        j                  ddj                  t	        |                   t
        S |d   }	  ||   ||dd         t        S # t        $ r2}t        j                  |j                  d          t
        cY d }~S d }~ww xY w)Nversionsr   zNeed an action (%s) to perform.,    )	get_available_package_versionsloggererrorjoinsortedr   r   r.   r   )r(   r-   r.   handlersactiones         r*   runzIndexCommand.run5   s    ;;

 tAwh.LL1		&*+ La	HVWd12h/
 	  	LL#L	s   A' '	B"0'BB"B"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   rA   rB   s          r*   _build_package_finderz"IndexCommand._build_package_finderM   sM     '--gwG /")++#9
 ##)+'
 	
r,   c                    t        |      dk7  rt        d      t        j                  |      }|d   }| j	                  |      5 }| j                  ||||j                        }d |j                  |      D        }|j                  s	d |D        }t        |      }|st        d|       t        |d	      D cg c]  }t        |       }	}|	d   }
d d d        t        |      }|j                  r?|	
d
}|t        |j                        |d<   t!        t        j"                  |             y t!        | d
 d       t!        dj%                  dj'                  	                   t)        |
|       y c c}w # 1 sw Y   xY w)Nr2   z(You need to specify exactly one argumentr   )r-   r<   r=   r   c              3   4   K   | ]  }|j                     y wN)version).0	candidates     r*   	<genexpr>z>IndexCommand.get_available_package_versions.<locals>.<genexpr>u   s      +&/	!!+s   c              3   :   K   | ]  }|j                   r|  y wrG   )is_prerelease)rI   rH   s     r*   rK   z>IndexCommand.get_available_package_versions.<locals>.<genexpr>{   s       '7;P;PGs   z#No matching distribution found for T)reverse)namer0   latestinstalled_versionz ()zAvailable versions: {}r1   )lenr   r	   make_target_python_build_sessionrD   r   find_all_candidatesr    setr   r7   strr   r!   rH   r   dumpsformatr6   r   )r(   r-   r.   r=   queryr<   finderr0   verformatted_versionsrP   diststructured_outputs                r*   r3   z+IndexCommand.get_available_package_versionsf   s   t9>IJJ"55g>Q  ) 	+W//+'.'E'E	 0 F+393M3Me3T+H ;;+3 8}H*9%A  7=Xt6T!Us#c(!U!U'*F3	+6 *%0<<. ! 9<T\\9J!"56$567 E7"VHA./188CU9VWX(6) "V1	+ 	+s   A7E?<E:E?:E??F)r   N)NN)__name__
__module____qualname____doc__ignore_require_venvusager+   r   r   rX   intr;   r   r   r   boolr   rD   r   r3    r,   r*   r   r      s     E:"6 c s 8 1515

 
  -	

 !)
 

237f 37DI 37RV 37r,   r   ))r!   loggingoptparser   typingr   r   r   r   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   	getLoggerra   r4   r   ri   r,   r*   <module>rz      sa       0 0 1 ( ; 9 R Q 7 < E ; 4 1			8	$7$ 7r,   