o g@sddlZddlmZddlmZmZmZmZmZddl m Z m Z ddl m Z ddlmZddlmZmZddlmZdd lmZmZmZdd lmZdd lmZdd lmZdd lm Z ddl!m"Z"ddl#m$Z$e%e&Z'GdddeZ(dS)N)Values)AnyIterableListOptionalUnion) LegacyVersionVersion) cmdoptions)IndexGroupCommand)ERRORSUCCESS)print_dist_installation_info) CommandErrorDistributionNotFoundPipError) LinkCollector) PackageFinder)SelectionPreferences) TargetPython) PipSession) write_outputc @s~eZdZdZdZdddZdedeede fd d Z  dded e d e e d e edef ddZdedeeddfddZdS) IndexCommandz= Inspect information available from package indexes. z& %prog versions returnNcCs~t|j|jt|jt|jt|jtttj |j }|j d||j d|jdS)Nr) r add_target_python_optionscmd_opts add_optionignore_requires_pythonpre no_binary only_binarymake_option_group index_groupparserinsert_option_group)self index_optsr'>/usr/lib/python3/dist-packages/pip/_internal/commands/index.py add_optionss zIndexCommand.add_optionsoptionsargsc Csd|ji}td|r|d|vrtddt|tS|d}z||||ddWt StyM}zt|jdtWYd}~Sd}~ww)Nversionsztpip index is currently an experimental command. It may be removed/changed in a future release without prior warning.rzNeed an action (%s) to perform., ) get_available_package_versionsloggerwarningerrorjoinsortedr rr+r )r%r*r+handlersactioner'r'r(run/s( zIndexCommand.runsession target_pythonrcCs6tj||d}td|j|d}tj|||d|jvdS)zK Create a package finder appropriate to the index command. )r*F) allow_yankedallow_all_prereleasesrhtml5lib)link_collectorselection_prefsr:use_deprecated_html5lib)rcreaterrrdeprecated_features_enabled)r%r*r9r:rr>r?r'r'r(_build_package_finderMs z"IndexCommand._build_package_finderc Cst|dkr tdt|}|d}||B}|j||||jd}dd||D}|js7dd|D}t |}|sDt d |d d t |d d D}|d} Wdn1s]wYt d || t d d|t|| dS)Nr.z(You need to specify exactly one argumentr)r*r9r:rcss|]}|jVqdSN)version).0 candidater'r'r( vs z>IndexCommand.get_available_package_versions..css|]}|js|VqdSrD) is_prerelease)rFrEr'r'r(rH|s  z%No matching distribution found for {}cSsg|]}t|qSr')str)rFverr'r'r( sz?IndexCommand.get_available_package_versions..T)reversez{} ({})zAvailable versions: {}r-)lenrr make_target_python_build_sessionrCrfind_all_candidatesrsetrformatr4rr3r) r%r*r+r:queryr9finderr,formatted_versionslatestr'r'r(r/gs:    z+IndexCommand.get_available_package_versions)rN)NN)__name__ __module__ __qualname____doc__usager)rrrJintr8rrrboolrrCrr/r'r'r'r(rs& " r))loggingoptparsertypingrrrrrpip._vendor.packaging.versionrr pip._internal.clir pip._internal.cli.req_commandr pip._internal.cli.status_codesr r pip._internal.commands.searchrpip._internal.exceptionsrrrpip._internal.index.collectorr"pip._internal.index.package_finderr$pip._internal.models.selection_prefsr"pip._internal.models.target_pythonrpip._internal.network.sessionrpip._internal.utils.miscr getLoggerrXr0rr'r'r'r(s"