
    s0jj                    v   U d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlZd dlZddlmZ ddlmZmZmZ d	d
lmZmZmZmZ ddlmZmZm Z  ddl!m"Z"m#Z#m$Z$m%Z% dZ&dZ'dZ(dZ)dZ*dZ+h dZ, ejZ                  d      Z.e&dddZ/e/ja                         D  ch c]  }  ejb                  |       jd                    c} Z3 edd      Z4de5d<    G d de6      Z7ddd;dZ8d<dZ9d<d Z:	 	 	 	 	 	 	 	 	 	 d=d!Z; G d" d#ejx                        Z= G d$ d%ej|                        Z?dd&d'	 	 	 	 	 	 	 	 	 d>d(Z@dd&d'	 	 	 	 	 	 	 	 	 d?d)ZAd@d*ZB	 	 	 	 dAd+ZC	 	 	 	 	 	 	 	 dBd,ZD	 	 	 	 	 	 dCd-ZEdDd.ZFdEd/ZG	 	 	 	 	 	 dFd0ZHdGd1ZIdHd2ZJdId3ZKdJd4ZL G d5 d6ee         ZM G d7 d8eM      ZN G d9 d:eM      ZOyc c} w )K    )annotationsN)AnyNoReturncast)
ContextVar)TypeIsoverride   )is_dict)timeout_exceptionsnormalize_httpx_url_loaded_legacy_httpx   )TOKEN_EXCHANGE_GRANT_TYPEWorkloadIdentityX509WorkloadIdentity_WorkloadIdentityAuth)MAX_RETRY_DELAYINITIAL_RETRY_DELAYMAX_RETRY_AFTER_DELAY)
OAuthErrorOpenAIErrorAPITimeoutErrorAPIConnectionErrorzhttps://mtls.api.openai.com/v1z(https://mtls.auth.openai.com/oauth/tokenz'urn:openai:params:oauth:token-type:x509openai_x509_replay_position!openai_x509_replay_file_positions>   typeservice_account_ididentity_provider_idrefresh_buffer_secondsz[A-Za-z0-9._~+/-]+=*z!https://mtls-us.api.openai.com/v1z!https://mtls-eu.api.openai.com/v1)globaluseu$openai_x509_exchange_request_timeout)defaultz*ContextVar[dict[str, float | None] | None]_EXCHANGE_REQUEST_TIMEOUTc                      e Zd ZddZy)_TransientTokenExchangeErrorc                    || _         y N)error)selfr+   s     I/home/Script/Script_env/lib/python3.12/site-packages/openai/auth/_x509.py__init__z%_TransientTokenExchangeError.__init__-   s	    
    N)r+   r   returnNone)__name__
__module____qualname__r.    r/   r-   r(   r(   ,   s    r/   r(   expected_originc               *   t        |       }|j                  dk7  s|j                  st        d      |j                  s|j
                  rt        d      |=|j                  |j                  f|j                  |j                  fk7  rt        d      y y )Nhttpsz:X.509 workload identity requires an absolute HTTPS API URLz@X.509 workload identity API URLs cannot contain user credentialszCX.509 workload identity requests must use the configured API origin)r   schemehostr   usernamepasswordport)urlr7   normalized_urls      r-   validate_x509_api_urlrA   1   s    (-N'~/B/BVWW."9"9\]]"(;(;^=P=P'QV ( _``	("r/   c                R    t        d | j                  D              rt        d      y )Nc              3  `   K   | ]&  }|j                         j                  d d      dv  ( yw)_-)api-key	x-api-keyproxy-authorizationNlowerreplace.0headers     r-   	<genexpr>z0validate_x509_api_credentials.<locals>.<genexpr>A   s1       	sC(,[[   ,.zLX.509 workload identity requests cannot include API-key or proxy credentials)anyheadersr   requests    r-   validate_x509_api_credentialsrU   @   s.    
 oo  hii	r/   c                r   | j                   j                  d      t              dk7  s0t        fddD              st        d | j                   D              rt	        d      	 t        j                  dd          }|j                  sx|j                  sl|j                  d
k7  s]|j                  sQ|j                  sE|j                  |j                  f| j                  j                  | j                  j                  fk7  rt	        d      y # t
        j                  $ r}t	        d	      |d }~ww xY w)Nr;   r   c              3  ,   K   | ]  }|d    v   yw)r   Nr5   )rM   	delimiterhost_headerss     r-   rO   z2validate_x509_request_authority.<locals>.<genexpr>L   s     F	yLO+Fs   z/?#@\c              3  >   K   | ]  }|j                  d         yw):N)
