§
    
Á³g{@  ã                   óÀ  — d Z ddlZddlZddlZddlZddlmZmZ ddl	m
Z
mZmZmZmZmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZ dd	lmZmZmZmZmZ dd
l m!Z!  ee"¦  «        Z#da$ G d„ de¦  «        Z% G d„ de¦  «        Z& G d„ de&¦  «        Z' G d„ de&¦  «        Z( G d„ de&¦  «        Z)de&fd„Z*dee+         dee+         dee!         fd„Z, G d„ de¦  «        Z-dS )z¡Network Authentication Helpers

Contains interface (MultiDomainBasicAuth) and associated glue code for
providing credentials in the context of network requests.
é    N)ÚABCÚabstractmethod)ÚAnyÚDictÚListÚ
NamedTupleÚOptionalÚTuple)ÚAuthBaseÚHTTPBasicAuth)ÚRequestÚResponse)Úget_netrc_auth)Ú	getLogger)ÚaskÚ	ask_inputÚask_passwordÚremove_auth_from_urlÚsplit_auth_netloc_from_url)ÚAuthInfoFc                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ÚCredentialsÚurlÚusernameÚpasswordN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© ó    úX/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_internal/network/auth.pyr   r   !   s+   € € € € € € Ø	€H€H�HØ€M€M�MØ€M€M�M€M€Mr"   r   c            	       óv   — e Zd ZdZededee         dee         fd„¦   «         Zededededdfd„¦   «         Z	dS )	ÚKeyRingBaseProviderzKeyring base provider interfacer   r   Úreturnc                 ó   — d S ©Nr!   ©Úselfr   r   s      r#   Úget_auth_infoz!KeyRingBaseProvider.get_auth_info*   ó   € àˆr"   r   Nc                 ó   — d S r(   r!   ©r*   r   r   r   s       r#   Úsave_auth_infoz"KeyRingBaseProvider.save_auth_info.   r,   r"   )
r   r   r   Ú__doc__r   r   r	   r   r+   r/   r!   r"   r#   r%   r%   '   s’   € € € € € Ø)Ð)àð ð °¸´ð À(È8ÔBTð ð ð ñ „^ðð ð #ð °ð Àð Èð ð ð ñ „^ðð ð r"   r%   c                   óV   — e Zd ZdZdedee         dee         fd„Zdedededdfd„ZdS )	ÚKeyRingNullProviderzKeyring null providerr   r   r&   c                 ó   — d S r(   r!   r)   s      r#   r+   z!KeyRingNullProvider.get_auth_info6   ó   € Øˆtr"   r   Nc                 ó   — d S r(   r!   r.   s       r#   r/   z"KeyRingNullProvider.save_auth_info9   r4   r"   )	r   r   r   r0   r   r	   r   r+   r/   r!   r"   r#   r2   r2   3   s|   € € € € € ØÐð ð °¸´ð À(È8ÔBTð ð ð ð ð #ð °ð Àð Èð ð ð ð ð ð r"   r2   c                   ó^   — e Zd ZdZd
d„Zdedee         dee         fd„Zdedededdfd	„Z	dS )ÚKeyRingPythonProviderz7Keyring interface which uses locally imported `keyring`r&   Nc                 ó   — dd l }|| _         d S )Nr   ©Úkeyring)r*   r:   s     r#   Ú__init__zKeyRingPythonProvider.__init__@   s   € ØˆˆˆàˆŒˆˆr"   r   r   c                 ó<  — t          | j        d¦  «        rHt                               d|¦  «         | j                             ||¦  «        }|�|j        |j        fS d S |�<t                               d|¦  «         | j                             ||¦  «        }|r||fS d S )NÚget_credentialz'Getting credentials from keyring for %sz$Getting password from keyring for %s)Úhasattrr:   ÚloggerÚdebugr=   r   r   Úget_password)r*   r   r   Úcredr   s        r#   r+   z#KeyRingPythonProvider.get_auth_infoE   s©   € õ �4”<Ð!1Ñ2Ô2ð 	Ý�LŠLÐBÀCÑHÔHÐHØ”<×.Ò.¨s°HÑ=Ô=ˆDØÐØ”} d¤mÐ3Ð3Ø�4àÐÝ�LŠLÐ?ÀÑEÔEÐEØ”|×0Ò0°°hÑ?Ô?ˆHØð *Ø Ð)Ð)Øˆtr"   r   c                 ó>   — | j                              |||¦  «         d S r(   )r:   Úset_passwordr.   s       r#   r/   z$KeyRingPythonProvider.save_auth_infoW   s"   € ØŒ×!Ò! # x°Ñ:Ô:Ð:Ð:Ð:r"   )r&   N)
r   r   r   r0   r;   r   r	   r   r+   r/   r!   r"   r#   r7   r7   =   s�   € € € € € ØAÐAðð ð ð ð
 ð °¸´ð À(È8ÔBTð ð ð ð ð$; #ð ;°ð ;Àð ;Èð ;ð ;ð ;ð ;ð ;ð ;r"   r7   c                   óž   — e Zd ZdZdeddfd„Zdedee         dee         fd„Zdeded	eddfd
„Z	dededee         fd„Z
deded	eddfd„ZdS )Ú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.
    Úcmdr&   Nc                 ó   — || _         d S r(   r9   )r*   rG   s     r#   r;   zKeyRingCliProvider.__init__d   s   € ØˆŒˆˆr"   r   r   c                 óB   — |�|                       ||¦  «        }|�||fS d S r(   )Ú_get_passwordr.   s       r#   r+   z KeyRingCliProvider.get_auth_infog   s5   € ð ÐØ×)Ò)¨#¨xÑ8Ô8ˆHØÐ#Ø Ð)Ð)Øˆtr"   r   c                 ó0   — |                       |||¦  «        S r(   )Ú_set_passwordr.   s       r#   r/   z!KeyRingCliProvider.save_auth_infop   s   € Ø×!Ò! # x°Ñ:Ô:Ð:r"   Úservice_namec                 ó4  — | j         €dS | j         d||g}t          j                             ¦   «         }d|d<   t	          j        |t          j        d|¬¦  «        }|j        rdS |j         	                    d¦  «         
                    t          j        ¦  «        S )z;Mirror the implementation of keyring.get_password using cliNÚgetúutf-8ÚPYTHONIOENCODINGT)ÚstdinÚcapture_outputÚenv)r:   ÚosÚenvironÚcopyÚ
