§
     �’jBU  ã                  óD  — 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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j+        d¦  «        Z,ddœdPd„Z-dQd„Z.dQd„Z/dRd$„Z0 G d%„ d&ej1        ¦  «        Z2 G d'„ d(ej3        ¦  «        Z4dd)d*œdSd-„Z5dd)d*œdTd/„Z6dUd3„Z7dVd7„Z8dWd9„Z9dXd;„Z:dYd=„Z;dZdB„Z<d[dC„Z=d\dE„Z>d]dI„Z? G dJ„ dKee         ¦  «        Z@ G dL„ dMe@¦  «        ZA G dN„ dOe@¦  «        ZBdS )^é    )ÚannotationsN)ÚAnyÚNoReturnÚcast)Ú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._~+/-]+=*©Úexpected_originÚurlúhttpx2.URL | strr!   úhttpx2.URL | NoneÚreturnÚNonec               ó  — t          | ¦  «        }|j        dk    s|j        st          d¦  «        ‚|j        s|j        rt          d¦  «        ‚|�-|j        |j        f|j        |j        fk    rt          d¦  «        ‚d S d S )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)r"   r!   Únormalized_urls      ú?C:\Projects\DSCons\.venv\Lib\site-packages\openai\auth\_x509.pyÚvalidate_x509_api_urlr0   "   s¬   € Ý(¨Ñ-Ô-€NØÔ Ò'Ð'¨~Ô/BÐ'ÝÐVÑWÔWÐWàÔð ^ .Ô"9ð ^ÝÐ\Ñ]Ô]Ð]àÐ"¨Ô(;¸^Ô=PÐ'QØÔØÔðVò (ð (õ Ð_Ñ`Ô`Ð`ð	 #Ð"ð (ð (ó    Úrequestúhttpx2.Requestc                ó`   — t          d„ | j        D ¦   «         ¦  «        rt          d¦  «        ‚d S )Nc              3  ój   K  — | ].}|                      ¦   «                              d d¦  «        dv V — Œ/dS )Ú_ú-)úapi-keyú	x-api-keyúproxy-authorizationN©ÚlowerÚreplace©Ú.0Úheaders     r/   ú	<genexpr>z0validate_x509_api_credentials.<locals>.<genexpr>2   sT   è è € ð ð àð 	�Š‰Œ×Ò˜s CÑ(Ô(Ð,[Ð[ðð ð ð ð ð r1   zLX.509 workload identity requests cannot include API-key or proxy credentials)ÚanyÚheadersr   ©r2   s    r/   Úvalidate_x509_api_credentialsrE   1   sP   € Ý
ð ð à”oðñ ô ñ ô ð jõ ÐhÑiÔiÐið	jð jr1   c                ó:  ‡— | j                              d¦  «        Št          ‰¦  «        dk    s9t          ˆfd„dD ¦   «         ¦  «        st          d„ | j         D ¦   «         ¦  «        rt	          d¦  «        ‚	 t          j        d‰d         › �¦  «        }n'# t
          j        $ r}t	          d	¦  «        |‚d }~ww xY w|j        sH|j	        sA|j
        d
