
    -j/                    f   U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ erddlmZ ddlmZ ddlmZmZ dZ de!d<   dZ"de!d<   d!dZ# G d d          Z$ G d de$          Z% G d de%          Z& G d d e$          Z'dS )"z]
requests.auth
~~~~~~~~~~~~~

This module contains the authentication handlers for Requests.
    )annotationsN)	b64encode)TYPE_CHECKINGAnyFinalcastoverload   )to_native_string)
basestringstrurlparse)extract_cookies_to_jar)parse_dict_header)	CookieJar)r   )PreparedRequestResponsez!application/x-www-form-urlencodedr   CONTENT_TYPE_FORM_URLENCODEDzmultipart/form-dataCONTENT_TYPE_MULTI_PARTusernamebytes | strpasswordreturnr   c           	     `   t          | t                    s.t          j        d| dt                     t          |           } t          |t                    s;t          j        dt          |          dt                     t          |          }t          | t
                    r|                     d          } t          |t
                    r|                    d          }dt          t          d
                    | |f                                                              z   }|S )zReturns a Basic Auth string.zpNon-string usernames will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (zC) to a string or bytes object in the near future to avoid problems.)categoryzpNon-string passwords will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (latin1zBasic    :)
isinstancer   warningswarnDeprecationWarningr   typeencoder   r   joinstrip)r   r   authstrs      a/lsinfo/ai/hellotax_ai/training_center/backend/venv/lib/python3.11/site-packages/requests/auth.py_basic_auth_strr(   "   s@    h
++ !BJ   (	
 	
 	
 	
 x==h
++ !BFx..   (	
 	
 	
 	
 x== (C   -??8,,(C   -??8,,)$))Xx0112288::  G N    c                      e Zd ZdZddZdS )AuthBasez4Base class that all auth implementations derive fromrr   r   c                     t          d          )NzAuth hooks must be callable.)NotImplementedErrorselfr,   s     r'   __call__zAuthBase.__call__Q   s    !"@AAAr)   Nr,   r   r   r   __name__
__module____qualname____doc__r1    r)   r'   r+   r+   N   s4        >>B B B B B Br)   r+   c                  x    e Zd ZU dZded<   ded<   edd            Zedd
            ZddZddZddZddZ	dS )HTTPBasicAuthz?Attaches HTTP Basic Authentication to the given Request object.r   r   r   r   r   Nonec                    d S Nr8   r0   r   r   s      r'   __init__zHTTPBasicAuth.__init__[       >Acr)   bytesc                    d S r=   r8   r>   s      r'   r?   zHTTPBasicAuth.__init__]       BE#r)   c                "    || _         || _        d S r=   )r   r   r>   s      r'   r?   zHTTPBasicAuth.__init__`   s      r)   otherobjectboolc           	         t          | j        t          |dd           k    | j        t          |dd           k    g          S Nr   r   allr   getattrr   r0   rE   s     r'   __eq__zHTTPBasicAuth.__eq__d   E    
D!A!AA
D!A!AA
 
 	
r)   r   c                    | |k     S r=   r8   rM   s     r'   __ne__zHTTPBasicAuth.__ne__l       5=  r)   r,   r   c                J    t          | j        | j                  |j        d<   |S )NAuthorizationr(   r   r   headersr/   s     r'   r1   zHTTPBasicAuth.__call__o   s!    %4T]DM%R%R	/"r)   Nr   r   r   r   r   r;   r   rA   r   rA   r   r;   r   r   r   r   r   r;   rE   rF   r   rG   rE   r   r   rG   r2   )
r4   r5   r6   r7   __annotations__r	   r?   rN   rQ   r1   r8   r)   r'   r:   r:   U   s         IIAAA XAEEE XE! ! ! !
 
 
 