subprocessÚrunÚDEVNULLÚ
returncodeÚstdoutÚdecodeÚstripÚlinesep)r*   rM   r   rG   rT   Úress         r#   rJ   z KeyRingCliProvider._get_passwords   s—   € àŒ<ÐØ�4àŒ|˜U L°(Ð;ˆÝŒj�oŠoÑÔˆØ")ˆÐÑÝŒnØÝÔ$ØØð	
ñ 
ô 
ˆð Œ>ð 	Ø�4ØŒz× Ò  Ñ)Ô)×/Ò/µ´
Ñ;Ô;Ð;r"   c                 ó  — | j         €dS | j         d||g}|t          j        z                        d¦  «        }t          j                             ¦   «         }d|d<   t          j        |||¬¦  «        }|                     ¦   «          dS )z;Mirror the implementation of keyring.set_password using cliNÚsetrP   rQ   )ÚinputrT   )	r:   rU   r_   ÚencoderV   rW   rX   rY   Úcheck_returncode)r*   rM   r   r   rG   Úinput_rT   r`   s           r#   rL   z KeyRingCliProvider._set_password…   s‚   € àŒ<ÐØ�4àŒ|˜U L°(Ð;ˆØ�RœZÑ'×/Ò/°Ñ8Ô8ˆÝŒj�oŠoÑÔˆØ")ˆÐÑÝŒn˜S¨°CÐ8Ñ8Ô8ˆØ×ÒÑÔÐØˆtr"   )r   r   r   r0   r   r;   r	   r   r+   r/   rJ   rL   r!   r"   r#   rF   rF   [   s   € € € € € ðð ð˜Cð  Dð ð ð ð ð ð °¸´ð À(È8ÔBTð ð ð ð ð; #ð ;°ð ;Àð ;Èð ;ð ;ð ;ð ;ð<¨#ð <¸ð <ÀÈ#Äð <ð <ð <ð <ð$¨#ð ¸ð Èð ÐPTð ð ð ð ð ð r"   rF   r&   c                  ó(  — t           s~	 t          ¦   «         S # t          $ r Y n>t          $ r2} t                               dt          | ¦  «        ¦  «         Y d } ~ nd } ~ ww xY wt          j        d¦  «        }|rt          |¦  «        S t          ¦   «         S )NzdInstalled copy of keyring fails with exception %s, trying to find a keyring executable as a fallbackr:   )ÚKEYRING_DISABLEDr7   ÚImportErrorÚ	Exceptionr?   Úwarningr   ÚshutilÚwhichrF   r2   )ÚexcÚclis     r#   Úget_keyring_providerrp   “   sÄ   € åð +ð	Ý(Ñ*Ô*Ð*øÝð 	ð 	ð 	ØˆDÝð 	ð 	ð 	õ �NŠNðDå�C‘”ñô ð ð ð ð ð ð øøøøð	øøøõ Œl˜9Ñ%Ô%ˆØð 	+Ý% cÑ*Ô*Ð*åÑ Ô Ð s   ‰ —
A£	A¬(AÁAr   r   c                 óØ   — | sdS t          ¦   «         }	 |                     | |¦  «        S # t          $ r5}t                               dt          |¦  «        ¦  «         daY d}~dS d}~ww xY w)z3Return the tuple auth for a given url from keyring.Nz*Keyring is skipped due to an exception: %sT)rp   r+   rj   r?   rk   r   rh   )r   r   r:   rn   s       r#   Úget_keyring_authrr   ¬   s�   € ð ð Øˆtå"Ñ$Ô$€Gð	Ø×$Ò$ S¨(Ñ3Ô3Ð3øÝð ð ð Ý�ŠØ8Ý�‰HŒHñ	
ô 	
ð 	
ð
  ÐØˆtˆtˆtˆtˆtøøøøðøøøs   ”* ª