k    s6|j        s/|j        s(|j        |j        f| j        j        | j        j        fk    rt	          d¦  «        ‚d S )Nr*   r   c              3  ó,   •K  — | ]}|‰d          v V — ŒdS )r   N© )r?   Ú	delimiterÚhost_headerss     €r/   rA   z2validate_x509_request_authority.<locals>.<genexpr>=   s,   øè è € ÐFÐF°	ˆy˜L¨œOÐ+ÐFÐFÐFÐFÐFÐFr1   z/?#@\c              3  ó@   K  — | ]}|                      d ¦  «        V — ŒdS )ú:N)Ú
startswithr>   s     r/   rA   z2validate_x509_request_authority.<locals>.<genexpr>>   s0   è è € ÐDÐD¨&ˆv× Ò  Ñ%Ô%ÐDÐDÐDÐDÐDÐDr1   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)rC   Úget_listÚlenrB   r   Úhttpx2ÚURLÚ
InvalidURLr+   r,   ÚpathÚqueryÚfragmentr*   r-   r"   )r2   Úhost_urlÚerrorrJ   s      @r/   Úvalidate_x509_request_authorityrY   9   sY  ø€ Ø”?×+Ò+¨FÑ3Ô3€LåˆLÑÔ˜QÒÐÝÐFÐFÐFÐF¸XÐFÑFÔFÑFÔFð 	åÐDÐD°G´OÐDÑDÔDÑDÔDð 	õ ÐeÑfÔfÐfðhÝ”:Ð:¨°a¬Ð:Ð:Ñ;Ô;ˆˆøÝÔð hð hð hÝÐ[Ñ\Ô\ÐbgÐgøøøøðhøøøð 	Ôð_àÔð_ð Œ=˜CÒÐØŒ>ð  àÔð  ð ŒM˜8œ=Ð)¨g¬kÔ.>ÀÄÔ@PÐ-QÒQÐQåÐ]Ñ^Ô^Ð^ð RÐQs   Á8B ÂB:Â%B5Â5B:ú
httpx2.URLÚexpected_authorizationú
str | NoneÚtoken_exchangeÚboolc               ó‚  — t          | j        |¬¦  «         t          | ¦  «         |r[t          | j        ¦  «        t          k    rt          d¦  «        ‚t          d„ | j        D ¦   «         ¦  «        rt          d¦  «        ‚d S t          | ¦  «         | j         	                    d¦  «        |k    rt          d¦  «        ‚d S )Nr    zDX.509 token exchange requests must use the pinned authentication URLc              3  ój   K  — | ].}|                      ¦   «                              d d¦  «        dv V — Œ/dS )r6   r7   )Úauthorizationr:   Úcookier9   r8   Nr;   r>   s     r/   rA   z._validate_transport_request.<locals>.<genexpr>_   sY   è è € ð 
ð 
ð ð �LŠL‰NŒN×"Ò" 3¨Ñ,Ô,ØYðZð
ð 
ð 
ð 
ð 
ð 
r1   z<X.509 token exchange requests cannot include API credentialsÚAuthorizationzMX.509 workload identity authorization cannot be changed by HTTP request hooks)
r0   r"   rY   ÚstrÚ_X509_TOKEN_EXCHANGE_URLr   rB   rC   rE   Úget)r2   r!   r[   r]   s       r/   Ú_validate_transport_requestrg   R   sé   € õ ˜'œ+°ÐGÑGÔGÐGÝ# GÑ,Ô,Ð,àð oÝˆwŒ{ÑÔÕ7Ò7Ð7ÝÐdÑeÔeÐeÝð 
ð 
ð "œ/ð
ñ 
ô 
ñ 
ô 
ð 	^õ
 Ð\Ñ]Ô]Ð]ð	^ð 	^õ 	& gÑ.Ô.Ð.ØŒ?×Ò˜Ñ/Ô/Ð3IÒIÐIÝÐmÑnÔnÐnð JÐIr1   c                  óF   — e Zd Zdd„Zedd„¦   «         Zedd„¦   «         ZdS )Ú_SyncX509ForwardingTransportÚhttp_clientúhttpx2.Clientr!   rZ   r[   r\   r]   r^   r%   r&   c               ó>   — || _         || _        || _        || _        d S ©N©Ú_http_clientÚ_expected_originÚ_expected_authorizationÚ_token_exchange©Úselfrj   r!   r[   r]   s        r/   Ú__init__z%_SyncX509ForwardingTransport.__init__l   ó*   € ð (ˆÔØ /ˆÔØ'=ˆÔ$Ø-ˆÔÐÐr1   r2   r3   úhttpx2.Responsec                óà   — t          || j        | j        | j        ¬¦  «         | j        j        rt          d¦  «        ‚| j                             |j        ¦  «         	                    |¦  «        S ©N)r!   r[   r]   z5Cannot send a request, as the client has been closed.)
rg   rp   rq   rr   ro   Ú	is_closedÚRuntimeErrorÚ_transport_for_urlr"   Úhandle_request©rt   r2   s     r/   r}   z+_SyncX509ForwardingTransport.handle_requesty   sv   € å#ØØ Ô1Ø#'Ô#?ØÔ/ð		
ñ 	
ô 	
ð 	
ð ÔÔ&ð 	XÝÐVÑWÔWÐWØÔ ×3Ò3°G´KÑ@Ô@×OÒOÐPWÑXÔXÐXr1   c                ó   — d S rm   rH   ©rt   s    r/   Úclosez"_SyncX509ForwardingTransport.close…   s	   € ð ˆtr1   N)
rj   rk   r!   rZ   r[   r\   r]   r^   r%   r&   ©r2   r3   r%   rw   ©r%   r&   )Ú__name__Ú
__module__Ú__qualname__ru   r   r}   r�   rH   r1   r/   ri   ri   k   sl   € € € € € ð.ð .ð .ð .ð ð	Yð 	Yð 	Yñ „Xð	Yð ðð ð ñ „Xðð ð r1   ri   c                  óF   — e Zd Zdd„Zedd„¦   «         Zedd„¦   «         ZdS )Ú_AsyncX509ForwardingTransportrj   úhttpx2.AsyncClientr!   rZ   r[   r\   r]   r^   r%   r&   c               ó>   — || _         || _        || _        || _        d S rm   rn   rs   s        r/   ru   z&_AsyncX509ForwardingTransport.__init__Œ   rv   r1   r2   r3   rw   c              ƒ  óð   K  — t          || j        | j        | j        ¬¦  «         | j        j        rt          d¦  «        ‚| j                             |j        ¦  «         	                    |¦  «        ƒ d {V —†S ry   )
rg   rp   rq   rr   ro   rz   r{   r|   r"   Úhandle_async_requestr~   s     r/   rŒ   z2_AsyncX509ForwardingTransport.handle_async_request™   sŒ   è è € å#ØØ Ô1Ø#'Ô#?ØÔ/ð		
ñ 	
ô 	
ð 	
ð ÔÔ&ð 	XÝÐVÑWÔWÐWØÔ&×9Ò9¸'¼+ÑFÔF×[Ò[Ð\cÑdÔdÐdÐdÐdÐdÐdÐdÐdr1   c              ƒ  ó
   K  — d S rm   rH   r€   s    r/   Úaclosez$_AsyncX509ForwardingTransport.aclose¥   s   è è € ð ˆtr1   N)
