1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Ë
ñúhÉPãóš—dZddlmZddlZddlZddlZddlZddlZddlZddl    Z
ddl m Z m Z ddlmZddlmZddlmZddlmZmZdd    lmZmZdd
lmZmZdd lmZdd lmZdd l m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z'ee(«Z)da*Gd„de«Z+Gd„de «Z,Gd„de,«Z-Gd„de,«Z.Gd„de,«Z/edd„«Z0Gd„de«Z1y)z¡Network Authentication Helpers
 
Contains interface (MultiDomainBasicAuth) and associated glue code for
providing credentials in the context of network requests.
é)Ú annotationsN)ÚABCÚabstractmethod)Úcache)Ú commonprefix)ÚPath)ÚAnyÚ
NamedTuple)ÚAuthBaseÚ HTTPBasicAuth)ÚRequestÚResponse)Úget_netrc_auth)Ú    getLogger)ÚaskÚ    ask_inputÚ ask_passwordÚremove_auth_from_urlÚsplit_auth_netloc_from_url)ÚAuthInfoFcó,—eZdZUded<ded<ded<y)Ú CredentialsÚstrÚurlÚusernameÚpasswordN)Ú__name__Ú
__module__Ú __qualname__Ú__annotations__©óúMH:\Change_password\venv_build\Lib\site-packages\pip/_internal/network/auth.pyrr)s…Ø     ƒH؃MØ„Mr"rcó@—eZdZUdZded<edd„«Zedd„«Zy)    ÚKeyRingBaseProviderzKeyring base provider interfaceÚboolÚ has_keyringcó—y©Nr!©Úselfrrs   r#Ú get_auth_infoz!KeyRingBaseProvider.get_auth_info4s€ØPSr"có—yr)r!©r+rrrs    r#Úsave_auth_infoz"KeyRingBaseProvider.save_auth_info7s€ØNQr"N©rrrú
str | NoneÚreturnúAuthInfo | None©rrrrrrr2ÚNone)rrrÚ__doc__r rr,r/r!r"r#r%r%/s'…Ù)àÓàÚSóØSàÚQóÙQr"r%có$—eZdZdZdZdd„Zdd„Zy)ÚKeyRingNullProviderzKeyring null providerFcó—yr)r!r*s   r#r,z!KeyRingNullProvider.get_auth_info@ó€Ør"có—yr)r!r.s    r#r/z"KeyRingNullProvider.save_auth_infoCr:r"Nr0r4)rrrr6r'r,r/r!r"r#r8r8;s„Ùà€Kóôr"r8có,—eZdZdZdZdd„Zdd„Zd    d„Zy)
ÚKeyRingPythonProviderz7Keyring interface which uses locally imported `keyring`Tcó—ddl}||_y)Nr©Úkeyring)r+r@s  r#Ú__init__zKeyRingPythonProvider.__init__Ls €Ûàˆ r"có>—t|jd«rMtjd|«|jj    ||«}||j
|j fSy|8tjd|«|jj||«}|r||fSy)NÚget_credentialz'Getting credentials from keyring for %sz$Getting password from keyring for %s)Úhasattrr@ÚloggerÚdebugrCrrÚ get_password)r+rrÚcredrs     r#r,z#KeyRingPythonProvider.get_auth_infoQs€ô 4—<‘<Ð!1Ô 2Ü L‰LÐBÀCÔ HØ—<‘<×.Ñ.¨s°HÓ=ˆDØÐØ—}‘} d§m¡mÐ3Ð3Øà Ð Ü L‰LÐ?ÀÔ EØ—|‘|×0Ñ0°°hÓ?ˆHÙØ Ð)Ð)Ør"có>—|jj|||«yr))r@Ú set_passwordr.s    r#r/z$KeyRingPythonProvider.save_auth_infocs€Ø  ‰ ×!Ñ! # x°Õ:r"N)r2r5r0r4)rrrr6r'rAr,r/r!r"r#r=r=Gs„ÙAà€Kóó
ô$;r"r=có<—eZdZdZdZd    d„Zd
d„Zd d„Zd d„Zd d„Z    y)ÚKeyRingCliProviderzöProvider which uses `keyring` cli
 
    Instead of calling the keyring package installed alongside pip
    we call keyring on the command line which will enable pip to
    use which ever installation of keyring is available first in
    PATH.
    Tcó—||_yr)r?)r+Úcmds  r#rAzKeyRingCliProvider.__init__rs    €Øˆ r"có8—||j||«}|||fSyr))Ú _get_passwordr.s    r#r,z KeyRingCliProvider.get_auth_infous0€ð Ð Ø×)Ñ)¨#¨xÓ8ˆHØÐ#Ø Ð)Ð)Ør"có(—|j|||«Sr))Ú _set_passwordr.s    r#r/z!KeyRingCliProvider.save_auth_info~s€Ø×!Ñ! # x°Ó:Ð:r"cóv—|j€y|jd||g}tjj«}d|d<t    j
