
    4RjSH                    D   d dl mZ d dlZd dlmZmZmZmZmZm	Z	 d dl
mZmZ d dlZddlmZ ddlmZmZ dd	lmZmZ dd
lmZmZ ddlmZmZmZ ddlmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z& ddlm'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 erd dl4m5Z6 dZ7 edeejp                  ejr                  f         Z: edee%e   e&e   f         Z; G d de-e:e;f         Z< G d de<ejp                  e%e   f   e.      Z= G d de<ejr                  e&e   f   e/      Z>d dZ?y)!    )annotationsN)TYPE_CHECKINGAnyUnionMappingTypeVarSequence)Selfoverride   )_exceptions   )	load_authrefresh_auth)Beta	AsyncBeta)	NOT_GIVENNotGiven)is_dictasyncifyis_given)
model_copytyped_cached_property)FinalRequestOptions)__version__)StreamAsyncStream)AnthropicErrorAPIStatusError)MiddlewareInput)DEFAULT_MAX_RETRIES
BaseClientSyncAPIClientAsyncAPIClientmerge_headers)MessagesAsyncMessages)Credentialszvertex-2023-10-16_HttpxClientT)bound_DefaultStreamTc                  R    e Zd Zedd       Zedd       Ze	 	 	 	 	 	 	 	 dd       Zy)BaseVertexClientc                    t        d      )Nzregion not set)RuntimeError)selfs    d/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/anthropic/lib/vertex/_client.pyregionzBaseVertexClient.region(   s    +,,    c                J    t         j                  j                  d      }|r|S y )NANTHROPIC_VERTEX_PROJECT_ID)osenvirongetr0   
project_ids     r1   r:   zBaseVertexClient.project_id,   s!    ZZ^^$AB
r3   c               *   |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j
                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   d	k(  rt        j                  |||      S |j                   d
k(  rt        j                  |||      S |j                   dk\  rt        j                  |||      S t        |||      S )Ni  )responsebodyi  i  i  i  i  i  i  i  i  )status_coder   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorUnprocessableEntityErrorRateLimitErrorServiceUnavailableErrorDeadlineExceededErrorInternalServerErrorr   )r0   err_msgr=   r<   s       r1   _make_status_errorz#BaseVertexClient._make_status_error4   sx    3&..wPTUU3&227XTXYY3&44WxVZ[[3&,,WxdSS3&,,WxdSS3&77(Y]^^3&--gtTT3&66wX\]]3&44WxVZ[[3&227XTXYYgtDDr3   Nreturnstr)rL   
str | None)rI   rM   r=   objectr<   zhttpx.ResponserL   r   )__name__
__module____qualname__r   r2   r:   r   rJ    r3   r1   r-   r-   '   sh    - -   $E$E 	$E
 !$E 
$E $Er3   r-   c                      e Zd ZU ded<   ded<   eedddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZedd	       Zedd
       Z	ddZ
eedddededdddei d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZddZ xZS )AnthropicVertexr&   messagesr   betaNFr2   r:   access_tokencredentialsbase_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client
middleware_strict_response_validationc                  t        |      s$t        j                  j                  dt              }t        |      st        d      |?t        j                  j                  d      }||dk(  rd}n|dk(  rd}n|dk(  rd	}nd
| d}t        |   t        |||||	|
||	       t        |      r|| _	        || _
        || _        || _        t        |       | _        t        |       | _        y NCLOUD_ML_REGIONzNo region was given. The client should be instantiated with the `region` argument or the `CLOUD_ML_REGION` environment variable should be set.ANTHROPIC_VERTEX_BASE_URLglobalz$https://aiplatform.googleapis.com/v1usz+https://aiplatform.us.rep.googleapis.com/v1euz+https://aiplatform.eu.rep.googleapis.com/v1zhttps://z-aiplatform.googleapis.com/v1)	versionr[   r\   r]   custom_headerscustom_queryr`   ra   rb   )r   r6   r7   r8   r   