rj   r‰   r!   rZ   r[   r\   r]   r^   r%   r&   r‚   rƒ   )r„   r…   r†   ru   r   rŒ   rŽ   rH   r1   r/   rˆ   rˆ   ‹   sl   € € € € € ð.ð .ð .ð .ð ð	eð 	eð 	eñ „Xð	eð ðð ð ñ „Xðð ð r1   rˆ   F)r[   r]   rj   rk   c               ó"  — t          | |||¬¦  «        }t          ¦   «         }t          j        }|�4t	          t          t          | ¦  «        t          j        ¦  «        s|j        } ||| j        |rd n| j        d¬¦  «        }|s| j	        |_
        |S ©N)rj   r!   r[   r]   F)Ú	transportÚtimeoutÚevent_hooksÚ	trust_env)ri   r   rQ   ÚClientÚ
isinstancer   Úobjectr’   r“   ÚcookiesÚ_cookies©rj   r!   r[   r]   r‘   Úlegacy_httpxÚclient_typeÚscoped_clients           r/   Ú_scoped_sync_clientrž   «   s­   € õ -ØØ'Ø5Ø%ð	ñ ô €Iõ (Ñ)Ô)€LÝ”-€KØÐ­
µ4½ÀÑ3LÔ3LÍfÌmÑ(\Ô(\ÐØ"Ô)ˆØ�KØØÔ#Ø*ÐG�D�D°Ô0GØð	ñ ô €Mð ð 5Ø!,Ô!4ˆÔØÐr1   r‰   c               ó"  — t          | |||¬¦  «        }t          ¦   «         }t          j        }|�4t	          t          t          | ¦  «        t          j        ¦  «        s|j        } ||| j        |rd n| j        d¬¦  «        }|s| j	        |_
        |S r�   )rˆ   r   rQ   ÚAsyncClientr–   r   r—   r’   r“   r˜   r™   rš   s           r/   Ú_scoped_async_clientr¡   Ç   s¯   € õ .ØØ'Ø5Ø%ð	ñ ô €Iõ (Ñ)Ô)€LÝÔ$€KØÐ­