|tj tj|¬«}|jry|jjd«jtj«S)z;Mirror the implementation of keyring.get_password using cliNÚgetúutf-8ÚPYTHONIOENCODING)ÚstdinÚstdoutÚenv) r@ÚosÚenvironÚcopyÚ
subprocessÚrunÚDEVNULLÚPIPEÚ
returncoderXÚdecodeÚstripÚlinesep)r+Ú service_namerrNrYÚress      r#rPz KeyRingCliProvider._get_passwords€à <‰<Ð Øà|‰|˜U L°(Ð;ˆÜj‰jo‰oÓˆØ")ˆÐ Ñ܏n‰nØ Ü×$Ñ$Ü—?‘?Øô    
ˆð >Š>ØØz‰z× Ñ  Ó)×/Ñ/´·
±
Ó;Ð;r"cóò—|j€ytjj«}d|d<t    j
|jd||g|›tj ›j«|d¬«y)z;Mirror the implementation of keyring.set_password using cliNrUrVÚsetT)ÚinputrYÚcheck)r@rZr[r\r]r^rdÚencode)r+rerrrYs     r#rRz KeyRingCliProvider._set_password“sj€à <‰<Ð ØÜj‰jo‰oÓˆØ")ˆÐ Ñ܏‰Ø \‰\˜5 ,°Ð 9ؐJœrŸz™z˜lÐ+×2Ñ2Ó4ØØõ        
ð r"N)rNrr2r5r0r4)rerrrr2r1)rerrrrrr2r5)
rrrr6r'rAr,r/rPrRr!r"r#rLrLgs'„ñð€Kóóó;ó<ô$ r"rLcó—tjd|«trd}|dvr"    t«}tjd«|S|d    vr"tjd
«}|rè|jtjd ««rÄtj dd „«}t#tjd ««}g}|«j%t&j(«D]0}t#|«}        |    j+|«s|j-|«Œ2t&j(j1|«}tjd
|¬ «}|r!tjd|«t3|«Stjd«t5«S#t$rYŒRt
$rP}d}|dk(r|dz}tj ||tjtj«¬«Yd}~Œ¥d}~wwxYw#t.$rYŒwxYw)NzKeyring provider requested: %sÚdisabled)ÚimportÚautozKeyring provider set: importz1Installed copy of keyring fails with exception %sroz3, trying to find a keyring executable as a fallback©Úexc_info)r]ror@ÚscriptscóƗtjjdd«}|€    tjd«}|S|S#tt
f$rtj }Y|SwxYw)NÚPATHÚCS_PATH)rZr[rTÚconfstrÚAttributeErrorÚ
ValueErrorÚdefpath©Úpaths r#Ú"PATH_as_shutil_which_determines_itz@get_keyring_provider.<locals>.PATH_as_shutil_which_determines_it»s_€ä—z‘z—~‘~ f¨dÓ3Ø<ð*Ü!Ÿz™z¨)Ó4˜ð t øô +¬JÐ7ò*ä!Ÿz™z™ð ð *ús¤=½A ÁA rzz3Keyring provider set: subprocess with executable %szKeyring provider set: disabled)r2r)rEÚverboseÚKEYRING_DISABLEDr=Ú ImportErrorÚ    ExceptionÚwarningÚ isEnabledForÚloggingÚDEBUGÚshutilÚwhichÚ
startswithÚ    sysconfigÚget_pathÚtypingÚ no_type_checkrÚsplitrZÚpathsepÚsamefileÚappendÚFileNotFoundErrorÚjoinrLr8)
ÚproviderÚimplÚexcÚmsgÚclir|rrÚpathsr{Úps
          r#Úget_keyring_providerr™¢s½€ä
‡NNÐ3°XÔ>õ؈ØÐ%Ñ%ð     RÜ(Ó*ˆDÜ N‰NÐ9Ô :؈KðÐ)Ò)܏l‰l˜9Ó%ˆÙ 3—>‘>¤)×"4Ñ"4°YÓ"?Ô@ä × !Ñ !ò ó"ð ôœ9×-Ñ-¨iÓ8Ó9ˆGàˆEÙ:Ó<×BÑBÄ2Ç:Á:ÓNò Ü˜“JðØŸ:™: gÔ.ØŸ ™  TÔ*øð     ô—:‘:—?‘? 5Ó)ˆDä—,‘,˜y¨tÔ4ˆCá Ü N‰NÐPÐRUÔ VÜ% cÓ*Ð *ä
‡NNÐ3Ô4Ü Ó  Ð øô_ò    Ú Üò    RðFˆCؘ6Ò!ØÐQÑQÜ N‰N˜3 ¬f×.AÑ.AÄ'Ç-Á-Ó.PˆN× QÒ Qûð     RûôB)òÚðús0¤ F Ã/"G2Æ     G/ÆG/ÆAG*Ç*G/Ç2    G?Ç>G?cóî—eZdZ            d                            dd„Zedd„«Zej dd„«Zedd„«Z                        dd„Zdd„Z    dd    d
œ                            dd „Z
                dd „Z dd „Z dd„Z dd„Zdd„Zdd„Zdd„Zy) ÚMultiDomainBasicAuthTNcóJ—||_||_||_i|_d|_yr))Ú    promptingÚ