ValueErrorsuper__init__r   r:   r2   rY   rZ   r&   rV   r   rW   r0   r2   r:   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   	__class__s                r1   ro   zAnthropicVertex.__init__`   s    " ZZ^^$5yAF a  zz~~&ABHX%EHt^LHt^LH!)&1NOH#*&#!(C 	 
	
 J(DO(& J	r3   c                F    t        || j                  | j                        S N)r:   r2   _prepare_optionsr:   r2   r0   optionss     r1   ru   z AnthropicVertex._prepare_options   s    DOODKKXXr3   c                |    |j                   j                  d      ry d| j                          |j                   d<   y NAuthorizationzBearer headersr8   _ensure_access_tokenr0   requests     r1   _prepare_requestz AnthropicVertex._prepare_request   s6    ??/-4T5N5N5P4Q+R(r3   c                   | j                   | j                   S | j                  s1t        | j                        \  | _        }| j                  s|| _        | j                  j                  s| j                  j
                  st        | j                         | j                  j
                  st        d      t        | j                  j
                  t              sJ | j                  j
                  S N)r:   z0Could not resolve API token from the environment)
rY   rZ   r   r:   expiredtokenr   r/   
isinstancerM   r9   s     r1   r}   z$AnthropicVertex._ensure_access_token   s    ($$$+4+P(Dj??",##4+;+;+A+A))*%%QRR$**00#666%%%r3   r2   r:   rY   rZ   r[   r\   r`   r]   r^   set_default_headersr_   set_default_queryra   _extra_kwargsc               h   |	|
t        d      ||t        d      | j                  }|	t        ||	      }n|
|
}| j                  }|i ||}n||}|xs | j                  } | j
                  dt        |      r|n| j                  t        |      r|n| j                  xs t        |xs | j                  |xs | j                  |xs | j                  t        |t              r| j                  n||t        |      r|n| j                   ||t        |t              r| j"                  n|d|S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        zPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusive)r2   r:   rY   rZ   r[   r\   r`   r]   r^   r_   ra   rS   rm   _custom_headersr%   _custom_query_clientrq   r   r2   r:   r   rY   rZ   r[   r   r   r\   r]   _middlewarer0   r2   r:   rY   rZ   r[   r\   r`   r]   r^   r   r_   r   ra   r   r|   paramss                    r1   copyzAnthropicVertex.copy   G   * &+>+Jopp$):)Fkll&&&#G_=G ,)G##$00-0F*&F!1T\\t~~ 
%f-64;;%-j%9zt?[R[%:):):#7t'7'7.$.w$ADLLw#'/'<$BRBR# +5j(+Kt''Q[
 
 	
r3   c                B    | j                  g | j                  |      S zA new client with the given middleware appended after this client's middleware.

        Convenience for applying extra middleware to a single request:

        ```py
        client.with_middleware(my_middleware).messages.create(...)
        ```
        )ra   r   r   r0   ra   s     r1   with_middlewarezAnthropicVertex.with_middleware   &     yy$Dd&6&6$D$DyEEr3   )r2   str | NotGivenr:   r   rY   rN   rZ   GoogleCredentials | Noner[   str | httpx.URL | Noner\   'float | httpx.Timeout | None | NotGivenr]   intr^   Mapping[str, str] | Noner_   Mapping[str, object] | Noner`   httpx.Client | Nonera    Sequence[MiddlewareInput] | Nonerb   boolrL   Nonerw   r   rL   r   r   zhttpx.RequestrL   r   rK   )r2   r   r:   r   rY   rN   rZ   r   r[   r   r\   r   r`   r   r]   int | NotGivenr^   r   r   r   r_   r   r   r   ra   +Sequence[MiddlewareInput] | None | NotGivenr   Mapping[str, Any]rL   r
   ra   r    rL   r
   rP   rQ   rR   __annotations__r   r!   ro   r   ru   r   r}   r   with_optionsr   __classcell__rq   s   @r1   rU   rU   \   s   
J
 "+%.#'04+/;D.4859+/7;,18 8 #	8
 !8 .8 )8 98 8 28 38 )8 58 &*8  
!8t Y Y S S&* "+%.#'04+/;D+/&/488<599=BK+-!6
 6
 #	6

 !6
 .6
 )6
 96
 )6
 $6
 26
 66
 36
 76
 @6
  )!6
" 
#6
t L	Fr3   rU   c                      e Zd ZU ded<   ded<   eedddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZedd	       Zedd
       Z	ddZ