µ4½ÀÑ3LÔ3LÍfÔN`Ñ(aÔ(aÐØ"Ô.ˆØ�KØØÔ#Ø*ÐG�D�D°Ô0GØð	ñ ô €Mð ð 5Ø!,Ô!4ˆÔØÐr1   Úvaluer—   úfloat | Nonec                óÜ   — t          | t          ¦  «        st          | t          t          f¦  «        sd S 	 t          | ¦  «        } n# t          $ r Y d S w xY wt          j        | ¦  «        r| nd S rm   )r–   r^   ÚintÚfloatÚOverflowErrorÚmathÚisfinite)r¢   s    r/   Ú_as_finite_floatrª   ã   s{   € Ý�%�ÑÔð ¥j°½½e¸Ñ&EÔ&Eð ØˆtðÝ�e‘”ˆˆøÝð ð ð Øˆtˆtðøøøå”M %Ñ(Ô(Ð2ˆ5ˆ5¨dÐ2s   µA Á
AÁAÚidentityú.WorkloadIdentity | X509WorkloadIdentity | NoneúTypeIs[X509WorkloadIdentity]c                ó<   — | d uo|                       d¦  «        dk    S )Nr   Úx509)rf   ©r«   s    r/   Úis_x509_workload_identityr±   í   s%   € ð ˜4ÐÐB H§L¢L°Ñ$8Ô$8¸FÒ$BÐBr1   r   c                ó–  — d| v sd| v rt          d¦  «        ‚t          | ¦  «        t          z
  rt          d¦  «        ‚|                      d¦  «        r|                      d¦  «        st          d¦  «        ‚t	          t
          |                      d¦  «        ¦  «        }|�&t          |¦  «        }|�|d	k     rt          d
¦  «        ‚d S d S )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 bufferr   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_FIELDSrf   r   r—   rª   )r«   Úrefresh_bufferÚrefresh_buffer_values      r/   Ú_validate_identityr¹   ó   sâ   € Ø�XÐÐ °Ð!8Ð!8ÝÐiÑjÔjÐjå
ˆ8�}„}Õ/Ñ/ð nÝÐlÑmÔmÐmà�<Š<Ð.Ñ/Ô/ð h°x·|²|ÐDXÑ7YÔ7Yð hÝÐfÑgÔgÐgå�& (§,¢,Ð/GÑ"HÔ"HÑIÔI€NØÐ!Ý/°Ñ?Ô?ÐØÐ'Ð+?À!Ò+CÐ+CÝÐfÑgÔgÐgð "Ð!à+CÐ+Cr1   údict[str, str]c                ó<   — t           t          | d         | d         dœS )Nr   r   )Ú
grant_typeÚsubject_token_typer   r   )r   Ú_X509_SUBJECT_TOKEN_TYPEr°   s    r/   Ú_exchange_payloadr¿     s)   € å/Ý6Ø (Ð)?Ô @Ø&Ð';Ô<ð	ð ð r1   ú"httpx2.Client | httpx2.AsyncClientc          	     ó´  — t           j        }t          ¦   «         }|�vt          t	          t
          |¦  «        t           j        t           j        f¦  «        s=t	          t          t           j                 t	          t          |¦  «        j        ¦  «        } |dt          t          | ¦  «        dt          j        d¦  «                             ¦   «         i¬¦  «        S )NÚPOSTr’   g      $@)ÚjsonÚ
extensions)rQ   ÚRequestr   r–   r   r—   r•   r    r   r   re   r¿   ÚTimeoutÚas_dict)r«   rj   Úrequest_typer›   s       r/   Ú_token_exchange_requestrÉ     s«   € õ
 ”>€LÝ'Ñ)Ô)€LØÐ­
µ4½ÀÑ3LÔ3LÍvÌ}Õ^dÔ^pÐNqÑ(rÔ(rÐÝ�D¥¤Ô0µ$µs¸LÑ2IÔ2IÔ2QÑRÔRˆàˆ<ØÝ Ý˜xÑ(Ô(Ø�vœ~¨dÑ3Ô3×;Ò;Ñ=Ô=Ð>ð	ñ ô ð r1   Úresponseúhttpx2.Response | NoneÚattemptr¥   c                ó€  — | ��| j         dvr| j         dk     rd S | j                             d¦  «        }|�Ý	 t          |¦  «        }n”# t          $ r‡ 	 t
          j                             |¦  «        }|�@t          t
          j                             |¦  «        t          j	        ¦   «         z
  ¦  «        nd}n# t          t          t          f$ r d}Y nw xY wY nw xY wt          j        |¦  «        rd|cxk    rt          k    rn n|S |t          k    rd S t          t          t           d|z  z  t"          ¦  «        ¦  «        S )N)i˜  i™  i­  iô  zretry-afteréÿÿÿÿr   r	   )Ústatus_coderC   rf   r¦   Ú
ValueErrorÚemailÚutilsÚparsedate_tzÚ	mktime_tzÚtimer§   ÚOSErrorr¨   r©   r   Úminr   r   )rÊ   rÌ   Úretry_afterÚdelayÚparseds        r/   Ú_retry_delayrÛ     s^  € ØÑØÔ Ð6Ð6¸8Ô;OÐRUÒ;UÐ;UØ�4àÔ&×*Ò*¨=Ñ9Ô9ˆØÐ"ðÝ˜kÑ*Ô*��øÝð ð ð ðÝ"œ[×5Ò5°kÑBÔB�FØRXÐRd�E¥%¤+×"7Ò"7¸Ñ"?Ô"?Å$Ä)Á+Ä+Ñ"MÑNÔNÐNÐjl�E�EøÝ%¥wµ
Ð;ð ð ð Ø�E�E�Eðøøøøøð	øøøõ Œ}˜UÑ#Ô#ð ¨¨UÐ(KÐ(KÒ(KÐ(KÕ6KÒ(KÐ(KÐ(KÐ(KÐ(KØ�ØÕ,Ò,Ð,Ø�tå•Õ(¨1¨g©:Ñ5µÑGÔGÑHÔHÐHs6   ·A Á
CÁA#B6Â5CÂ6CÃCÃCÃCÃCc                óî  — t          t          | dd ¦  «        t          ¦  «        rdS | j        }t          |dd ¦  «        }t          |t          ¦  «        �rg }t          t          t                   |¦  «        D ]Ø}t          |dd ¦  «        }|�t          |t          t          f¦  «        rŒ2t          |dd ¦  «        }t          |dd ¦  «        }t          |dd ¦  «        }t          |¦  «        r( |¦   «         rt          |¦  «        rt          |¦  «        s dS  |¦   «         }	t          |	t          ¦  «        s dS | 
                    ||	f¦  «         ŒÙ|| j        t          <   dS t          |d	|¦  «        }
t          |
dd ¦  «        }t          |
dd ¦  «        }t          |
dd ¦  «        }t          |¦  «        r( |¦   «         rt          |¦  «        rt          |¦  «        sdS  |¦   «         | j        t          <   dS )
NÚ_contentTÚfieldsÚfileÚseekableÚseekÚtellFÚ_stream)r–   ÚgetattrÚbytesÚstreamÚlistr   r—   rd   Úcallabler¥   ÚappendrÄ   Ú _REPLAY_FILE_POSITIONS_EXTENSIONÚ_REPLAY_POSITION_EXTENSION)r2   ræ   rÞ   Úfile_positionsÚfieldrß   rà   rá   râ   ÚpositionÚsources              r/   Ú_is_replayable_requestrð   7  sþ  € Ý•'˜' :¨tÑ4Ô4µeÑ<Ô<ð ØˆtàŒ^€FÝ�V˜X tÑ,Ô,€FÝ�&�$ÑÔñ Ø35ˆÝ�$�vœ,¨Ñ/Ô/ð 	4ð 	4ˆEÝ˜5 &¨$Ñ/Ô/ˆDØˆ|�z¨$µµe°Ñ=Ô=ˆ|ØÝ˜t Z°Ñ6Ô6ˆHÝ˜4 ¨Ñ.Ô.ˆDÝ˜4 ¨Ñ.Ô.ˆDÝ˜HÑ%Ô%ð ¨X¨X©Z¬Zð ½xÈ¹~¼~ð ÕU]Ð^bÑUcÔUcð Ø�u�uØ�t‘v”vˆHÝ˜h­Ñ,Ô,ð Ø�u�uØ×!Ò! 4¨Ð"2Ñ3Ô3Ð3Ð3Ø?MˆÔÕ;Ñ<Øˆtå�V˜Y¨Ñ/Ô/€FÝ�v˜z¨4Ñ0Ô0€HÝ�6˜6 4Ñ(Ô(€DÝ�6˜6 4Ñ(Ô(€DÝ�HÑÔð  X X¡Z¤Zð µxÀ±~´~ð ÍXÐVZÉ^Ì^ð ØˆuØ59°T±V´V€GÔÕ1Ñ2Øˆ4r1   útuple[type[Exception], ...]c                 óÊ   — t          ¦   «         } | €t          j        fS t          t          t
                   t          | dt          j        ¦  «        ¦  «        }t          j        |fS )NÚTransportError)r   rQ   ró   r   r   Ú	Exceptionrä   )r›   Úlegacy_transport_errors     r/   Ú_transport_errorsrö   Y  sS   € Ý'Ñ)Ô)€LØÐÝÔ%Ð'Ð'Ý!¥$¥y¤/µ7¸<ÐIYÕ[aÔ[pÑ3qÔ3qÑrÔrÐÝÔ!Ð#9Ð:Ð:r1   rX   rô   r   c                óú   — t          t          j        d z  t          | dd ¦  «        ¦  «        }|€t	          d¦  «        | ‚t          | t          ¦   «         ¦  «        rt          |¬¦  «        | ‚t          |¬¦  «        | ‚)Nr2   z&X.509 token exchange connection failedrD   )	r   rQ   rÅ   rä   r   r–   r   r   r   )rX   r2   s     r/   Ú_raise_transport_errorrø   a  sy   € Ý•6”> DÑ(­'°%¸ÀDÑ*IÔ*IÑJÔJ€GØ€ÝÐBÑCÔCÈÐNÝ�%Õ+Ñ-Ô-Ñ.Ô.ð :Ý gÐ.Ñ.Ô.°EÐ9Ý
 WÐ
-Ñ
-Ô
-°5Ð8r1   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ˆ xZ	S )Ú_X509WorkloadIdentityAuthÚworkload_identityr   Úmax_retriesr¥   r%   r&   c               óÔ   •— t          |¦  «         t          ¦   «                              |t          ¬¦  «         t	          t          |d¦  «        t          ¦  «        | _        d| _        d S )N)rû   Útoken_exchange_urlr   F)	r¹   Úsuperru   re   r×   ÚmaxÚ_MAX_EXCHANGE_RETRIESÚ_max_exchange_retriesÚ_follow_redirects)rt   rû   rü   Ú	__class__s      €r/   ru   z"_X509WorkloadIdentityAuth.__init__k  s\   ø€ ÝÐ,Ñ-Ô-Ð-Ý‰Œ×ÒÐ+<ÕQiÐÑjÔjÐjÝ%(­¨[¸!Ñ)<Ô)<Õ>SÑ%TÔ%TˆÔ"Ø!&ˆÔÐÐr1   rÊ   rw   údict[str, Any]c                ó’  •— |j         dvr»t          ¦   «                              |¦  «        }|                     ¦   «         }|                     d¦  «        }d|v r<t          |t          ¦  «        r|                     ¦   «         dk    rt          d¦  «        ‚t           
                    |d         ¦  «        €t          d¦  «        ‚|S 	 |j        r|                     ¦   «         nd }n# t          $ r d }Y nw xY wt          |¦  «        r|                     d¦  «        nd }t          |t          ¦  «        rd|ind }t          ||¬¦  «        ‚)	N)i�  i‘  i“  Ú
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_tokenrX   )rÊ   Úbody)rÏ   rÿ   Ú_handle_token_responserÃ   rf   r–   rd   r<   r   Ú_BEARER_ACCESS_TOKENÚ	fullmatchÚcontentrÐ   r
   r   )rt   rÊ   Ú
token_dataÚresponse_bodyr  Úoauth_errorÚ	safe_bodyr  s          €r/   r  z0_X509WorkloadIdentityAuth._handle_token_responseq  sU  ø€ àÔ Ð6Ð6Ý™œ×7Ò7¸ÑAÔAˆJØ$ŸMšM™OœOˆMØ&×*Ò*¨<Ñ8Ô8ˆJØ˜}Ð,Ð,µjÀÍSÑ6QÔ6QÐ,ÐU_×UeÒUeÑUgÔUgÐksÒUsÐUsÝ!Ð"`ÑaÔaÐaÝ#×-Ò-¨j¸Ô.HÑIÔIÐQÝ!Ð"mÑnÔnÐnØÐð	!Ø/7Ô/?ÐI˜HŸMšM™OœO˜OÀTˆMˆMøÝð 	!ð 	!ð 	!Ø ˆMˆMˆMð	!øøøõ 5<¸MÑ4JÔ4JÐT�m×'Ò'¨Ñ0Ô0Ð0ÐPTˆÝ.8¸ÅcÑ.JÔ.JÐT�W˜kÐ*Ð*ÐPTˆ	Ý (°Ð;Ñ;Ô;Ð;s   ÃC% Ã%C4Ã3C4Ú
expires_inr—   r¦   c                óR   — t          |¦  «        }|�|dk    rt          d¦  «        ‚|S )Nr   zKX.509 token exchange response did not include a positive, finite expires_in)rª   r   )rt   r  Úexpires_in_values      r/   Ú_validate_expires_inz._X509WorkloadIdentityAuth._validate_expires_in†  s6   € å+¨JÑ7Ô7ÐØÐ#Ð'7¸1Ò'<Ð'<ÝÐkÑlÔlÐlØÐr1   r2   r3   r^   c                ó    — t          |¦  «        S rm   )rð   r~   s     r/   Ú_can_retry_requestz,_X509WorkloadIdentityAuth._can_retry_request�  s   € å% gÑ.Ô.Ð.r1   c                ó4  — |j                              t          ¦  «        }t          |t          ¦  «        ret          t          t          t          t          f                  |¦  «        D ]0\  }}t          |dd ¦  «        }t          |¦  «        r ||¦  «         Œ1d S |j                              t          ¦  «        }t          |t          ¦  «        sd S t          |j        d|j        ¦  «        }t          |dd ¦  «        }t          |¦  «        r ||¦  «         d S d S )Nrá   rã   )rÄ   rf   rê   r–   rç   r   Útupler—   r¥   rä   rè   rë   ræ   )rt   r2   rì   rß   Úfile_positionrá   rî   rï   s           r/   Ú_prepare_retry_requestz0_X509WorkloadIdentityAuth._prepare_retry_request‘  s	  € à Ô+×/Ò/Õ0PÑQÔQˆÝ�n¥dÑ+Ô+ð 	Ý'+­Dµµv½s°{Ô1CÔ,DÀnÑ'UÔ'Uð (ð (Ñ#��mÝ˜t V¨TÑ2Ô2�Ý˜D‘>”>ð (Ø�D˜Ñ'Ô'Ð'øØˆFàÔ%×)Ò)Õ*DÑEÔEˆÝ˜(¥CÑ(Ô(ð 	ØˆFÝ˜œ¨°G´NÑCÔCˆÝ�v˜v tÑ,Ô,ˆÝ�D‰>Œ>ð 	ØˆD�‰NŒNˆNˆNˆNð	ð 	r1   )rû   r   rü   r¥   r%   r&   )rÊ   rw   r%   r  )r  r—   r%   r¦   ©r2   r3   r%   r^   ©r2   r3   r%   r&   )
r„   r…   r†   ru   r   r  r  r  r  Ú__classcell__©r  s   @r/   rú   rú   j  sÇ   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð 'ð ð<ð <ð <ð <ð <ñ „Xð<ð( ð ð  ð  ñ „Xð ð ð/ð /ð /ñ „Xð/ð ðð ð ñ „Xðð ð ð ð r1   rú   c                  ó@   ‡ — e Zd Zdˆ fd	„Zdd„Zedd„¦   «         Zˆ xZS )ÚSyncX509WorkloadIdentityAuthrû   r   rj   rk   rü   r¥   r%   r&   c               ó\   •— t          ¦   «                              ||¬¦  «         || _        d S ©N)rû   rü   )rÿ   ru   ro   ©rt   rû   rj   rü   r  s       €r/   ru   z%SyncX509WorkloadIdentityAuth.__init__¥  s1   ø€ õ 	‰Œ×ÒÐ+<È+ÐÑVÔVÐVØ'ˆÔÐÐr1   r2   r3   r!   rZ   r[   r\   ræ   r^   Úkwargsr   rw   c               ó„   — t          | j        ||¬¦  «        5 } |j        |fd|i|¤Žcd d d ¦  «         S # 1 swxY w Y   d S ©N)r!   r[   ræ   )rž   ro   Úsend©rt   r2   r!   r[   ræ   r&  r�   s          r/   Úsend_api_requestz-SyncX509WorkloadIdentityAuth.send_api_request«  s¹   € õ !ØÔØ+Ø#9ð
ñ 
ô 
ð 	Hð Ø%�=Ô% gÐGÐG°fÐGÀÐGÐGð	Hð 	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hs   ˜5µ9¼9r  c                ón  — t          | j        dz   ¦  «        D �]}	 t          | j        t	          j        t          ¦  «        d¬¦  «        5 }|                     t          | j	        | j        ¬¦  «        d d¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          ||¦  «        }|| j        k    s|€|                      |¦  «        c S nH# t          ¦   «         $ r4}|| j        k    rt          |¦  «         t          d |¦  «        }Y d }~nd }~ww xY w|�t          j        |¦  «         �Œt!          d¦  «        ‚©Nr   T)r!   r]   )rj   F)ÚauthÚfollow_redirectsz6X.509 token exchange retry loop exhausted unexpectedly)Úranger  rž   ro   rQ   rR   re   r)  rÉ   rû   rÛ   r  rö   rø   rÕ   ÚsleepÚAssertionError©rt   rÌ   r�   rÊ   rÙ   rX   s         r/   Ú_fetch_token_from_exchangez7SyncX509WorkloadIdentityAuth._fetch_token_from_exchange»  s¦  € å˜TÔ7¸!Ñ;Ñ<Ô<ð 	"ñ 	"ˆGðAÝ(ØÔ%Ý$*¤JÕ/GÑ$HÔ$HØ#'ðñ ô ð 	ð #Ø,×1Ò1Ý/°Ô0FÐTXÔTeÐfÑfÔfØ!Ø).ð  2ñ  ô  �Hð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ % X¨wÑ7Ô7�Ø˜dÔ8Ò8Ð8¸E¸MØ×6Ò6°xÑ@Ô@Ð@Ð@Ð@ð =Jøõ %Ñ&Ô&ð 4ð 4ð 4Ø˜dÔ8Ò8Ð8Ý*¨5Ñ1Ô1Ð1Ý$ T¨7Ñ3Ô3������øøøøð4øøøð Ð Ý”
˜5Ñ!Ô!Ð!ùåÐUÑVÔVÐVs;   œ.CÁ
2BÁ<CÂB	ÂCÂB	ÂCÃDÃ*DÄD)rû   r   rj   rk   rü   r¥   r%   r&   ©r2   r3   r!   rZ   r[   r\   ræ   r^   r&  r   r%   rw   ©r%   r  )r„   r…   r†   ru   r+  r   r4  r  r   s   @r/   r"  r"  ¤  s}   ø€ € € € € ð(ð (ð (ð (ð (ð (ðHð Hð Hð Hð  ðWð Wð Wñ „XðWð Wð Wð Wð Wr1   r"  c                  óH   ‡ — e Zd Zdˆ fd	„Zdd„Zedd„¦   «         Zdd„Zˆ xZS )ÚAsyncX509WorkloadIdentityAuthrû   r   rj   r‰   rü   r¥   r%   r&   c               óŒ   •— t          ¦   «                              ||¬¦  «         || _        t          j        ¦   «         | _        d S r$  )rÿ   ru   ro   ÚanyioÚLockÚ_async_lockr%  s       €r/   ru   z&AsyncX509WorkloadIdentityAuth.__init__Ù  s?   ø€ õ 	‰Œ×ÒÐ+<È+ÐÑVÔVÐVØ'ˆÔÝ œ:™<œ<ˆÔÐÐr1   r2   r3   r!   rZ   r[   r\   ræ   r^   r&  r   rw   c             ‹  óº   K  — t          | j        ||¬¦  «        4 ƒd {V —†	 } |j        |fd|i|¤Žƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S r(  )r¡   ro   r)  r*  s          r/   r+  z.AsyncX509WorkloadIdentityAuth.send_api_requestà  sA  è è € õ (ØÔØ+Ø#9ð
ñ 
ô 
ð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð Ø+˜Ô+¨GÐMÐM¸FÐMÀfÐMÐMÐMÐMÐMÐMÐMÐMð	Nð 	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nð 	Nð 	Ns   ¡A
Á

AÁArd   c              ƒ  ób  K  — | j         4 ƒd {V —† | j        5  |                      ¦   «         sL|                      ¦   «         s8t	          t
          | j        ¦  «        cd d d ¦  «         cd d d ¦  «        ƒd {V —† S d d d ¦  «         n# 1 swxY w Y   |                      ¦   «         ƒ d {V —†}|                      |¦  «         | j        5  t	          t
          | j        ¦  «        cd d d ¦  «         cd d d ¦  «        ƒd {V —† S # 1 swxY w Y   	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S rm   )	r<  Ú_lockÚ_token_unusableÚ_needs_refreshr   rd   Ú_cached_tokenÚ _fetch_token_from_exchange_asyncÚ_store_token)rt   r  s     r/   Úget_token_asyncz-AsyncX509WorkloadIdentityAuth.get_token_asyncð  s»  è è € àÔ#ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5Ø”ð 9ð 9Ø×+Ò+Ñ-Ô-ð 9°d×6IÒ6IÑ6KÔ6Kð 9Ý¥ TÔ%7Ñ8Ô8ð9ð 9ð 9ð 9ñ 9ô 9ð 9ð	5ð 	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð  $×DÒDÑFÔFÐFÐFÐFÐFÐFÐFˆJØ×Ò˜jÑ)Ô)Ð)Ø”ð 5ð 5Ý�C Ô!3Ñ4Ô4ð5ð 5ð 5ð 5ñ 5ô 5ð 5ð	5ð 	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s_   �D˜ABÁDÁ9DÂB		Â	DÂB		Â9DÃC?Ã DÃ?D	ÄDÄD	ÄDÄ
D(Ä+D(r  c              ƒ  ó°  K  — t          | j        dz   ¦  «        D �]-}	 t          | j        t	          j        t          ¦  «        d¬¦  «        4 ƒd {V —†	 }|                     t          | j	        | j        ¬¦  «        d d¬¦  «        ƒ d {V —†}d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   t          ||¦  «        }|| j        k    s|€|                      |¦  «        c S nH# t          ¦   «         $ r4}|| j        k    rt          |¦  «         t          d |¦  «        }Y d }~nd }~ww xY w|�t          j        |¦  «        ƒ d {V —† �Œ/t!          d¦  «        ‚r-  )r0  r  r¡   ro   rQ   rR   re   r)  rÉ   rû   rÛ   r  rö   rø   r:  r1  r2  r3  s         r/   rC  z>AsyncX509WorkloadIdentityAuth._fetch_token_from_exchange_asyncü  s9  è è € Ý˜TÔ7¸!Ñ;Ñ<Ô<ð 	)ñ 	)ˆGðAÝ/ØÔ%Ý$*¤JÕ/GÑ$HÔ$HØ#'ðñ ô ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð #Ø%2×%7Ò%7Ý/°Ô0FÐTXÔTeÐfÑfÔfØ!Ø).ð &8ñ &ô &ð  ð  ð  ð  ð  ð  �Hð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ % X¨wÑ7Ô7�Ø˜dÔ8Ò8Ð8¸E¸MØ×6Ò6°xÑ@Ô@Ð@Ð@Ð@ð =Jøõ %Ñ&Ô&ð 4ð 4ð 4Ø˜dÔ8Ò8Ð8Ý*¨5Ñ1Ô1Ð1Ý$ T¨7Ñ3Ô3������øøøøð4øøøð Ð Ý”k %Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ùåÐUÑVÔVÐVs;   ž4C#Á8BÂC#Â
B'	Â'C#Â*B'	Â+C#Ã#D(Ã4*D#Ä#D()rû   r   rj   r‰   rü   r¥   r%   r&   r5  )r%   rd   r6  )	r„   r…   r†   ru   r+  r   rE  rC  r  r   s   @r/   r8  r8  Ø  s‘   ø€ € € € € ð(ð (ð (ð (ð (ð (ðNð Nð Nð Nð  ð	5ð 	5ð 	5ñ „Xð	5ðWð Wð Wð Wð Wð Wð Wð Wr1   r8  )r"   r#   r!   r$   r%   r&   r  )
r2   r3   r!   rZ   r[   r\   r]   r^   r%   r&   )
rj   rk   r!   rZ   r[   r\   r]   r^   r%   rk   )
rj   r‰   r!   rZ   r[   r\   r]   r^   r%   r‰   )r¢   r—   r%   r£   )r«   r¬   r%   r­   )r«   r   r%   r&   )r«   r   r%   rº   )r«   r   rj   rÀ   r%   r3   )rÊ   rË   rÌ   r¥   r%   r£   r  )r%   rñ   )rX   rô   r%   r   )CÚ
__future__r   Úrer¨   rÕ   Úemail.utilsrÑ   Útypingr   r   r   Útyping_extensionsr   r   r:  rQ   Ú_utilsr
   Ú_httpx2r   r   r   Ú	_workloadr   r   r   r   Ú