! ! ! !     r)   r:   c                      e Zd ZdZddZdS )HTTPProxyAuthz=Attaches HTTP Proxy Authentication to a given Request object.r,   r   r   c                J    t          | j        | j                  |j        d<   |S )NzProxy-AuthorizationrU   r/   s     r'   r1   zHTTPProxyAuth.__call__w   s"    +:4=$-+X+X	'(r)   Nr2   r3   r8   r)   r'   r^   r^   t   s.        GG     r)   r^   c                      e Zd ZU dZded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ed)d            Zed*d            Zd+dZd,dZd-dZd.dZ	d/d Z
d0d"Zd1d&Zd2d'Zd(S )3HTTPDigestAuthz@Attaches HTTP Digest Authentication to the given Request object.r   r   r   zthreading.local_thread_localr   
last_nonceintnonce_countzdict[str, str]chalz
int | Noneposnum_401_callsr   r;   c                    d S r=   r8   r>   s      r'   r?   zHTTPDigestAuth.__init__   r@   r)   rA   c                    d S r=   r8   r>   s      r'   r?   zHTTPDigestAuth.__init__   rC   r)   c                R    || _         || _        t          j                    | _        d S r=   )r   r   	threadinglocalrb   r>   s      r'   r?   zHTTPDigestAuth.__init__   s&      &_..r)   c                    t          | j        d          sJd| j        _        d| j        _        d| j        _        i | j        _        d | j        _        d | j        _        d S d S )NinitT r   )hasattrrb   ro   rc   re   rf   rg   rh   )r0   s    r'   init_per_thread_statez$HTTPDigestAuth.init_per_thread_state   si    t)622 	4&*D#,.D)-.D*&(D#%)D"/3D,,,	4 	4r)   methodurl
str | Nonec                   | j         j        d         }| j         j        d         }| j         j                            d          }| j         j                            d          }| j         j                            d          }d|d}n|                                }|dk    s|dk    rd0d}	|	n&|dk    rd0d}
|
n|dk    rd0d}|n|dk    rd0d}|dS d1fd}d}t	          |          }|j        pd}|j        r|d|j         z  }| j         d| d| j         }| d| } |          } |          }|| j         j	        k    r| j         xj
        dz  c_
        nd| j         _
        | j         j
        d}t          | j         j
                                      d          }||                    d          z  }|t          j                                        d          z  }|t          j        d          z  }t#          j        |d                                          dd          }|dk    r | d| d|           }|s ||| d|           }n9|d!k    sd!|                    d"          v r| d| d| d#| } |||          }ndS || j         _	        d$| j         d%| d&| d'| d(| d)}|r	|d*| d)z  }|r	|d+| d)z  }|r	|d,| d)z  }|r|d-| d.| d)z  }d/| S )2z
        :rtype: str
        realmnonceqop	algorithmopaqueNMD5zMD5-SESSxstr | bytesr   r   c                    t          | t                    r|                     d          } t          j        | d                                          S Nutf-8Fusedforsecurity)r   r   r#   hashlibmd5	hexdigestr}   s    r'   md5_utf8z4HTTPDigestAuth.build_digest_header.<locals>.md5_utf8   sF    a%% *))A{1e<<<FFHHHr)   SHAc                    t          | t                    r|                     d          } t          j        | d                                          S r   )r   r   r#   r   sha1r   r   s    r'   sha_utf8z4HTTPDigestAuth.build_digest_header.<locals>.sha_utf8   sF    a%% *))A|Au===GGIIIr)   zSHA-256c                    t          | t                    r|                     d          } t          j        | d                                          S r   )r   r   r#   r   sha256r   r   s    r'   sha256_utf8z7HTTPDigestAuth.build_digest_header.<locals>.sha256_utf8   F    a%% *))A~a???IIKKKr)   zSHA-512c                    t          | t                    r|                     d          } t          j        | d                                          S r   )r   r   r#   r   sha512r   r   s    r'   sha512_utf8z7HTTPDigestAuth.build_digest_header.<locals>.sha512_utf8   r   r)   sdc                $     |  d|           S )N:r8   )r   r   	hash_utf8s     r'   KDz.HTTPDigestAuth.build_digest_header.<locals>.KD   s    9ZZAZZ(((r)   /?r   r
   08xr      Fr      auth,z:auth:z
username="z
", realm="z
", nonce="z", uri="z", response=""z
, opaque="z, algorithm="z
, digest="z, qop="auth", nc=z
, cnonce="zDigest )r}   r~   r   r   )r   r   r   r   r   r   )rb   rf   getupperr   pathqueryr   r   rc   re   r   r#   timectimeosurandomr   r   r   split)r0   rs   rt   rw   rx   ry   rz   r{   
_algorithmr   r   r   r   r   entdigp_parsedr   A1A2HA1HA2ncvaluer   cnoncerespdignoncebitbaser   s                              @r'   build_digest_headerz"HTTPDigestAuth.build_digest_header   sp   
 "'0"'0 %))%00&+//<<	#(,,X66	JJ"**J*
