3 ”Re;ã@s²dZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZmZmZmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&e&�rZddl'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7ddl#m8Z8m9Z9ej:e;ƒZe$j?e$j@e$jAgZBdd „ZCGd!d"„d"e>ƒZDdS)#aContains the Command base classes that depend on PipSession. The classes in this module are in a separate module so the commands not needing download / PackageFinder capability don't unnecessarily import the PackageFinder machinery and all its vendored dependencies, etc. éN)Úpartial)Ú cmdoptions)ÚCommand)ÚCommandContextMixIn)Ú CommandErrorÚPreviousBuildDirError)Ú LinkCollector)Ú PackageFinder)ÚSelectionPreferences)Ú Downloader)Ú PipSession)ÚRequirementPreparer)Úinstall_req_from_editableÚinstall_req_from_lineÚ#install_req_from_parsed_requirementÚinstall_req_from_req_string)Úparse_requirements)Úpip_self_version_check)Ú tempdir_kinds)ÚMYPY_CHECK_RUNNING)ÚValues)ÚAnyÚListÚOptionalÚTuple)Ú WheelCache)Ú TargetPython)ÚInstallRequirement)ÚRequirementTracker)Ú BaseResolver)Ú TempDirectoryÚTempDirectoryTypeRegistrycs>eZdZdZ‡fdd„Zedd„ƒZdd„Zd d d „Z‡Z S) ÚSessionCommandMixinzE A class mixin for command classes needing _build_session(). cstt|ƒjƒd|_dS)N)Úsuperr"Ú__init__Ú_session)Úself)Ú __class__©úŒ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/cli/req_command.pyr$8szSessionCommandMixin.__init__cCsLg}t|ddƒs*t|ddƒ}|r*|j|ƒt|ddƒ}|rD|j|ƒ|pJdS)z7Return a list of index urls from user-provided options.Úno_indexFÚ index_urlNÚextra_index_urls)ÚgetattrÚappendÚextend)ÚclsÚoptionsÚ index_urlsÚurlÚurlsr(r(r)Ú_get_index_urls=s     z#SessionCommandMixin._get_index_urlscCs0|jdkr*|j|j|ƒƒ|_|jdk s*t‚|jS)zGet a default-managed session.N)r%Ú enter_contextÚ_build_sessionÚAssertionError)r&r1r(r(r)Úget_default_sessionLs z'SessionCommandMixin.get_default_sessionNcCs¶|j stjj|jƒst‚t|jr2tjj|jdƒnd|dk r@|n|j|j|j |ƒd�}|j rd|j |_ |j rr|j |_ |j s||r�|dk rˆ|n|j |_ |jr¦|j|jdœ|_|j |j_|S)NÚhttp)ÚcacheÚretriesÚ trusted_hostsr2)r:Úhttps)Ú cache_dirÚosÚpathÚisabsr8r Újoinr<r=r5ÚcertÚverifyÚ client_certÚtimeoutÚproxyÚproxiesÚno_inputÚauthÚ prompting)r&r1r<rGÚsessionr(r(r)r7Ws"   z"SessionCommandMixin._build_session)NN) Ú__name__Ú __module__Ú __qualname__Ú__doc__r$Ú classmethodr5r9r7Ú __classcell__r(r()r'r)r"3s    r"c@seZdZdZdd„ZdS)ÚIndexGroupCommandz– Abstract base class for commands with the index_group options. This also corresponds to the commands that permit the pip version check. c CsTt|dƒst‚|js|jrdS|j|dtd|jƒd�}|�t||ƒWdQRXdS)z€ Do the pip version check if not disabled. This overrides the default behavior of not doing the check. r*Nré)r<rG)Úhasattrr8Údisable_pip_version_checkr*r7ÚminrGr)r&r1rMr(r(r)Úhandle_pip_version_check‡s z*IndexGroupCommand.handle_pip_version_checkN)rNrOrPrQrYr(r(r(r)rTsrTcsdd„‰‡‡fdd„}|S)zNDecorator for common logic related to managing temporary directories. cSsxtD]}|j|dƒqWdS)NF)ÚKEEPABLE_TEMPDIR_TYPESÚ set_delete)ÚregistryÚtr(r(r)Úconfigure_tempdir_registryªs z0with_cleanup..configure_tempdir_registryc sP|jdk st‚|jrˆ|jƒy ˆ|||ƒStk rJˆ|jƒ‚YnXdS)N)Útempdir_registryr8Úno_cleanr)r&r1Úargs)r^Úfuncr(r)Úwrapper¯s   zwith_cleanup..wrapperr()rbrcr()r^rbr)Ú with_cleanup¥srdc sVeZdZ‡fdd„Zeddd„ƒZedd d „ƒZd d „Zed d„ƒZddd„Z ‡Z S)ÚRequirementCommandcs&tt|ƒj||Ž|jjtjƒƒdS)N)r#rer$Úcmd_optsÚ add_optionrr`)r&raÚkw)r'r(r)r$ÃszRequirementCommand.__init__Nc CsBt||jd�}|j} | dk s t‚t| |j|||j||||j|d� S)zQ Create a RequirementPreparer instance for the given parameters. )Ú progress_barN) Ú build_dirÚsrc_dirÚ download_dirÚwheel_download_dirÚbuild_isolationÚ req_trackerÚ downloaderÚfinderÚrequire_hashesÚ use_user_site)r rirAr8r rkrnrr) Útemp_build_dirr1rorMrqrsrlrmrpÚtemp_build_dir_pathr(r(r)Úmake_requirement_preparerÉs z,RequirementCommand.make_requirement_preparerFTúto-satisfy-onlyc Cs†tt|j| d�} d|jkrTddl} | jjjjj |||| ||j ||||| d|jkd� Sddl } | jjj jj |||| ||j ||||| d� S)zF Create a Resolver instance for the given parameters. )ÚisolatedÚ use_pep517z 2020-resolverrNz fast-deps) ÚpreparerrqÚ wheel_cacheÚmake_install_reqrsÚignore_dependenciesÚignore_installedÚignore_requires_pythonÚforce_reinstallÚupgrade_strategyÚpy_version_infoÚ lazy_wheel) rzrqr{r|rsr}r~rr€r�r‚) rrÚ isolated_modeÚfeatures_enabledÚ,pip._internal.resolution.resolvelib.resolverÚ _internalÚ resolutionÚ resolvelibÚresolverÚResolverr}Ú(pip._internal.resolution.legacy.resolverÚlegacy) rzrqr1r{rsr~rr€r�ryr‚r|Úpipr(r(r)Ú make_resolverês@   z RequirementCommand.make_resolverc Csfg}xD|jD]:}x4t|d|||d�D]}t||jdd�}|j|ƒq$Wq Wx,|D]$} t| d|j|jdd�}|j|ƒqPWx,|jD]"} t| d|j|jd�}|j|ƒq€WxF|j D]<}x6t||||d�D]"}t||j|jdd�}|j|ƒqÄWq®Wt d d „|Dƒƒ�rd|_ |�p|j�p|j �sbd |j i} |j �rRtd jft| d j|j ƒd�Žƒ‚ntdjf| Žƒ‚|S)zS Parse command-line arguments into the corresponding requirements. T)Ú constraintrqr1rMF)rxÚ user_suppliedN)rxryr‘)r‘rxry)rqr1rMcss|] }|jVqdS)N)Úhas_hash_options)Ú.0Úreqr(r(r)ú Zsz6RequirementCommand.get_requirements..ÚnamezXYou must give at least one requirement to {name} (maybe you meant "pip {name} {links}"?)ú )ÚlinkszHYou must give at least one requirement to {name} (see "pip help {name}"))Ú constraintsrrr„r.rryÚ editablesrÚ requirementsÚanyrrr–Ú find_linksrÚformatÚdictrC) r&rar1rqrMr›ÚfilenameÚ parsed_reqÚ req_to_addr”Úoptsr(r(r)Úget_requirements#s\        z#RequirementCommand.get_requirementscCs |j}|jƒ}|rtj|ƒdS)zE Trace basic information about the provided objects. N)Ú search_scopeÚget_formatted_locationsÚloggerÚinfo)rqr¥Ú locationsr(r(r)Útrace_basic_infoksz#RequirementCommand.trace_basic_infocCs6tj||d�}td|j|j|j|d�}tj|||d�S)zÛ Create a package finder appropriate to this requirement command. :param ignore_requires_python: Whether to ignore incompatible "Requires-Python" values in links. Defaults to False. )r1T)Ú allow_yankedÚformat_controlÚallow_all_prereleasesÚ prefer_binaryr)Úlink_collectorÚselection_prefsÚ target_python)rÚcreater r¬Úprer®r )r&r1rMr±rr¯r°r(r(r)Ú_build_package_finderwsz(RequirementCommand._build_package_finder)NN)NFTFFrwNN)NN) rNrOrPr$Ú staticmethodrvr�r¤rªr´rSr(r()r'r)reÁs"   -H re)ErQÚloggingr@Ú functoolsrZpip._internal.clirÚpip._internal.cli.base_commandrÚ!pip._internal.cli.command_contextrÚpip._internal.exceptionsrrÚpip._internal.index.collectorrÚ"pip._internal.index.package_finderr Ú$pip._internal.models.selection_prefsr Úpip._internal.network.downloadr Úpip._internal.network.sessionr Ú pip._internal.operations.preparer Úpip._internal.req.constructorsrrrrZpip._internal.req.req_filerÚ!pip._internal.self_outdated_checkrÚpip._internal.utils.temp_dirrÚpip._internal.utils.typingrÚoptparserÚtypingrrrrÚpip._internal.cacherÚ"pip._internal.models.target_pythonrZpip._internal.req.req_installrÚpip._internal.req.req_trackerrÚpip._internal.resolution.baserr r!Ú getLoggerrNr§r"rTÚ BUILD_ENVÚEPHEM_WHEEL_CACHEÚ REQ_BUILDrZrdrer(r(r(r)ÚsF                     L