startswithrL   s     r-   rO   z2validate_x509_request_authority.<locals>.<genexpr>M   s     D&v  %Ds   zIX.509 workload identity requests require exactly one valid Host authorityzhttps://r   z?X.509 workload identity requests require a valid Host authority/zAX.509 workload identity Host authority must match the request URL)rR   get_listlenrQ   r   httpx2URL
InvalidURLr<   r=   pathqueryfragmentr;   r>   r?   )rT   host_urlr+   rY   s      @r-   validate_x509_request_authorityrg   H   s	   ??++F3LLQFXFFDGOODDeffh::a(9:;
 	==C>>MM8==)gkk.>.>@P@P-QQ]^^ R  h[\bgghs   'D D6%D11D6c                  t        | j                  |       t        |        | j                  j	                  d      }|$|| j                  j
                  k7  rt        d      | j                  j	                  d      }| j                  j                  t        v rH|Ft        |t              r+|j                         |j                  j                         k7  rt        d      |rOt        | j                        t        k7  rt        d      t        d | j                  D              rt        d      y t        |        | j                  j	                  d	      |k7  rt        d
      y )Nr6   targetzAX.509 workload identity request target must match the request URLsni_hostnamezEX.509 workload identity TLS hostname must match the configured originzDX.509 token exchange requests must use the pinned authentication URLc              3  `   K   | ]&  }|j                         j                  d d      dv  ( yw)rD   rE   )authorizationrH   cookierG   rF   NrI   rL   s     r-   rO   z._validate_transport_request.<locals>.<genexpr>w   s6      
  LLN""3,YZ
rP   z<X.509 token exchange requests cannot include API credentialsAuthorizationzMX.509 workload identity authorization cannot be changed by HTTP request hooks)rA   r?   rg   
extensionsgetraw_pathr   r;   _OPENAI_MTLS_HOSTS
isinstancestrrJ   _X509_TOKEN_EXCHANGE_URLrQ   rR   rU   )rT   r7   expected_authorizationtoken_exchangeri   rj   s         r-   _validate_transport_requestrx   a   s9    '++G#G,##H-Ff(<(<<]^^%%)).9L{{--,2J,,0B0B0DH\H\HbHbHd0deffw{{77dee 
 "//
 

 \]]
 	&g.??/3IImnn Jr/   c                  L    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZedd       Zedd       Zy)_SyncX509ForwardingTransportc               <    || _         || _        || _        || _        y r*   _http_client_expected_origin_expected_authorization_token_exchanger,   http_clientr7   rv   rw   s        r-   r.   z%_SyncX509ForwardingTransport.__init__   $     ( /'=$-r/   c                   t        || j                  | j                  | j                         | j                  j
                  rt        d      | j                  j                  |j                        j                  |      S N)r7   rv   rw   z5Cannot send a request, as the client has been closed.)
rx   r~   r   r   r}   	is_closedRuntimeError_transport_for_urlr?   handle_requestr,   rT   s     r-   r   z+_SyncX509ForwardingTransport.handle_request   sl    # 11#'#?#?//		
 &&VWW  33GKK@OOPWXXr/   c                     y r*   r5   r,   s    r-   closez"_SyncX509ForwardingTransport.close   s     r/   N)
r   httpx2.Clientr7   
httpx2.URLrv   
str | Nonerw   boolr0   r1   rT   httpx2.Requestr0   httpx2.Responser0   r1   )r2   r3   r4   r.   r	   r   r   r5   r/   r-   rz   rz      sc    . #. $	.
 !+. . 
. 	Y 	Y  r/   rz   c                  L    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZedd       Zedd       Zy)_AsyncX509ForwardingTransportc               <    || _         || _        || _        || _        y r*   r|   r   s        r-   r.   z&_AsyncX509ForwardingTransport.__init__   r   r/   c                "  K   t        || j                  | j                  | j                         | j                  j
                  rt        d      | j                  j                  |j                        j                  |       d {   S 7 wr   )
rx   r~   r   r   r}   r   r   r   r?   handle_async_requestr   s     r-   r   z2_AsyncX509ForwardingTransport.handle_async_request   sv     # 11#'#?#?//		
 &&VWW&&99'++F[[\cdddds   BBB	Bc                   K   y wr*   r5   r   s    r-   aclosez$_AsyncX509ForwardingTransport.aclose   s      s   N)
r   httpx2.AsyncClientr7   r   rv   r   rw   r   r0   r1   r   r   )r2   r3   r4   r.   r	   r   r   r5   r/   r-   r   r      sc    . (. $	.
 !+. . 
. 	e 	e  r/   r   F)rv   rw   c               H   t        | |||      }t               }t        j                  }|4t	        t        t        |       t        j                        s|j                  } ||| j                  |rd n| j                  | j                  d      }|s| j                  |_        |S N)r   r7   rv   rw   F)	transporttimeoutevent_hooksdefault_encoding	trust_env)rz   r   r`   Clientrs   r   objectr   r   _default_encodingcookies_cookiesr   r7   rv   rw   r   legacy_httpxclient_typescoped_clients           r-   _scoped_sync_clientr      s     -'5%	I ()L--K
43Lfmm(\"))##*D0G0G$66M !,!4!4r/   c               H   t        | |||      }t               }t        j                  }|4t	        t        t        |       t        j                        s|j                  } ||| j                  |rd n| j                  | j                  d      }|s| j                  |_        |S r   )r   r   r`   AsyncClientrs   r   r   r   r   r   r   r   r   s           r-   _scoped_async_clientr      s     .'5%	I ()L$$K
43LfN`N`(a"..##*D0G0G$66M !,!4!4r/   c                    t        | t              st        | t        t        f      sy 	 t        |       } t        j                  |       r| S d S # t        $ r Y y w xY wr*   )rs   r   intfloatOverflowErrormathisfinite)values    r-   _as_finite_floatr      sV    %je&Ee MM%(52d2  s   A 	AAc                6    | d uxr | j                  d      dk(  S )Nr   x509)rp   identitys    r-   is_x509_workload_identityr     s"     4BHLL$8F$BBr/   c                X    |t        |      s| S |t        vrt        d      t        |   S )NzCX.509 workload identity requires a supported regional mTLS endpoint)r   _MTLS_REGIONAL_BASE_URLSr   )base_urldata_residencyworkload_identitys      r-   x509_data_residency_base_urlr     s8    
 %>?P%Q55_``#N33r/   c                    || S | j                         D ci c]  \  }}|j                         dk7  s|| c}}S c c}}w )Nrl   )itemsrJ   )rR   r   namer   s       r-   x509_safe_environment_headersr     s>      +2==?^KD%djjlo>]D%K^^^s   ==c                "    d v sd v rt        d      t               t        z
  rt        d      t         fddD              rt        d      t	        t
         j                  d            }|t        |      }||d	k  rt        d
      y y )Nprovider	client_idzMX.509 workload identity does not accept a subject-token provider or client IDzPX.509 workload identity accepts only identity IDs and an optional refresh bufferc              3     K   | ]8  }t        j                  |      t               xs j                  |        : y wr*   )rs   rp   rt   )rM   fieldr   s     r-   rO   z%_validate_identity.<locals>.<genexpr>(  s@       x||E*C00KU8K4KKs   >A)r   r   zJX.509 workload identity requires identity-provider and service-account IDsr    r   zFX.509 workload identity requires a finite, non-negative refresh buffer)r   set_ALLOWED_IDENTITY_FIELDSrQ   r   r   rp   r   )r   refresh_bufferrefresh_buffer_values   `  r-   _validate_identityr   !  s    X!8ijj
8}//lmm
 
  fgg&(,,/G"HIN!/?'+?!+Cfgg ,D "r/   c                ,    t         t        | d   | d   dS )Nr   r   )
grant_typesubject_token_typer   r   )r   _X509_SUBJECT_TOKEN_TYPEr   s    r-   _exchange_payloadr   8  s$    /6 ()? @&';<	 r/   c          	     2   t         j                  }t               }|qt        t	        t
        |      t         j                  t         j                  f      s9t	        t        t         j                     t	        t        |      j                        }t        j                         }|xs# t        j                  d      j                         j                         D ci c]  \  }}||t        |d      nd }}} |dt         t#        |       d|i      S c c}}w )Ng      $@POSTr   )jsonro   )r`   Requestr   rs   r   r   r   r   r   r   r&   rp   Timeoutas_dictr   minru   r   )r   r   request_typer   configured_timeoutphaser   r   s           r-   _token_exchange_requestr   A  s    
 >>L')L
