Ë
    /æjÂ'  ã                  ó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	m
Z
mZ d dlmZmZ d dlm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 dd	lmZmZ erd d
lmZ neZe	g ee
e   z  f   Z dZ! ed¬«       G d„ d«      «       Z"ddddddœ	 	 	 	 	 	 	 	 	 	 	 dd„Z#ddgZ$y)é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚCallableÚ	AwaitableÚcast)ÚfieldÚ	dataclass)Úoverrideé   )ÚFinalRequestOptions)Ú	_ProviderÚ_create_providerÚ_ProviderRuntime)ÚOpenAIErrorÚAPITimeoutError)ÚCredentials)z.https://www.googleapis.com/auth/cloud-platformT)Úfrozenc                  óv   — e Zd ZU ded<    ed¬«      Zded<    ed¬«      Zded<    ed	d¬
«      Zded<   dd„Zy)Ú_VertexDefinitionz
httpx2.URLÚbase_urlF)ÚreprúVertexTokenProvider | NoneÚtoken_providerúCredentials | NoneÚcredentialsÚvertex)ÚdefaultÚinitÚstrÚnamec                óÒ   ‡ ‡‡‡‡‡— t        j                  «       Šd Šdˆˆˆ fd„Šd	d„}d
ˆ fd„Šdd„Šd
ˆˆˆ ˆfd„}d
ˆˆˆ ˆfd„}t        ‰ j                  ‰ j                  |||¬«      S )Nc                ó.  •‡ ‡‡‡— ‰ j                   j                  di «      Š‰j                  d«      }|€‰j                  «       n‰j                  t        d|«      ¬«      }|st	        ‰ ¬«      ‚	 	 dd lŠdd l}dd l}ddlm	Š ddl
m} ‰j                  «       5 } G ˆˆˆ ˆfd	„d
|«      } ||«      }‰€œ‰j                  €@t!        dt!        t"        |j$                  «      j&                  «      }	 |	t(        |¬«      \  Š}
nPt!        dt!        t"        |j$                  j                  «      j*                  «      } |‰j                  t(        ¬«      Ši }‰j-                  |‰ j.                  t1        ‰ j2                  «      |«       |cd d d «       ‰j5                  «        S # t        $ r}t        d«      |‚d }~ww xY w# 1 sw Y   nxY wn(# t        t        f$ r ‚ t6        $ r t        d«      d ‚w xY w	 ‰j5                  «        y # ‰j5                  «        w xY w)NÚtimeoutÚpoolr   )r$   ©Úrequest)ÚTransportError)ÚRequestzKInstall openai[vertex] to use Google credentials, or supply token_provider.c                  ó4   •‡ — e Zd Zedˆˆ ˆˆˆfd„«       Zˆ xZS )úH_VertexDefinition.configure.<locals>.adc_headers.<locals>.BoundedRequestc                óø   •— ‰j                  d«      ‰j                  d«      f|d<   	 t        ‰| �  |i |¤ŽS # ‰$ r=}t        |j                  ‰j
                  j                  «      rt        ‰¬«      d ‚‚ d }~ww xY w)NÚconnectÚreadr$   r&   )ÚgetÚsuperÚ__call__Ú