index_urlsÚkeyring_providerÚ    passwordsÚ_credentials_to_save)r+rržrŸs    r#rAzMultiDomainBasicAuth.__init__ás+€ð #ˆŒØ$ˆŒØ 0ˆÔØ.0ˆŒð 9=ˆÕ!r"có,—t|j«Sr))r™Ú_keyring_provider©r+s r#rŸz%MultiDomainBasicAuth.keyring_provideròs€ä# D×$:Ñ$:Ó;Ð;r"có—||_yr))r£)r+r’s  r#rŸz%MultiDomainBasicAuth.keyring_providerös €ð "*ˆÕr"có:—|jxs|jdvS)N)rorm)rr£r¤s r#Ú use_keyringz MultiDomainBasicAuth.use_keyringþs€ð
~‰~ÒS ×!7Ñ!7Ð?SÐ!SÐSr"có—|sy    |jj||«S#t$rV}tj    dd¬«tj dt |««datj«Yd}~yd}~wwxYw)z3Return the tuple auth for a given url from keyring.Nz&Keyring is skipped due to an exceptionTrpz*Keyring is skipped due to an exception: %s)
rŸr,r€rErFrrr~r™Ú cache_clear)r+rrr”s    r#Ú_get_keyring_authz&MultiDomainBasicAuth._get_keyring_authsx€ñØð    Ø×(Ñ(×6Ñ6°s¸HÓEÐ EøÜò     ô L‰LÐAÈDˆLÔ Qä N‰NØ<ܐC“ô ð
 $Ð Ü  × ,Ñ ,Ô .Üûð     ús…!¡    BªA A;Á;BcóT‡—|r |jsyt|«jd«dz}tjj |«Šg}|jD]‘}|jd«dz}tjj t|««}‰|k(r|cS‰j |j k7rŒbtjj |«}|j|«Œ“|sy|jdˆfd„¬«tjj|d«S)aíReturn 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.
        Nú/Tcód•—t‰j|jg«jd«S)Nr¬)rr{Úrfind)Ú    candidateÚ
parsed_urls €r#ú<lambda>z5MultiDomainBasicAuth._get_index_url.<locals>.<lambda>Es-ø€¤,à—O‘OØ—N‘Nðó#÷
‰eC‹jð r")ÚreverseÚkeyr)
ržrÚrstripÚurllibÚparseÚurlsplitÚnetlocrÚsortÚ
urlunsplit)r+rÚ
candidatesÚindexÚ parsed_indexr¯r°s      @r#Ú_get_index_urlz#MultiDomainBasicAuth._get_index_urlsø€ñ˜$Ÿ/š/Øä" 3Ó'×.Ñ.¨sÓ3°cÑ9ˆÜ—\‘\×*Ñ*¨3Ó/ˆ
àˆ
à—_‘_ò
    )ˆEØ—L‘L Ó%¨Ñ+ˆEÜ!Ÿ<™<×0Ñ0Ô1EÀeÓ1LÓMˆLؘ\Ò)Ø’ à× Ñ  L×$7Ñ$7Ò7ØäŸ ™ ×-Ñ-¨eÓ4ˆIØ × Ñ ˜iÕ (ð
    )ñØà‰Øóð    ô    