43Lv}}^d^p^pNq(rD0$sL2I2Q2QR2668 0Q6>>$3G3O3O3QXXZE5 	5#4s5$$>G   x(w'	 	s   Dc                   | 	| j                   j                  d      }| j                  dv s|dk(  ry |dk7  r| j                  dvr| j                  dk  ry | j                   j                  d      }| j                   j                  d      }|@	 t        |      d	z  }t	        j
                  |      rd
|cxk  r
t        k  r|S  |t        kD  ry |=	 t        |      }t	        j
                  |      rd
|cxk  r
t        k  r|S  |t        kD  ry t        t        t         d|z  z  t"                    S # t        $ r Y mw xY w# t        $ r 	 t        j                  j                  |      }|=t        t        j                  j                  |      t        j                         z
        nd}n# t        t        t        f$ r d}Y nw xY wY w xY w)Nx-should-retryi  i  i  falsetruei  i  i    zretry-after-mszretry-afteri  r   r
   )rR   rp   status_coder   r   r   r   
ValueErroremailutilsparsedate_tz	mktime_tztimer   OSErrorr   r   r   )responseattemptshould_retryretry_after_msretry_aftermillisecond_delaydelayparseds           r-   _retry_delayr   X  s   ''++,<=?2lg6M6!h&:&:/&QV^VjVjmpVp!))--.>?&&**=9% $).$9D$@! ==!23=N8gRg8g,, 9h$'<<"k* }}U#U(K6K(K )L,,(1g:5GHH-    "[[55kBFRXRdE%++"7"7"?$))+"MNjlE%w
; E	sI   D0 D? 0	D<;D<?	G		A F*)G	*G G	GG	G	c                |   t        t        | dd       t              ry| j                  }t        |dd       }t        |t              rg }t        t        t           |      D ]  }t        |dd       }|t        |t        t        f      r)t        |dd       }t        |dd       }t        |dd       }	 t        |      r |       rt        |      rt        |      s y |       }	t        |	t              s y|j                  ||	f        || j                  t        <   yt        |d	|      }
t        |
dd       }t        |
dd       }t        |
dd       }	 t        |      r |       rt        |      rt        |      sy |       | j                  t        <   y# t        t        f$ r Y  yw xY w# t        t        f$ r Y yw xY w)
N_contentTfieldsfileseekableseektellF_stream)rs   getattrbytesstreamlistr   r   rt   callabler   r   r   appendro    _REPLAY_FILE_POSITIONS_EXTENSION_REPLAY_POSITION_EXTENSION)rT   r  r   file_positionsr   r   r   r  r  positionsources              r-   _is_replayable_requestr  ~  s   '':t4e<^^FVXt,F&$35$v,/ 	4E5&$/D|z$e=tZ6H4.D4.D)8D>YabfYg 6 h,!!4"23	4  @N;<VY/Fvz40H664(D664(D!8D>QYZ^Q_9=56 % Z(   Z  s0   0(FF(F) :F) F&%F&)F;:F;c                     t               } | t        j                  fS t        t        t
           t        | dt        j                              }t        j                  |fS )NTransportError)r   r`   r  r   r   	Exceptionr  )r   legacy_transport_errors     r-   _transport_errorsr    sS    ')L%%''!$y/7<IY[a[p[p3qr!!#9::r/   c               ^    t        | t                     rt        |      | t        |      | )NrS   )rs   r   r   r   )r+   rT   s     r-   _raise_transport_errorr    s*    %+-.g.E9
W
-58r/   c                       e Zd Zd	 fdZed
 fd       Zedd       Zedd       Zedd       ZddZ	ed fd       Z
d
dZ xZS )_X509WorkloadIdentityAuthc                   t        |       t        | 	  |t               t	        t        |d      t              | _        d| _        y )N)r   token_exchange_urlr   F)	r   superr.   ru   r   max_MAX_EXCHANGE_RETRIES_max_exchange_retries_follow_redirects)r,   r   max_retries	__class__s      r-   r.   z"_X509WorkloadIdentityAuth.__init__  s?    ,-+<Qij%([!)<>S%T"!&r/   c                   |j                   dvrt        | 	  |      }|j                         }|j	                  d      }d|v r.t        |t              r|j                         dk7  rt        d      t        j                  |d         t        d      |S 	 |j                  r|j                         nd }t        |      r|j	                  d      nd }t        |t              rd|ind }t        ||      # t        $ r d }Y Nw xY w)	Nr   
token_typebearerz<X.509 token exchange response must use the Bearer token typeaccess_tokenzIX.509 token exchange response did not include a valid Bearer access_tokenr+   )r   body)r   r  _handle_token_responser   rp   rs   rt   rJ   r   _BEARER_ACCESS_TOKEN	fullmatchcontentr   r   r   )r,   r   
token_dataresponse_bodyr#  oauth_error	safe_bodyr!  s          r-   r'  z0_X509WorkloadIdentityAuth._handle_token_response  s   67AJ$MMOM&**<8J},jS6QU_UeUeUgksUs!"`aa#--j.HIQ!"mnn	!/7/?/?HMMOTM 5<M4Jm''0PT.8c.JWk*PT	(;;  	! M	!s   C7 7DDc                @    t        |      }||dk  rt        d      |S )Nr   zKX.509 token exchange response did not include a positive, finite expires_in)r   r   )r,   
expires_inexpires_in_values      r-   _validate_expires_inz._X509WorkloadIdentityAuth._validate_expires_in  s-    +J7#'71'<kllr/   c                    t        |      S r*   )r  r   s     r-   _can_retry_requestz,_X509WorkloadIdentityAuth._can_retry_request  s    %g..r/   c                   |j                   j                  t              }t        |t              rNt        t        t        t        t        f      |      D ]&  \  }}t        |dd       }t        |      s ||       ( y |j                   j                  t              }t        |t              sy t        |j                  d|j                        }t        |dd       }t        |      r	 ||       y y )Nr  r  )ro   rp   r
  rs   r  r   tupler   r   r  r  r  r  )r,   rT   r  r   file_positionr  r  r  s           r-   _prepare_retry_requestz0_X509WorkloadIdentityAuth._prepare_retry_request  s     ++//0PQnd+'+Dvs{1C,Dn'U (#mtVT2D>'( %%))*DE(C(GNNCvvt,D>N r/   c                    | j                   5  | j                         r
	 d d d        y t        j                         t        z   | _        | j                  cd d d        S # 1 sw Y   y xY wr*   )_lock_token_unusabler   	monotonicr   "_cached_token_refresh_at_monotonic_cached_tokenr   s    r-   %_usable_token_after_transient_failurez?_X509WorkloadIdentityAuth._usable_token_after_transient_failure  sW    ZZ 	&##%	& 	& 7;nn6FI\6\D3%%		& 	& 	&s   A+AA&c                p    	 t         |           y # t        t        f$ r | j	                          Y y w xY wr*   )r  _perform_refreshr   r(   r?  )r,   r!  s    r-   rA  z*_X509WorkloadIdentityAuth._perform_refresh  s@    	G$&"$@A 	99;C D	s     55c                    	 | j                  |      S # t        $ r[}|j                  dv s;|j                  dk\  s,|j                  dvr*|j                  j	                  d      dk(  rt        |      | d }~ww xY w)Nr   r   r   r   r   )r'  r   r   rR   rp   r(   )r,   r   r+   s      r-   _handle_exchange_responsez3_X509WorkloadIdentityAuth._handle_exchange_response  s|    		..x88 	$$7''3.((?HDTDTDXDXYiDjntDt259uD	s    	A7AA22A7)r   r   r   r   r0   r1   )r   r   r0   dict[str, Any])r0  r   r0   r   rT   r   r0   r   rT   r   r0   r1   )r0   r   r   )r2   r3   r4   r.   r	   r'  r2  r4  r8  r?  rA  rC  __classcell__r!  s   @r-   r  r    sv    ' < <(     / /  "&  