_constantsr   r   r   Ú_exceptionsr   r   r   r   ÚMTLS_API_BASE_URLre   r¾   r  rë   rê   r¶   Úcompiler  r0   rE   rY   rg   ÚBaseTransportri   ÚAsyncBaseTransportrˆ   rž   r¡   rª   r±   r¹   r¿   rÉ   rÛ   rð   rö   rø   rú   r"  r8  rH   r1   r/   ú<module>rU     sü  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø €€€à Ð Ð Ð Ð Ð Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sðð ð ð ð ð ð ð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ Và4Ð ØEÐ ØDÐ ØÐ Ø:Ð Ø#FÐ  ØkÐkÐkÐ Ø!�r”zÐ"9Ñ:Ô:Ð ð Z^ð að að að að að aðjð jð jð jð_ð _ð _ð _ð2oð oð oð oð2ð ð ð ð  6Ô#7ñ ô ð ð@ð ð ð ð  FÔ$=ñ ô ð ðH *.Ø ðð ð ð ð ð ð@ *.Ø ðð ð ð ð ð ð83ð 3ð 3ð 3ðCð Cð Cð Cðhð hð hð hð"ð ð ð ðð ð ð ð$Ið Ið Ið Ið0ð ð ð ðD;ð ;ð ;ð ;ð9ð 9ð 9ð 9ð7ð 7ð 7ð 7ð 7Ð 5Ð6JÔ Kñ 7ô 7ð 7ðt1Wð 1Wð 1Wð 1Wð 1WÐ#<ñ 1Wô 1Wð 1Wðh=Wð =Wð =Wð =Wð =WÐ$=ñ =Wô =Wð =Wð =Wð =Wr1   