ô|‰|×&Ñ& z°!¡}Ó5Ð5r"F©Ú allow_netrcÚ allow_keyringcó—t|«\}}}|\}}||tjd|«|S|j|«}    |    r)t|    «}
|
r|
\}    } } tjd|    «|    r& d!| \}}||tjd|«| S|r%t    |«} | rtjd|«| S|r@|j |    |«xs|j ||«}|rtjd|«|S||fS)z2Find and return credentials for the specified URL.zFound credentials in url for %szFound index url %srz%Found credentials in index url for %sz!Found credentials in netrc for %sz#Found credentials in keyring for %s)rrErFr¾rrª)r+Ú original_urlrÀrÁrr¸Úurl_user_passwordrrÚ    index_urlÚ
index_infoÚ_Úindex_url_user_passwordÚ
netrc_authÚkr_auths               r#Ú_get_new_credentialsz)MultiDomainBasicAuth._get_new_credentialsOs:€ô*DØ ó*
Ñ&ˆˆVÐ&ð
/ш(Ø Ð  HÐ$8Ü L‰LÐ:¸FÔ CØ$Ð $ð×'Ñ'¨Ó,ˆ    Ù ä3°IÓ>ˆJÙØ8BÑ5    ˜1Ð5Ü— ‘ Ð1°9Ô=ñ Ð0°Ñ3Ð?Ø!8Ñ ˆHhØÐ#¨Ð(<Ü— ‘ ÐDÀfÔMØ.Ð.ñ Ü'¨ Ó5ˆJÙÜ— ‘ Ð@À&ÔIØ!Ð!ñ ð×&Ñ& y°(Ó;ò9Ø×&Ñ& v¨xÓ8ð ñ
Ü— ‘ ÐBÀFÔKؐà˜Ð!Ð!r"có—t|«\}}}|j|«\}}||€+||jvr|j|\}}|||k(r||}}|€||xsd}|xsd}||f|j|<||€|€|
Jd|›«‚|||fS)a_Return the credentials to use for the provided URL.
 
        If allowed, netrc and keyring may be used to obtain the
        correct credentials.
 
        Returns (url_without_credentials, username, password). Note
        that even if the original URL contains credentials, this
        function may return a different username and password.
        Úz%Could not load credentials from url: )rrËr )    r+rÃrr¸rÇrrÚunÚpws             r#Ú_get_url_and_credentialsz-MultiDomainBasicAuth._get_url_and_credentialsˆsä€ô4°LÓA‰ˆˆVQð"×6Ñ6°|ÓDш(ð Ð  Р0°fÀÇÁÑ6NØ—^‘^ FÑ+‰FˆBðР8¨r¢>Ø%'¨˜(à Ð  8Ð#7ð
 ’~ 2ˆHØ’~ 2ˆHð'/°Ð%9ˆDN‰N˜6Ñ "ðÐ ! hÐ&:àР XÐ%5ð        Bð
3°<°.Ð Aó     Bð 7ð
H˜hÐ&Ð&r"có¶—|j|j«\}}}||_||t||«|«}|jd|j«|S)NÚresponse)rÐrr Ú register_hookÚ
handle_401)r+Úreqrrrs     r#Ú__call__zMultiDomainBasicAuth.__call__¸s_€à"&×"?Ñ"?ÀÇÁÓ"HшˆXxðˆŒà Ð  HÐ$8à3”- ¨(Ó3°CÓ8ˆCð     ×ј* d§o¡oÔ6àˆ
r"có̗|jrtd|›d«nd}|sy|jr)|j||«}|r|d|d |d|ddfSt    d«}||dfS)    Nz    User for z: )NNFréFz
Password: T)rrr§rªr)r+r¸rÚauthrs     r#Ú_prompt_for_passwordz)MultiDomainBasicAuth._prompt_for_passwordÉs€Ø8<¿º”9˜y¨¨°Ð3Ô4ÈDˆÙØ$Ø × Ò Ø×)Ñ)¨&°(Ó;ˆDÙ˜˜Q™Ð+°°Q±Ð0CؘA‘w  Q¡¨Ð.Ð.Ü  Ó-ˆØ˜ 4Ð'Ð'r"có‚—|jr"|jr|jjsyt    dddg«dk(S)NFz#Save credentials to keyring [y/N]: ÚyÚn)rr§rŸr'rr¤s r#Ú _should_save_password_to_keyringz5MultiDomainBasicAuth._should_save_password_to_keyringÕs;€à—’Ø×#Ò#Ø×(Ñ(×4Ò4àÜÐ8¸3À¸*ÓEÈÑLÐLr"c ó‚—|jdk7r|Sd\}}|jr!|j|jdd¬«\}}|js|s|s|St
j j|j«}d}|s!|s|j|j«\}}}d|_
|L|J||f|j|j<|r-|j«rt|j||¬«|_
|j}|jj!«t#|xsd|xsd«|j$«}|j'd|j(«|jr|j'd|j*«|j,j.|fi|¤Ž}    |    j0j3|«|    S)    Né‘)NNFTr¿)rrrrÍrÒ)Ú status_coder§rËrrrµr¶ÚurlparserÚr¸r¡r rÞrÚcontentÚrawÚ release_connr ÚrequestrÓÚ warn_on_401Úsave_credentialsÚ
connectionÚsendÚhistoryr)
r+ÚrespÚkwargsrrÚparsedÚsaverÇrÕÚnew_resps
          r#rÔzMultiDomainBasicAuth.handle_401Þs£€ð × Ñ ˜sÒ "؈Kà'ш(ð × Ò Ø!%×!:Ñ!:Ø—‘Ø!Ø"ð";ó"Ñ ˆHhð~Š~¡h±x؈Kä—‘×&Ñ& t§x¡xÓ0ˆðˆÙ¡Ø'+×'@Ñ'@ÀÇÁÓ'OÑ $ˆHh ð%)ˆÔ!Ø Ð  HÐ$8Ø-5°xÐ,@ˆDN‰N˜6Ÿ=™=Ñ )ñ˜×=Ñ=Ô?Ü,7ØŸ ™ Ø%Ø%ô-Ô)ð L‰LˆØ ‰×ÑÔð<Œm˜HšN¨¨HªN¸Ó;¸D¿L¹LÓIˆØ ×ј* d×&6Ñ&6Ô7ð