r/   r  c                  v     e Zd ZU ded<   	 	 	 	 	 	 	 	 d fdZ	 	 	 	 	 	 	 	 	 	 	 	 ddZd	dZed
d       Z xZ	S )SyncX509WorkloadIdentityAuthr   r}   c               6    t         |   ||       || _        y N)r   r   )r  r.   r}   r,   r   r   r   r!  s       r-   r.   z%SyncX509WorkloadIdentityAuth.__init__  s      	+<+V'r/   c                   t        | j                  ||      5 }|j                  dd         |j                  |fd|i|cd d d        S # 1 sw Y   y xY wN)r7   rv   authr  )r   r}   
setdefaultsendr,   rT   r7   rv   r  kwargsr   s          r-   send_api_requestz-SyncX509WorkloadIdentityAuth.send_api_request  s`     !Wm
 	Hfd+%=%%gGfGG		H 	H 	Hs   'A

Ac                   t         j                  |j                  j                  d            }	 	 | j	                         t         j                  |       S # t        t        f$ rQ}| j                         }|t        |t              r|j                  d  |cY d }~t         j                  |       S d }~ww xY w# t         j                  |       w xY wNr   )r&   r   ro   rp   	get_tokenresetr   r(   r?  rs   r+   r,   rT   timeout_tokenr+   tokens        r-   get_token_for_requestz2SyncX509WorkloadIdentityAuth.get_token_for_request!  s    155g6H6H6L6LY6WX	;~~' &++M: '(DE BBD=!%)EF#kkt3%++M: &++M:s/   A B6%1B1B6B9 1B66B9 9Cc                Z   t        | j                  dz         D ]  }t        | j                  | j                        }	 t        | j                  t        j                  t              d      5 }|j                  |d d      }d d d        t        |      }|| j                  k\  s|| j                  |      c S |t        j                  |        t!        d      # 1 sw Y   ^xY w# t               $ r2}|| j                  k\  rt        ||       t        d |      }Y d }~kd }~ww xY w	Nr   )r   T)r7   rw   F)rP  follow_redirectsrS   z6X.509 token exchange retry loop exhausted unexpectedly)ranger  r   r   r}   r   r`   ra   ru   rR  r   rC  r  r  r   sleepAssertionErrorr,   r   exchange_requestr   r   r   r+   s          r-   _fetch_token_from_exchangez7SyncX509WorkloadIdentityAuth._fetch_token_from_exchange0  s$   T77!;< 	"G6t7M7M[_[l[lmD(%%$*JJ/G$H#' 	 #,11(!).  2  H	 %Xw7d888EM99(CC 

