
    Kui                    .   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jR                  e*      Z+ G d de      Z,y)    )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                  X    e Zd ZdZdZdZd
dZddZddZ	 	 d	 	 	 	 	 	 	 	 	 ddZ	dd	Z
y)IndexCommandz=
    Inspect information available from package indexes.
    Tz&
        %prog versions <package>
    c                j   t        j                  | j                         | j                  j                  t        j                                | j                  j                  t        j
                                t        j                  t         j                  | j                        }t        j                  t         j                  | j                        }| j                  j                  d|       | j                  j                  d|       | j                  j                  d| j                         y )Nr   )r
   add_target_python_optionscmd_opts
add_optionignore_requires_pythonjsonmake_option_groupindex_groupparserpackage_selection_groupinsert_option_group)self
index_optsselection_optss      f/root/.openclaw/workspace/chatterbox_venv/lib/python3.12/site-packages/pip/_internal/commands/index.pyadd_optionszIndexCommand.add_options(   s    ,,T]];  !B!B!DE  !2311""KK


 $55..KK

 	'':6''>:''4==9    c                    d| j                   iS )Nversions)get_available_package_versions)r&   s    r)   handler_mapzIndexCommand.handler_map<   s    ;;
 	
r+   c                x   t        j                  |       | j                         }|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)Nr   zNeed an action (%s) to perform.,    )r
   check_release_control_exclusiver/   loggererrorjoinsortedr   r   argsr   )r&   optionsr8   r/   actiones         r)   runzIndexCommand.runA   s    227;&&( tAwk1LL1		&-. La	Kab2
 	  	LL#L	s   )A> >	B9'B4.B94B9Nc                    t        j                  ||      }t        d|j                  |j                  |      }t        j                  ||||j                        S )zK
        Create a package finder appropriate to the index command.
        )r9   F)allow_yankedrelease_controlformat_controlr   )link_collectorselection_prefstarget_pythonuploaded_prior_to)r   creater   r?   r@   r   rD   )r&   r9   sessionrC   r   rA   rB   s          r)   _build_package_finderz"IndexCommand._build_package_finderY   sa     '--gwG /#33"11#9	
 ##)+'%77	
 	
r+   c                4   t        |      dk7  rt        d      t        j                  |      }|d   }| j	                  |      5 }| j                  ||||j                        }d |j                  |      D        }| j                  |t        |            r	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   )r9   rF   rC   r   c              3  4   K   | ]  }|j                     y wN)version).0	candidates     r)   	<genexpr>z>IndexCommand.get_available_package_versions.<locals>.<genexpr>   s      +&/	!!+s   c              3  :   K   | ]  }|j                   r|  y wrJ   )is_prerelease)rL   rK   s     r)   rN   z>IndexCommand.get_available_package_versions.<locals>.<genexpr>   s       '7;P;PGs   z#No matching distribution found for T)reverse)namer-   latestinstalled_versionz ()zAvailable versions: {}r1   )lenr   r
   make_target_python_build_sessionrG   r   find_all_candidatesshould_exclude_prereleaser   setr   r7   strr   r    rK   r   dumpsformatr6   r   )r&   r9   r8   rC   queryrF   finderr-   verformatted_versionsrS   diststructured_outputs                r)   r.   z+IndexCommand.get_available_package_versionst   s   t9>IJJ"55g>Q  ) 	+W//+'.'E'E	 0 F+393M3Me3T+H --g7H7OP+3 8}H*9%A  7=Xt6T!Us#c(!U!U'*F1	+4 *%0<<. ! 9<T\\9J!"56$567 E7"VHA./188CU9VWX(6) "V/	+ 	+s   BFF	F	FF)returnNone)re   z.dict[str, Callable[[Values, list[str]], None]])r9   r   r8   z	list[str]re   int)NN)
r9   r   rF   r   rC   zTargetPython | Noner   zbool | Nonere   r   )r9   r   r8   z	list[Any]re   rf   )__name__
__module____qualname____doc__ignore_require_venvusager*   r/   r<   rG   r.    r+   r)   r   r      sg     E:(

8 .2.2

 
 +	

 !,
 

627r+   r   )-
__future__r   r    loggingcollections.abcr   optparser   typingr   r   pip._vendor.packaging.utilsr   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   	getLoggerrh   r4   r   rn   r+   r)   <module>r      sg    "   $    9 1 ( ; 9 R Q 7 < E ; 4 1			8	$H7$ H7r+   