A)´*A$Á$A)c            	       óD  — e Zd Z	 ddedeee                  ddfd„Zdedee         fd„Z	 	 dd
ededede	fd„Z
d
edeeee         ee         f         fd„Zdedefd„Zdedeee         ee         ef         fd„Zdefd„Zdededefd„Zdededdfd„Zdededdfd„ZdS )ÚMultiDomainBasicAuthTNÚ	promptingÚ
index_urlsr&   c                 ó>   — || _         || _        i | _        d | _        d S r(   )ru   rv   Ú	passwordsÚ_credentials_to_save)r*   ru   rv   s      r#   r;   zMultiDomainBasicAuth.__init__À   s*   € ð #ˆŒØ$ˆŒØ.0ˆŒð <@ˆÔ!Ð!Ð!r"   r   c                 ó¬   — |r| j         sdS | j         D ]@}t          |¦  «                             d¦  «        dz   }|                     |¦  «        r|c S ŒAd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ú/)rv   r   ÚrstripÚ
startswith)r*   r   ÚuÚprefixs       r#   Ú_get_index_urlz#MultiDomainBasicAuth._get_index_urlÍ   sr   € ð ð 	˜$œ/ð 	Ø�4à”ð 	ð 	ˆAÝ)¨!Ñ,Ô,×3Ò3°CÑ8Ô8¸3Ñ>ˆFØ�~Š~˜fÑ%Ô%ð Ø���ðàˆtr"   FÚoriginal_urlÚallow_netrcÚallow_keyringc                 óP  — t          |¦  «        \  }}}|\  }}|�|�t                               d|¦  «         |S |                      |¦  «        }	|	r2t          |	¦  «        }
|
r!|
\  }	}}t                               d|	¦  «         |	r.|d         �&|\  }}|�|�t                               d|¦  «         |S |r.t	          |¦  «        }|rt                               d|¦  «         |S |r?t          |	|¦  «        pt          ||¦  «        }|rt                               d|¦  «         |S ||fS )z2Find and return credentials for the specified URL.NzFound credentials in url for %szFound index url %sr   z%Found credentials in index url for %sz!Found credentials in netrc for %sz#Found credentials in keyring for %s)r   r?   r@   r€   r   rr   )r*   r�   r‚   rƒ   r   ÚnetlocÚurl_user_passwordr   r   Ú	index_urlÚ
index_infoÚ_Úindex_url_user_passwordÚ
netrc_authÚkr_auths                  r#   Ú_get_new_credentialsz)MultiDomainBasicAuth._get_new_credentialsã   sƒ  € õ *DØñ*
ô *
Ñ&ˆˆVÐ&ð
 /Ñˆ�(ØÐ HÐ$8Ý�LŠLÐ:¸FÑCÔCÐCØ$Ð$ð ×'Ò'¨Ñ,Ô,ˆ	Øð 	>å3°IÑ>Ô>ˆJØð >Ø8BÑ5�	˜1Ð5Ý—’Ð1°9Ñ=Ô=Ð=ð ð 	/Ð0°Ô3Ð?Ø!8ÑˆH�hØÐ#¨Ð(<Ý—’ÐDÀfÑMÔMÐMØ.Ð.ð ð 	"Ý'¨Ñ5Ô5ˆJØð "Ý—’Ð@À&ÑIÔIÐIØ!Ð!ð ð 
	õ ! ¨HÑ5Ô5ð 3Ý  ¨Ñ2Ô2ð ð
 ð Ý—’ÐBÀFÑKÔKÐKØ�à˜Ð!Ð!r"   c                 ó  — t          |¦  «        \  }}}|                      |¦  «        \  }}|�|€%|| j        v r| j        |         \  }}|�||k    r||}}|€|�|pd}|pd}||f| j        |<   |�|€|€|�J d|› �¦   «         ‚|||fS )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.
        NÚ z%Could not load credentials from url: )r   r�   rx   )	r*   r�   r   r…   r‰   r   r   ÚunÚpws	            r#   Ú_get_url_and_credentialsz-MultiDomainBasicAuth._get_url_and_credentials  så   € õ 4°LÑAÔA‰ˆˆV�Qð "×6Ò6°|ÑDÔDÑˆ�(ð Ð Ð 0°fÀÄÐ6NÐ6NØ”^ FÔ+‰FˆB�ð Ð 8¨r¢> >Ø%'¨˜(�àÐ 8Ð#7ð
  �~ 2ˆHØ�~ 2ˆHð '/°Ð%9ˆDŒN˜6Ñ"ð Ð! hÐ&:àÐ  XÐ%5Ð%5ØA°<ÐAÐAñ &6Ô%5Ð%5ð �H˜hÐ&Ð&r"   Úreqc                 óÀ   — |                       |j        ¦  «        \  }}}||_        |�|� t          ||¦  «        |¦  «        }|                     d| j        ¦  «         |S )NÚresponse)r’   r   r   Úregister_hookÚ