5!/	"2 UVV-	 	 %& 4d888*5:JK$T734s/   /C+-CC+C(	$C++D*8(D%%D*)r   r   r   r   r   r   r0   r1   rT   r   r7   r   rv   r   r  r   rT  r   r0   r   rT   r   r0   rt   r0   rD  )
r2   r3   r4   __annotations__r.   rU  r]  r	   rf  rG  rH  s   @r-   rJ  rJ  	  s    ($8(GT(cf(	(HH $	H
 !+H H H 
H; W Wr/   rJ  c                  ~     e Zd ZU ded<   	 	 	 	 	 	 	 	 d fdZ	 	 	 	 	 	 	 	 	 	 	 	 d	dZd
dZedd       ZddZ	 xZ
S )AsyncX509WorkloadIdentityAuthr   r}   c               h    t         |   ||       || _        t        j                         | _        y rL  )r  r.   r}   anyioLock_async_lockrM  s       r-   r.   z&AsyncX509WorkloadIdentityAuth.__init__Q  s.     	+<+V' ::<r/   c                 K   t        | j                  ||      4 d {   }|j                  dd         |j                  |fd|i| d {   cd d d       d {    S 7 D7 7 	# 1 d {  7  sw Y   y xY wwrO  )r   r}   rQ  rR  rS  s          r-   rU  z.AsyncX509WorkloadIdentityAuth.send_api_requestX  s      (Wm
 	N 	Nfd++++GMFMfMM		N 	N 	N N		N 	N 	N 	NsV   A?A$A?+A*A&A*A?A(A?&A*(A?*A<0A31A<8A?c                  K   t         j                  |j                  j                  d            }	 	 | j	                          d {   t         j                  |       S 7 # t        t        f$ rQ}| j                         }|t        |t              r|j                  d  |cY d }~t         j                  |       S d }~ww xY w# t         j                  |       w xY wwrW  )r&   r   ro   rp   get_token_asyncrY  r   r(   r?  rs   r+   rZ  s        r-   r]  z3AsyncX509WorkloadIdentityAuth.get_token_for_requestg  s     155g6H6H6L6LY6WX	;!1133 &++M: 4&(DE BBD=!%)EF#kkt3%++M: &++M:sX   /CA" A A" 
C A" "C11B="C#C 'C=CC CCc                  K   | j                   4 d {    | j                  5  | j                         sD| j                         s4t	        t
        | j                        cd d d        cd d d       d {    S d d d        	 | j                          d {   }| j                  |       | j                  5  t	        t
        | j                        cd d d        cd d d       d {    S 7 7 z# 1 sw Y   xxY w7 f# t        t        f$ r* | j                         }| |cY cd d d       d {  7   S w xY w7 S# 1 sw Y   nxY wd d d       d {  7   y # 1 d {  7  sw Y   y xY wwr*   )rp  r:  r;  _needs_refreshr   rt   r>   _fetch_token_from_exchange_asyncr   r(   r?  _store_token)r,   r+  r\  s      r-   rs  z-AsyncX509WorkloadIdentityAuth.get_token_asyncv  sF    ## 	5 	5 9++-d6I6I6KT%7%789 9	5 	5 	59#'#H#H#JJ
 j) 5C!3!345 5	5 	5 	5 	59 9
 K&(DE BBD=	5 	5 	5	55 5	5 	5 	5 	5 	5s   E/C,E/E:C0	E'E/3C.4E/9EC>C<C>E7D<	EE/&D:'E/.E/0C9	5E<C>>$D7"E#E//D20E/6D77E:E/<E	EE/EE/E, E#!E,(E/c                  K   t        | j                  dz         D ]  }t        | j                  | j                        }	 t        | j                  t        j                  t              d      4 d {   }|j                  |d d       d {   }d d d       d {    t        |      }|| j                  k\  s|| j                  |      c S |t        j                  |       d {     t!        d      7 7 s7 e# 1 d {  7  sw Y   uxY w# t               $ r2}|| j                  k\  rt        ||       t        d |      }Y d }~d }~ww xY w7 nwr_  )ra  r  r   r   r}   r   r`   ra   ru   rR  r   rC  r  r  rn  rb  rc  rd  s          r-   rv  z>AsyncX509WorkloadIdentityAuth._fetch_token_from_exchange_async  sY    T77!;< 	)G6t7M7M[_[l[lmD/%%$*JJ/G$H#' 	 	 #%2%7%7(!). &8 &  H	 	 %Xw7d888EM99(CC kk%(((/	)2 UVV-	
 	 	 	 	 %& 4d888*5:JK$T734 )s   =E  3D3D4D7DDDDD D$2E E /E0E DDDD	DD	DE)(EE EE )r   r   r   r   r   r   r0   r1   rg  rh  )r0   rt   ri  )r2   r3   r4   rj  r.   rU  r]  r	   rs  rv  rG  rH  s   @r-   rl  rl  N  s    $$($8(GY(hk(	(NN $	N
 !+N N N 
N; 5 5"Wr/   rl  )r?   zhttpx2.URL | strr7   zhttpx2.URL | Noner0   r1   rF  )
rT   r   r7   r   rv   r   rw   r   r0   r1   )
r   r   r7   r   rv   r   rw   r   r0   r   )
r   r   r7   r   rv   r   rw   r   r0   r   )r   r   r0   float | None)r   .WorkloadIdentity | X509WorkloadIdentity | Noner0   zTypeIs[X509WorkloadIdentity])r   httpx2.URL | str | Noner   r   r   rz  r0   r{  )rR   dict[str, str]r   zX509WorkloadIdentity | Noner0   r|  )r   r   r0   r1   )r   r   r0   r|  )r   r   r   z"httpx2.Client | httpx2.AsyncClientr0   r   )r   zhttpx2.Response | Noner   r   r0   ry  rE  )r0   ztuple[type[Exception], ...])r+   r  rT   r   r0   r   )P
__future__r   rer   r   email.utilsr   typingr   r   r   contextvarsr   typing_extensionsr   r	   rn  r`   _utilsr   _httpx2r   r   r   	_workloadr   r   r   r   
_constantsr   r   r   _exceptionsr   r   r   r   MTLS_API_BASE_URLru   r   r  r  r
  r   compiler(  r   valuesra   r;   rr   r&   rj  r  r(   rA   rU   rg   rx   BaseTransportrz   AsyncBaseTransportr   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rJ  rl  )r?   s   0r-   <module>r     s   " 	    & & " .    S S  U T V V4 E D  : #F  k !rzz"9: 
-
- 
 7O6U6U6WXsjfjjo**X HR*DI E 
9 
 Z^ aj_2oo  o '	o
 o 
oD6#7#7 @F$=$= H *.    '	
  B *. #   '	
  :3C<C!C	4%	4	4 F	4 		4__0K__h." 4 	.#IL%P;9R 56J K RjBW#< BWJTW$= TWQ Ys   $#F6