v_c@stdZddlZddlmZmZddlmZddlmZ ddl m Z m Z m Z mZmZddlmZerddlmZmZmZmZmZdd lmZdd lmZmZeeeefZneje Z!yddl"a"WnEe#k r"da"n/e%k rPZ&e!j'd ee&da"nXd Z(d efdYZ)dS(sNetwork Authentication Helpers Contains interface (MultiDomainBasicAuth) and associated glue code for providing credentials in the context of network requests. iN(tAuthBaset HTTPBasicAuth(tget_netrc_auth(tparse(taskt ask_inputt ask_passwordtremove_auth_from_urltsplit_auth_netloc_from_url(tMYPY_CHECK_RUNNING(tDicttOptionaltTupletListtAny(tAuthInfo(tResponsetRequests*Keyring is skipped due to an exception: %scCs| st rdSyy tj}Wntk r5n@Xtjd||||}|dk rq|j|jfSdS|rtjd|tj||}|r||fSnWn/t k r}tj dt |danXdS(s3Return the tuple auth for a given url from keyring.s'Getting credentials from keyring for %ss$Getting password from keyring for %ss*Keyring is skipped due to an exception: %sN( tkeyringtNonetget_credentialtAttributeErrortloggertdebugtusernametpasswordt get_passwordt Exceptiontwarningtstr(turlRRtcredRtexc((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pytget_keyring_auth,s,    tMultiDomainBasicAuthcBsneZed dZdZeedZdZdZdZ dZ dZ dZ d Z RS( cCs(||_||_i|_d|_dS(N(t promptingt index_urlst passwordsRt_credentials_to_save(tselfR#R$((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyt__init__Os   cCsY| s|j rdSx=|jD]2}t|jdd}|j|r|SqWdS(sReturn the original index URL matching the requested URL. Cached or dynamically generated credentials may work against the original index URL rather than just the netloc. The provided url should have had its username and password removed already. If the original index url had credentials then they will be included in the return value. Returns None if no matching index was found, or if --no-index was specified by the user. t/N(R$RRtrstript startswith(R'Rtutprefix((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyt_get_index_url[scCsdt|\}}}|\}}|dk rM|dk rMtjd||S|j|} | rt| } | r| \} } } tjd| qn| r| ddk r| \}}|dk r|dk rtjd|| Sn|rt|} | rtjd|| Sn|rZt| |p:t||}|rZtjd||Sn||fS(s2Find and return credentials for the specified URL.sFound credentials in url for %ssFound index url %sis%Found credentials in index url for %ss!Found credentials in netrc for %ss#Found credentials in keyring for %sN(RRRRR.RR!(R't original_urlt allow_netrct allow_keyringRtnetlocturl_user_passwordRRt index_urlt index_infot_tindex_url_user_passwordt netrc_authtkr_auth((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyt_get_new_credentialsrs:    c Cst|\}}}|jj|d\}}|dkr`|dkr`|j|\}}n|dk sx|dk r|pd}|pd}||f|j|RtFalseR!RtTrue(R'R2RtauthR((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyt_prompt_for_passwords & cCs#ts tStdddgdkS(Ns#Save credentials to keyring [y/N]: tytn(RRER(R'((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyt _should_save_password_to_keyringsc KsD|jdkr|S|js |Stj|j}|j|j\}}}d|_|dk r|dk r||f|j |j<|r|j r|j||f|_qn|j |j j t|pd|pd|j}|jd|j|jr|jd|jn|jj||}|jj||S(NiR;R@(t status_codeR#t urllib_parseturlparseRRHR2RR&R%RKtcontenttrawt release_connRtrequestRAt warn_on_401tsave_credentialst connectiontsendthistorytappend( R'tresptkwargstparsedRRtsaveRCtnew_resp((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyRBs(   $ cKs,|jdkr(tjd|jjndS(s6Response callback to warn about incorrect credentials.is)401 Error, Credentials not correct for %sN(RLRRRRR(R'RYRZ((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyRS scKstdk stdts"dS|j}d|_|r|jdkrytjdtj|Wqtk rtj dqXndS(s1Response callback to save credentials on success.s'should never reach here without keyringNisSaving credentials to keyringsFailed to save credentials( RRR=R&RLRtinfot set_passwordRt exception(R'RYRZtcreds((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyRT(s    N(t__name__t __module__RFRR(R.R:R?RDRHRKRBRSRT(((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyR"Ms  2 )   . (*t__doc__tloggingtpip._vendor.requests.authRRtpip._vendor.requests.utilsRtpip._vendor.six.moves.urllibRRMtpip._internal.utils.miscRRRRRtpip._internal.utils.typingR ttypingR R R R Rt pip._internal.vcs.versioncontrolRtpip._vendor.requests.modelsRRRt Credentialst getLoggerRbRRt ImportErrorRRR RR!R"(((sK/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/network/auth.pyts, ((    !