handle_401)r*   r“   r   r   r   s        r#   Ú__call__zMultiDomainBasicAuth.__call__K  sj   € à"&×"?Ò"?ÀÄÑ"HÔ"HÑˆˆX�xð ˆŒàÐ HÐ$8à3•- ¨(Ñ3Ô3°CÑ8Ô8ˆCð 	×Ò˜* d¤oÑ6Ô6Ð6àˆ
r"   r…   c                 ó¾   — t          d|› d�¦  «        }|sdS t          ||¦  «        }|r!|d         �|d         �|d         |d         dfS t          d¦  «        }||dfS )	Nz	User for z: )NNFr   é   Fz
Password: T)r   rr   r   )r*   r…   r   Úauthr   s        r#   Ú_prompt_for_passwordz)MultiDomainBasicAuth._prompt_for_password\  sƒ   € õ Ð3¨Ð3Ð3Ð3Ñ4Ô4ˆØð 	%Ø$Ð$Ý ¨Ñ1Ô1ˆØð 	+�D˜”GÐ'¨D°¬GÐ,?Ø˜”7˜D œG UÐ*Ð*Ý Ñ-Ô-ˆØ˜ 4Ð'Ð'r"   c                 óN   — t          ¦   «         €dS t          dddg¦  «        dk    S )NFz#Save credentials to keyring [y/N]: ÚyÚn)rp   r   )r*   s    r#   Ú _should_save_password_to_keyringz5MultiDomainBasicAuth._should_save_password_to_keyringi  s-   € ÝÑ!Ô!Ð)Ø�5ÝÐ8¸3À¸*ÑEÔEÈÒLÐLr"   ÚrespÚkwargsc                 óö  — |j         dk    r|S | j        s|S t          j                             |j        ¦  «        }|                      |j        dd¬¦  «        \  }}d}|s |s|                      |j        ¦  «        \  }}}d | _	        |�E|�C||f| j
        |j        <   |r0|                      ¦   «         rt          |j        ||¬¦  «        | _	        |j         |j                             ¦   «           t!          |pd|pd¦  «        |j        ¦  «        }|                     d| j        ¦  «         | j	        r|                     d| j        ¦  «          |j        j        |fi |¤Ž}|j                             |¦  «         |S )Né‘  FT)r‚   rƒ   )r   r   r   r�   r•   )Ústatus_coderu   ÚurllibÚparseÚurlparser   r�   rœ   r…   ry   rx   r    r   ÚcontentÚrawÚrelease_connr   Úrequestr–   Úwarn_on_401Úsave_credentialsÚ