":":I I I I
 !II5  J J J J
 !II9$$L L L L
 $II9$$L L L L
 $I4	) 	) 	) 	) 	) 	) C==}#> 	)((((D777777immimmD&111**a/***-.D*'399".//66w??	U\\'"""	TZ\\  )))	RZ]]a777AACCCRCH##)s55U55V5566C 	b....//GGF]]f		#66??'??F??#??Hbh''GG 4(-%2 2 2% 2 25 2 22 2'.2 2 2 	  	+*****D 	10I0000D 	+*****D 	EDDD6DDDDDr)   r,   r   kwargsr   c                0    |j         rd| j        _        dS dS )z)Reset num_401_calls counter on redirects.r
   N)is_redirectrb   rh   )r0   r,   r   s      r'   handle_redirectzHTTPDigestAuth.handle_redirect  s'    = 	1/0D,,,	1 	1r)   c                .   d|j         cxk    rdk     sn d| j        _        |S | j        j        2t	          |j        j        dd          x} || j        j                   |j                            dd          }d|	                                v rv| j        j        d	k     re| j        xj        dz  c_        t          j        d
t          j                  }t          |                    d|d                    | j        _        |j         |                                 |j                                        }t'          d|j                  }t+          ||j        |j                   |                    |           |                     t'          t2          |j                  t'          t2          |j                            }|r
||j        d<    |j        j        |fi |}	|	j                            |           ||	_        |	S d| j        _        |S )zo
        Takes the given response and tries digest-auth, if needed.

        :rtype: requests.Response
        i  i  r
   Nseekzwww-authenticaterp   digest   zdigest )flags)countr   rT   ) status_coderb   rh   rg   rL   requestbodyrV   r   lowerrecompile
IGNORECASEr   subrf   contentclosecopyr   _cookiesr   rawprepare_cookiesr   r   rs   rt   
connectionsendhistoryappend)
r0   r,   r   r   s_authpatprep
cookie_jar_digest_auth_rs
             r'   
handle_401zHTTPDigestAuth.handle_401  s    am))))c))))/0D,H!-  	===JT'+,,,1266v||~~%%$*<*JQ*N*N,,1,,*Zr}===C&7FRS8T8T&U&UD# IIGGIII9>>##Dk4=99J":qy!%@@@  ,,,33S$+&&S$((;(; L  =0<_-""422622BJa   BJI+,(r)   r   c                   |                                   | j        j        rR|                     t	          t
          |j                  t	          t
          |j                            }|r
||j        d<   t          |j
        dd           x} |            | j        _        nd | j        _        |                    d| j                   |                    d| j                   d| j        _        |S )NrT   tellresponser
   )rr   rb   rc   r   r   r   rs   rt   rV   rL   r   rg   register_hookr   r   rh   )r0   r,   r   r   s       r'   r1   zHTTPDigestAuth.__call__A  s    ""$$$( 	:33S!(##T#qu%5%5 L  :-9	/*AFFD111D>%)TVVD"" &*D"	
DO444	
D$8999+,(r)   rE   rF   rG   c           	         t          | j        t          |dd           k    | j        t          |dd           k    g          S rI   rJ   rM   s     r'   rN   zHTTPDigestAuth.__eq__Y  rO   r)   c                    | |k     S r=   r8   rM   s     r'   rQ   zHTTPDigestAuth.__ne__a  rR   r)   NrW   rX   rY   )r   r;   )rs   r   rt   r   r   ru   )r,   r   r   r   r   r;   )r,   r   r   r   r   r   r2   rZ   r[   )r4   r5   r6   r7   r\   r	   r?   rr   r   r   r   r1   rN   rQ   r8   r)   r'   ra   ra   |   sH        JJ""""OOOOOOAAA XAEEE XE/ / / /4 4 4 4m  m  m  m ^1 1 1 1
. . . .`   0
 
 
 
! ! ! ! ! !r)   ra   )r   r   r   r   r   r   )(r7   
__future__r   r   r   r   rl   r   r   base64r   typingr   r   r   r   r	   _internal_utilsr   compatr   r   r   cookiesr   utilsr   http.cookiejarr   modelsr   r   r   r\   r   r(   r+   r:   r^   ra   r8   r)   r'   <module>r      s0     # " " " " "  				 				             < < < < < < < < < < < < < < - - - - - - - - - - - - - - - - + + + + + + $ $ $ $ $ $ 2((((((11111111&I  I I I I!6  6 6 6 6) ) ) )XB B B B B B B B    H   >    M   f! f! f! f! f!X f! f! f! f! f!r)   