× $Ò $Ø × Ñ ˜j¨$×*?Ñ*?Ô @ð(4—?‘?×'Ñ'¨Ñ6¨vÑ6ˆØ×Ñ×Ñ Ô%àˆr"c óx—|jdk(r+tjd|jj«yy)z6Response callback to warn about incorrect credentials.ràz)401 Error, Credentials not correct for %sN)rárErrær)r+rìrís   r#rçz MultiDomainBasicAuth.warn_on_401s1€à × Ñ ˜sÒ "Ü N‰NØ;Ø— ‘ × Ñ õ ð #r"c ót—|jjsJd«‚|j}d|_|rb|jdkrR    tj d«|jj |j|j|j«yyy#t$rtjd«YywxYw)z1Response callback to save credentials on success.z'should never reach here without keyringNizSaving credentials to keyringzFailed to save credentials) rŸr'r¡rárEÚinfor/rrrr€Ú    exception)r+rìríÚcredss    r#rèz%MultiDomainBasicAuth.save_credentials%s¨€ð × !Ñ !× -Ò -ð    5à 4ó    5Ø -ð×)Ñ)ˆØ$(ˆÔ!Ù T×%Ñ%¨Ò+ð ?Ü— ‘ Ð;Ô<Ø×%Ñ%×4Ñ4Ø—I‘I˜uŸ~™~¨u¯~©~õð,ˆ5øô ò ?Ü× Ñ Ð!=Ö>ð ?úsÁABÂB7Â6B7)TNro)rr&ržzlist[str] | NonerŸrr2r5)r2r%)r’rr2r5)r2r&)rr1rr1r2r3)rrr2r1)rÃrrÀr&rÁr&r2r)rÃrr2z"tuple[str, str | None, str | None])rÕr r2r )r¸rr2z#tuple[str | None, str | None, bool])rìrrír    r2r)rìrrír    r2r5)rrrrAÚpropertyrŸÚsetterr§rªr¾rËrÐrÖrÚrÞrÔrçrèr!r"r#r›r›às „ðØ'+Ø &ð    =àð=ð%ð=ðð    =ð
 
ó =ð"ò<óð<ð×Ñò*óð*ðòTóðTð à ðððð
ó    ó4.6ðh!Ø#ñ 7"àð7"ðð    7"ð
ð 7"ð
ó 7"ðr.'Øð.'à    +ó.'ó`ó"    (óMó=ó~ô?r"r›)r’rr2r%)2r6Ú
__future__rrƒrZr…r]rˆrŠÚ urllib.parserµÚabcrrÚ    functoolsrÚos.pathrÚpathlibrr    r
Úpip._vendor.requests.authr r Úpip._vendor.requests.modelsr rÚpip._vendor.requests.utilsrÚpip._internal.utils.loggingrÚpip._internal.utils.miscrrrrrÚ pip._internal.vcs.versioncontrolrrrEr~rr%r8r=rLr™r›r!r"r#ú<module>rsÄðñõ #ãÛ    Û ÛÛÛ Ûß#ÝÝ Ýß"ç=ß9Ý5å1÷õõ6á    8Ó    €àÐô*ôô     R˜#ô    Rô    Ð-ô    ô;Ð/ô;ô@8Ð,ô8ðvò:!óð:!ôzT?˜8õT?r"