connectionÚsendÚhistoryÚappend)	r*   r¡   r¢   Úparsedr   r   Úsaver“   Únew_resps	            r#   r—   zMultiDomainBasicAuth.handle_401n  sÂ  € ð Ô˜sÒ"Ð"ØˆKð Œ~ð 	ØˆKå”×&Ò& t¤xÑ0Ô0ˆð "×6Ò6ØŒHØØð 7ñ 
ô 
Ñˆ�(ð ˆØð 	P ð 	PØ'+×'@Ò'@ÀÄÑ'OÔ'OÑ$ˆH�h ð %)ˆÔ!ØÐ HÐ$8Ø-5°xÐ,@ˆDŒN˜6œ=Ñ)ð ð ˜×=Ò=Ñ?Ô?ð Ý,7ØœØ%Ø%ð-ñ -ô -�Ô)ð 	ŒˆØŒ×ÒÑÔÐð <�m˜H˜N¨¨H¨N¸Ñ;Ô;¸D¼LÑIÔIˆØ×Ò˜* dÔ&6Ñ7Ô7Ð7ð
 Ô$ð 	AØ×Ò˜j¨$Ô*?Ñ@Ô@Ð@ð (�4”?Ô'¨Ð6Ð6¨vÐ6Ð6ˆØÔ×Ò Ñ%Ô%Ð%àˆr"   c                 ój   — |j         dk    r't                               d|j        j        ¦  «         dS dS )z6Response callback to warn about incorrect credentials.r¤   z)401 Error, Credentials not correct for %sN)r¥   r?   rk   r¬   r   )r*   r¡   r¢   s      r#   r­   z MultiDomainBasicAuth.warn_on_401¨  sC   € àÔ˜sÒ"Ð"Ý�NŠNØ;Ø”Ô ñô ð ð ð ð #Ð"r"   c                 óv  — t          ¦   «         }t          |t          ¦  «        r