isinstanceÚ	__cause__Ú
exceptionsÚTimeoutr   )	ÚselfÚargsÚkwargsÚexcr(   Ú	__class__Úlimitsr'   Úrequestss	       €€€€€úZ/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/openai/providers/vertex.pyr1   zQ_VertexDefinition.configure.<locals>.adc_headers.<locals>.BoundedRequest.__call__?   s|   ø€ ð 28·±¸IÓ1FÈÏ
É
ÐSYÓHZÐ0[˜F 9Ñ-ð&Ü',¡wÑ'7¸Ð'HÀÑ'HÐ HøØ#1ò &Ü#-¨c¯m©m¸X×=PÑ=P×=XÑ=XÔ#YÜ*9À'Ô*JÐPTÐ$TØ %ûð&ús   ¨7 ·A9¼8A4Á4A9)r7   r   r8   r   Úreturnr   )Ú__name__Ú
__module__Ú__qualname__r   r1   Ú__classcell__)r:   r(   r;   r'   r<   s   @€€€€r=   ÚBoundedRequestr+   >   s   ù„ Ø!÷&ð &ó "ô&ó    rC   z-Callable[..., tuple[Credentials, str | None]])Úscopesr'   zCallable[..., Credentials])rE   zUVertex Google authentication failed. Check ADC, project access and credential expiry.)Ú
extensionsr/   ÚacquireÚmaxr   r<   Úgoogle.authÚgoogle.auth.credentialsÚgoogle.auth.exceptionsr(   Úgoogle.auth.transport.requestsr)   ÚImportErrorr   ÚSessionr   r   r   Úauthr   Ú_CLOUD_PLATFORM_SCOPESÚwith_scopes_if_requiredÚbefore_requestÚmethodr    ÚurlÚreleaseÚ	Exception)r'   Úpool_timeoutÚacquiredÚgoogler)   r9   ÚsessionrC   Úbounded_transportÚdiscoverÚ_Úscope_credentialsÚheadersr(   r;   r<   r   Úlockr6   s   `            @@@€€€r=   Úadc_headersz0_VertexDefinition.configure.<locals>.adc_headers)   sü  ü€ à×'Ñ'×+Ñ+¨I°rÓ:ˆFØ!Ÿ:™: fÓ-ˆLØ)5Ð)=�t—|‘|”~À4Ç<Á<ÔX[Ð\]Ð_kÓXlÀ<ÓCmˆHÙÜ%¨gÔ6Ð6ð2ð	Û#Û&Û2ÝEÝFð ×%Ñ%Ó'ð #¨7÷
&ñ 
&¨ô 
&ñ )7°wÓ(?Ð%Ø"Ð*Ø×+Ñ+Ð3ä'+Ø OÔQUÔVYÐ[a×[fÑ[fÓQg×QoÑQoó(˜Hñ .6Ô=SÐ]nÔ-o™N˜K©ä04Ø <¼dÄ3ÈÏÉ×H_ÑH_Ó>`×>xÑ>xó1Ð-ñ +<¸D×<LÑ<LÔUkÔ*l˜KØ.0�GØ×.Ñ.Ð/@À'Ç.Á.ÔRUÐV]×VaÑVaÓRbÐdkÔlØ"÷;#ð #ðL —‘•øôW #ò Ü%Øeóàðûðú÷
#ð #úð #øô<  ¤Ð1ò ØÜò ä!ØkóàððúðA#ðL —‘•ø�—‘•úsU   Á1F Â	G ÂC+F;Æ	G Æ	F8Æ'F3Æ3F8Æ8G Æ;GÇ G ÇH Ç%G-Ç-H ÈHc                ó   — d| _         | S )NF)Úfollow_redirects)Úoptionss    r=   Ú	transformz._VertexDefinition.configure.<locals>.transformd   s   € à',ˆGÔ$ØˆNrD   c                ój  •‡ — ‰ j                   j                  ‰ j                   j                  ‰ j                   j                  f}‰j                  j                  ‰j                  j                  ‰j                  j                  f}||k7  rt        d«      ‚t        ˆ fd„dD «       «      rt        d«      ‚y )NzBRefusing to send Vertex credentials outside the configured origin.c              3  ó:   •K  — | ]  }|‰j                   v –— Œ y ­w)N)r_   )Ú.0Úheaderr'   s     €r=   ú	<genexpr>z?_VertexDefinition.configure.<locals>.prepare.<locals>.<genexpr>n   s"   øè ø€ ò àð ˜'Ÿ/™/Ô)ñùs   ƒ)Úauthorizationzapi-keyzopenai-organizationzopenai-projectzkVertex owns authentication; remove OpenAI project/organization and custom Authorization or api-key headers.)rT   ÚschemeÚhostÚportr   r   Úany)r'   ÚoriginÚ
configuredr6   s   `  €r=   Úpreparez,_VertexDefinition.configure.<locals>.preparei   sš   ù€ Ø—k‘k×(Ñ(¨'¯+©+×*:Ñ*:¸G¿K¹K×<LÑ<LÐMˆFØŸ-™-×.Ñ.°·±×0BÑ0BÀDÇMÁM×DVÑDVÐWˆJØ˜Ò#Ü!Ð"fÓgÐgÜó àcôô ô "ð Bóð ð	rD   c                ó¢   — t        |t        «      r"|j                  «       rt        d„ |D «       «      rt	        d«      ‚d|› �| j
                  d<   y )Nc              3  óX   K  — | ]"  }t        |«      d k  xs t        |«      dkD  –— Œ$ y­w)é!   é~   N)Úord)rh   Úcs     r=   rj   zA_VertexDefinition.configure.<locals>.set_token.<locals>.<genexpr>w   s.   è ø€ ÒEqÐfgÄcÈ!ÃfÈrÁkÒFaÔUXÐYZÓU[Ð^aÑUaÓFaÑEqùs   ‚(*zVVertex token provider must return a nonempty bearer token suitable for an HTTP header.zBearer ÚAuthorization)r2   r    Ústripro   r   r_   )r'   Útokens     r=   Ú	set_tokenz._VertexDefinition.configure.<locals>.set_tokenv   sI   € Ü˜e¤SÔ)°·±´Ä#ÑEqÐkpÔEqÔBqÜ!Ølóð ð 29¸¸Ð/@ˆG�O‰O˜OÒ,rD   c                ób  •—  ‰| «       ‰j                   €"| j                  j                   ‰| «      «       y 	 ‰j                  «       }t        j                  |«      r0t        j                  |«      r|j                  «        t	        d«      ‚ ‰| |«       y # t        $ r t	        d«      d ‚w xY w)NúVertex token provider failed.z4Use AsyncOpenAI with an async Vertex token provider.)	r   r_   ÚupdaterV   r   ÚinspectÚisawaitableÚiscoroutineÚclose)r'   r{   ra   rr   r6   r|   s     €€€€r=   Úprepare_syncz1_VertexDefinition.configure.<locals>.prepare_sync}   s    ø€ Ù�GÔØ×"Ñ"Ð*Ø—‘×&Ñ&¡{°7Ó';Õ<ðQØ ×/Ñ/Ó1�Eô ×&Ñ& uÔ-Ü×*Ñ*¨5Ô1ØŸ™œÜ%Ð&\Ó]Ð]Ù˜' 5Õ)øô !ò QÜ%Ð&EÓFÈDÐPðQús   ¹B ÂB.c              “  óª  •K  —  ‰| «       	 ‰j                   €Ft        j                  j                  ‰| d¬«      ƒ d {  –—† }| j                  j                  |«       y t        j                  | j                  j                  di «      j                  d«      «      5 }‰j                  «       }t        j                  |«      r
|ƒ d {  –—† }t        j                  «       |j                  k\  rt        | ¬«      ‚ ‰| |«       d d d «       y 7 ŒÍ7 ŒE# 1 sw Y   y xY w# t        $ r t        | ¬«      d ‚t        $ r ‚ t         $ r t        d«      d ‚w xY w­w)NT)Úabandon_on_cancelr$   r.   r&   r~   )r   ÚanyioÚ	to_threadÚrun_syncr_   r   Ú
fail_afterrF   r/   r€   r�   Úcurrent_timeÚdeadliner   ÚTimeoutErrorr   rV   )r'   r_   Úscoper{   ra   rr   r6   r|   s       €€€€r=   Úprepare_asyncz2_VertexDefinition.configure.<locals>.prepare_asyncŒ   s6  øè ø€ Ù�GÔðMØ×&Ñ&Ð.Ü$)§O¡O×$<Ñ$<¸[È'ÐeiÐ$<Ó$j×j�GØ—O‘O×*Ñ*¨7Õ3ä×)Ñ)¨'×*<Ñ*<×*@Ñ*@ÀÈBÓ*O×*SÑ*SÐTZÓ*[Ó\ð 2Ð`eØ $× 3Ñ 3Ó 5˜Ü"×.Ñ.¨uÔ5Ø*/§K˜Eä ×-Ñ-Ó/°5·>±>ÒAÜ"1¸'Ô"BÐBÙ! '¨5Ô1÷2ð 2ð køð %0ø÷2ð 2ûô  ò AÜ%¨gÔ6¸DÐ@Üò ØÜò MÜ!Ð"AÓBÈÐLðMüsn   ƒ	E�1D ¾D¿D ÁEÁ>D Â+DÃDÃ	:DÄD ÄEÄD ÄDÄDÄD ÄEÄD Ä4EÅE)r!   r   Útransform_requestÚprepare_requestÚprepare_async_request)r'   úhttpx2.Requestr>   zdict[str, str])rd   r   r>   r   )r'   r“   r>   ÚNone)r'   r“   r{   Úobjectr>   r”   )Ú	threadingÚLockr   r!   r   )	r6   re   r„   r�   ra   r   r`   rr   r|   s	   `   @@@@@r=   Ú	configurez_VertexDefinition.configure$   sf   ý€ ä�~‰~ÓˆØ*.ˆ÷9	óv	õ
	ó	A÷	*ð 	*÷	Mð 	Mô,  Ø—‘Ø—]‘]Ø'Ø(Ø"/ô