eedddededdddei d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZddZ xZS )AsyncAnthropicVertexr'   rV   r   rW   NFrX   c                  t        |      s$t        j                  j                  dt              }t        |      st        d      |?t        j                  j                  d      }||dk(  rd}n|dk(  rd}n|dk(  rd	}nd
| d}t        |   t        |||||	|
||	       t        |      r|| _	        || _
        || _        || _        t        |       | _        t        |       | _        y rd   )r   r6   r7   r8   r   rm   rn   ro   r   r:   r2   rY   rZ   r'   rV   r   rW   rp   s                r1   ro   zAsyncAnthropicVertex.__init__  s    " ZZ^^$5yAF a  zz~~&ABHX%EHt^LHt^LH!)&1NOH#*&#!(C 	 
	
 J(DO(&%d+dO	r3   c                N   K   t        || j                  | j                        S wrs   rt   rv   s     r1   ru   z%AsyncAnthropicVertex._prepare_options>  s     DOODKKXXs   #%c                   K   |j                   j                  d      ry d| j                          d {    |j                   d<   y 7 wry   r{   r~   s     r1   r   z%AsyncAnthropicVertex._prepare_requestB  s@     ??/-44;T;T;V5V4W+X(5Vs   1A
AA
c                @  K   | j                   | j                   S | j                  sC t        t              | j                         d {   \  | _        }| j                  s|| _        | j                  j
                  s| j                  j                  s' t        t              | j                         d {    | j                  j                  st        d      t        | j                  j                  t              sJ | j                  j                  S 7 7 cwr   )rY   rZ   r   r   r:   r   r   r   r/   r   rM   r9   s     r1   r}   z)AsyncAnthropicVertex._ensure_access_tokenJ  s     ($$$1D)1DPTP_P_1`+`(Dj??",##4+;+;+A+A((<()9)9:::%%QRR$**00#666%%% ,a
 ;s&   AD
DA-D8D9A"DDr   c               h   |	|
t        d      ||t        d      | j                  }|	t        ||	      }n|
|
}| j                  }|i ||}n||}|xs | j                  } | j
                  dt        |      r|n| j                  t        |      r|n| j                  xs t        |xs | j                  |xs | j                  |xs | j                  t        |t              r| j                  n||t        |      r|n| j                   ||t        |t              r| j"                  n|d|S r   r   r   s                    r1   r   zAsyncAnthropicVertex.copy\  r   r3   c                B    | j                  g | j                  |      S r   r   r   s     r1   r   z$AsyncAnthropicVertex.with_middleware  r   r3   )r2   r   r:   r   rY   rN   rZ   r   r[   r   r\   r   r]   r   r^   r   r_   r   r`   httpx.AsyncClient | Nonera   r   rb   r   rL   r   r   r   rK   )r2   r   r:   r   rY   rN   rZ   r   r[   r   r\   r   r`   r   r]   r   r^   r   r   r   r_   r   r   r   ra   r   r   r   rL   r
   r   r   r   s   @r1   r   r      s   
O
 "+%.#'04+/;D.4859047;,18$ 8$ #	8$
 !8$ .8$ )8$ 98$ 8$ 28$ 38$ .8$ 58$ &*8$  
!8$t Y Y Y Y&* "+%.#'04+/;D04&/488<599=BK+-!6
 6
 #	6

 !6
 .6
 )6
 96
 .6
 $6
 26
 66
 36
 76
 @6
  )!6
" 
#6
t L	Fr3   r   c               z   t        | d      }t        |j                        r |j                  j                  dt               |j
                  dv r|j                  dk(  r}|t        d      t        |j                        st        d      |j                  j                  d      }|j                  j                  d	d
      }|rdnd}d| d| d| d| |_        |j
                  dv r*|j                  dk(  r|t        d      d| d| d|_        |j
                  j                  d      rt        d      |S )NT)deepanthropic_version>   /v1/messages/v1/messages?beta=truepostzNo project_id was given and it could not be resolved from credentials. The client should be instantiated with the `project_id` argument or the `ANTHROPIC_VERTEX_PROJECT_ID` environment variable should be set.z;Expected json data to be a dictionary for post /v1/messagesmodelstreamFstreamRawPredict
rawPredictz
/projects/z/locations/z/publishers/anthropic/models/:>   /v1/messages/count_tokens#/v1/messages/count_tokens?beta=truez4/publishers/anthropic/models/count-tokens:rawPredictz/v1/messages/batchesz7The Batch API is not supported in the Vertex client yet)r   r   	json_data
setdefaultDEFAULT_VERSIONurlmethodr/   popr8   
startswithr   )input_optionsr:   r2   rw   r   r   	specifiers          r1   ru   ru     sQ   T2Gw  !$$%8/J{{@@W^^W]E] c  w(()\]]!!%%g.""&&x7*0&l	":,k&A^_d^eefgpfqr{{ZZ_f_m_mqw_w c  #:,k&Auv{{45VWWNr3   )r   r   r:   rN   r2   rM   rL   r   )@
__future__r   r6   typingr   r   r   r   r   r	   typing_extensionsr
   r   httpx r   _authr   r   _betar   r   _typesr   r   _utilsr   r   r   _compatr   r   _modelsr   _versionr   
_streamingr   r   r   r   r   r    _base_clientr!   r"   r#   r$   r%   resources.messagesr&   r'   google.auth.credentialsr(   GoogleCredentialsr   ClientAsyncClientr)   r+   r-   rU   r   ru   rS   r3   r1   <module>r      s   " 	 H H ,   * " ) 1 1 8 * # - 9 *  :H &uU\\5CTCT5T/UV+5kRUFV9V3WX2Ez-"@A 2EjaF&u||VC['@A= aFHaF+E,=,={3?O,OPR` aFH r3   