J d¦   «         ‚| j        }d| _        |ry|j        dk     rp	 t
                               d¦  «         |                     |j        |j	        |j
        ¦  «         dS # t          $ r t
                               d¦  «         Y dS w xY wdS dS )z1Response callback to save credentials on success.z'should never reach here without keyringNi�  zSaving credentials to keyringzFailed to save credentials)rp   Ú
isinstancer2   ry   r¥   r?   Úinfor/   r   r   r   rj   Ú	exception)r*   r¡   r¢   r:   Úcredss        r#   r®   z%MultiDomainBasicAuth.save_credentials°  sè   € å&Ñ(Ô(ˆÝØÕ(ñ
ô 
ð 	5ð 	5à4ñ	5ô 	5ð 	5ð Ô)ˆØ$(ˆÔ!Øð 	?�TÔ%¨Ò+Ð+ð?Ý—’Ð;Ñ<Ô<Ð<Ø×&Ò& u¤y°%´.À%Ä.ÑQÔQÐQÐQÐQøÝð ?ð ?ð ?Ý× Ò Ð!=Ñ>Ô>Ð>Ð>Ð>Ð>ð?øøøð		?ð 	?Ð+Ð+s   Á
A B Â$B4Â3B4)TN)TF)r   r   r   Úboolr	   r   r   r;   r€   r   r�   r
   r’   r   r˜   rœ   r    r   r   r—   r­   r®   r!   r"   r#   rt   rt   ¿   sö  € € € € € àHLð@ð @Øð@Ø2:¸4À¼9Ô2Eð@à	ð@ð @ð @ð @ð #ð ¨(°3¬-ð ð ð ð ð2 !Ø#ð	6"ð 6"àð6"ð ð6"ð ð	6"ð
 
ð6"ð 6"ð 6"ð 6"ðp.'Øð.'à	ˆs�H˜S”M 8¨C¤=Ð0Ô	1ð.'ð .'ð .'ð .'ð`˜Gð ¨ð ð ð ð ð"
(Øð
(à	ˆx˜Œ}˜h sœm¨TÐ1Ô	2ð
(ð 
(ð 
(ð 
(ðM°$ð Mð Mð Mð Mð
8˜xð 8°3ð 8¸8ð 8ð 8ð 8ð 8ðt ð °Cð ¸Dð ð ð ð ð? Xð ?¸ð ?Àð ?ð ?ð ?ð ?ð ?ð ?r"   rt   ).r0   rU   rl   rX   Úurllib.parser¦   Úabcr   r   Útypingr   r   r   r   r	   r
   Úpip._vendor.requests.authr   r   Úpip._vendor.requests.modelsr   r   Úpip._vendor.requests.utilsr   Úpip._internal.utils.loggingr   Úpip._internal.utils.miscr   r   r   r   r   Ú pip._internal.vcs.versioncontrolr   r   r?   rh   r   r%   r2   r7   rF   rp   r   rr   rt   r!   r"   r#   ú<module>rÆ      s¬  ððð ð 
€	€	€	Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?à =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 6Ð 5Ð 5Ð 5Ð 5Ð 5à	ˆ�8Ñ	Ô	€àÐ ðð ð ð ð �*ñ ô ð ð	ð 	ð 	ð 	ð 	˜#ñ 	ô 	ð 	ðð ð ð ð Ð-ñ ô ð ð;ð ;ð ;ð ;ð ;Ð/ñ ;ô ;ð ;ð<5ð 5ð 5ð 5ð 5Ð,ñ 5ô 5ð 5ðp!Ð1ð !ð !ð !ð !ð2˜( 3œ-ð °8¸C´=ð ÀXÈhÔEWð ð ð ð ð&?ð ?ð ?ð ?ð ?˜8ñ ?ô ?ð ?ð ?ð ?r"   