ð 	
rD   N)r>   r   )	r?   r@   rA   Ú__annotations__r	   r   r   r!   r˜   © rD   r=   r   r      s?   … àÓÙ16¸EÔ1B€NÐ.ÓBÙ&+°Ô&7€KÐ#Ó7Ù˜h¨UÔ3€Dˆ#Ó3ôD
rD   r   )ÚprojectÚlocationr   r   r   c                ó  — |�|�t        d«      ‚|€¤| xs t        j                  j                  d«      } |xs t        j                  j                  d«      }| rt	        j
                  d| «      st        d«      ‚|rt	        j
                  d|«      st        d«      ‚|dk(  rd	n|› d
�}d|› d| › d|› d�}t        j                  |«      }|j                  dvs<|j                  r0|j                  s$|j                  s|j                  s|j                  rt        d«      ‚|j                  j                  d«      }|j                  dk7  r!|dk(  s|j                  d«      rt        d«      ‚t!        t#        |||¬«      «      S )ac  Configure normal OpenAI Responses calls for Vertex. ADC is lazy and requires openai[vertex].

    Project and location fall back to GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION.
    An explicit base_url is the complete API root before /responses and takes precedence.
    On AsyncOpenAI, token_provider runs on the event loop and must not block it.
    z/Set only one of credentials and token_provider.ÚGOOGLE_CLOUD_PROJECTÚGOOGLE_CLOUD_LOCATIONz[a-zA-Z0-9_-][a-zA-Z0-9_.:-]*z?Vertex requires a project ID (project or GOOGLE_CLOUD_PROJECT).z
[a-z0-9-]+z?Vertex requires a location (location or GOOGLE_CLOUD_LOCATION).Úglobalzaiplatform.googleapis.comz-aiplatform.googleapis.comzhttps://z/v1/projects/z/locations/z/publishers/openai/v1)ÚhttpÚhttpszSVertex base_url must be an HTTP(S) API root without credentials, query or fragment.ú.r¢   zgoogleapis.comz.googleapis.comz&Google Vertex endpoints require HTTPS.)r   r   r   )r   ÚosÚenvironr/   ÚreÚ	fullmatchÚhttpx2ÚURLrl   rm   ÚusernameÚpasswordÚqueryÚfragmentÚrstripÚendswithr   r   )r›   rœ   r   r   r   rm   rT   s          r=   r   r   «   s[  € ð Ð! kÐ&=ÜÐKÓLÐLØÐØÒCœRŸZ™ZŸ^™^Ð,BÓCˆØÒFœrŸz™zŸ~™~Ð.EÓFˆáœbŸl™lÐ+KÈWÔUÜÐ_Ó`Ð`ÙœrŸ|™|¨M¸8ÔDÜÐ_Ó`Ð`Ø.6¸(Ò.BÑ*È8È*ÐTnÐHoˆØ˜d˜V =°°	¸ÀXÀJÐNcÐdˆÜ
�*‰*�XÓ
€CØ
‡z�zÐ*Ñ*°#·(²(¸c¿lºlÈcÏlÊlÐ^a×^gÒ^gÐkn×kwÒkwÜÐoÓpÐpØ�8‰8�?‰?˜3Ó€DØ
‡z�z�WÒ $Ð*:Ò":¸d¿m¹mÐL]Ô>^ÜÐBÓCÐCÜÔ-°sÈ>ÐgrÔsÓtÐtrD   r   ÚVertexTokenProvider)r›   ú
str | Nonerœ   r±   r   zstr | httpx2.URL | Noner   r   r   r   r>   r   )%Ú
__future__r   r¤   r¦   r€   r–   Útypingr   r   r   r   r   Údataclassesr	   r
   Útyping_extensionsr   r‡   r¨   Úanyio.to_threadÚ_modelsr   Ú	_providerr   r   r   Ú_exceptionsr   r   rJ   r   r    r°   rP   r   r   Ú__all__rš   rD   r=   ú<module>r»      sè   ðÝ "ã 	Û 	Û Û ß @Õ @ß (Ý &ã Û Û å )ß EÑ Eß 6áÞ3ð €Kà˜r 3¨°3©Ñ#7Ð7Ñ8Ð ØLÐ ñ �$Ô÷J
ð J
ó ðJ
ð^ ØØ(,Ø15Ø&*ñ uàð uð ð uð &ð	 uð
 /ð uð $ð uð ó uðF Ð*Ð
+�rD   