
    gI                    H   d dl m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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mZ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,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 erd dl6m7Z8 dZ9 edeejt                  ejv                  f         Z< edee'e   e(e   f         Z= G d de.e<e=f         Z> G d de>ejt                  e'e   f   e/      Z? G d de>ejv                  e(e   f   e0      Z@ddZAy)     )annotationsN)TYPE_CHECKINGAnyUnionMappingTypeVar)Selfoverride   )_exceptions   )	load_authrefresh_auth)Beta	AsyncBeta)	NOT_GIVENNotGiven	TransportProxiesTypesAsyncTransport)is_dictasyncifyis_given)
model_copytyped_cached_property)FinalRequestOptions)__version__)StreamAsyncStream)AnthropicErrorAPIStatusError)DEFAULT_MAX_RETRIESDEFAULT_CONNECTION_LIMITS
BaseClientSyncAPIClientAsyncAPIClientSyncHttpxClientWrapperAsyncHttpxClientWrapper)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    Q/var/www/openai/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r3   
project_ids     r4   r=   zBaseVertexClient.project_id-   s!    ZZ^^$AB
r6   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 t        |||      S )
Ni  )responsebodyi  i  i  i  i  i  i  )status_coder   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorUnprocessableEntityErrorRateLimitErrorInternalServerErrorr!   )r3   err_msgr@   r?   s       r4   _make_status_errorz#BaseVertexClient._make_status_error5   s0    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&227XTXYYgtDDr6   Nreturnstr)rM   
str | None)rJ   rN   r@   objectr?   zhttpx.ResponserM   r!   )__name__
__module____qualname__r   r5   r=   r
   rK    r6   r4   r0   r0   (   sh    - -   EE 	E
 !E 
E Er6   r0   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d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZedd	       Zedd
       Z	ddZ
eedddeddeddddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZ xZS )AnthropicVertexr)   messagesr   betaNFr5   r=   access_tokencredentialsbase_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client	transportproxiesconnection_pool_limits_strict_response_validationc                  t        |      s$t        j                  j                  dt              }t        |      st        d      |'t        j                  j                  d      }|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_URLzhttps://z-aiplatform.googleapis.com/v1)versionr\   r]   r^   custom_headerscustom_queryra   rb   rc   limitsre   )r   r9   r:   r;   r   
ValueErrorsuper__init__r   r=   r5   rZ   r[   r)   rW   r   rX   r3   r5   r=   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   	__class__s                  r4   rp   zAnthropicVertex.__init__[   s    , ZZ^^$5yAF a  zz~~&ABH%fX-JK#*&#)(C 	 	
 J(DO(& J	r6   c                F    t        || j                  | j                        S N)r=   r5   _prepare_optionsr=   r5   r3   optionss     r4   rv   z AnthropicVertex._prepare_options   s    DOODKKXXr6   c                |    |j                   j                  d      ry d| j                          |j                   d<   y NAuthorizationzBearer headersr;   _ensure_access_tokenr3   requests     r4   _prepare_requestz AnthropicVertex._prepare_request   s6    ??/-4T5N5N5P4Q+R(r6   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)
rZ   r[   r   r=   expiredtokenr   r2   
isinstancerN   r<   s     r4   r~   z$AnthropicVertex._ensure_access_token   s    ($$$+4+P(Dj??",##4+;+;+A+A))*%%QRR$**00#666%%%r6   r5   r=   rZ   r[   r\   r]   ra   rd   r^   r_   set_default_headersr`   set_default_query_extra_kwargsc                  |
|t        d      ||t        d      | j                  }|
i ||
}n||}| j                  }|i ||}n||}|5|t        d      t        | j                  t
              st        d      d}n1| j                  t        ur| j                  }nd}|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$                  ||d
|S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        NzPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusivezNThe 'http_client' argument is mutually exclusive with 'connection_pool_limits'zfA custom HTTP client has been set and is mutually exclusive with the 'connection_pool_limits' argument)
r5   r=   rZ   r[   r\   r]   ra   r^   r_   r`   rT   )rn   _custom_headers_custom_queryr   _clientr'   _limitsr#   rr   r   r5   r=   r   rZ   r[   r\   r   r]   r^   r3   r5   r=   rZ   r[   r\   r]   ra   rd   r^   r_   r   r`   r   r   r}   paramss                    r4   copyzAnthropicVertex.copy   s   * &+>+Jopp$):)Fkll&&&44O4G ,)G##$00-0F*&F!-& !qrrdll,BC |  K||#<<)-&)-&%5Kt~~ 
%f-64;;%-j%9zt?[R[%:):):#7t'7'7.$.w$ADLLw#'/'<$BRBR# 
 
 	
r6   )r5   str | NotGivenr=   r   rZ   rO   r[   GoogleCredentials | Noner\   str | httpx.URL | Noner]   'float | httpx.Timeout | None | NotGivenr^   intr_   Mapping[str, str] | Noner`   Mapping[str, object] | Nonera   httpx.Client | Nonerb   zTransport | Nonerc   ProxiesTypes | Nonerd   httpx.Limits | Nonere   boolrM   Nonerx   r   rM   r   r   zhttpx.RequestrM   r   rL   )r5   r   r=   r   rZ   rO   r[   r   r\   r   r]   r   ra   r   rd   r   r^   int | NotGivenr_   r   r   r   r`   r   r   r   r   Mapping[str, Any]rM   r	   rQ   rR   rS   __annotations__r   r"   rp   r
   rv   r   r~   r   with_options__classcell__rr   s   @r4   rV   rV   W   s   
J
 "+%.#'04+/;D.4859+/&*'+6:,1)8 8 #	8
 !8 .8 )8 98 8 28 38 )8 $8" %#8& !4'8( &*)8* 
+8t Y Y S S&* "+%.#'04+/;D+/6:&/488<599=+-!E
 E
 #	E

 !E
 .E
 )E
 9E
 )E
 !4E
 $E
 2E
 6E
 3E
 7E
  )!E
" 
#E
R Lr6   rV   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d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZedd	       Zedd
       Z	ddZ
eedddeddeddddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZ xZS )AsyncAnthropicVertexr*   rW   r   rX   NFrY   c                  t        |      s$t        j                  j                  dt              }t        |      st        d      |'t        j                  j                  d      }|d| d}t        |   t        |||||	|
||||       t        |      r|| _	        || _
        || _        || _        t        |       | _        t        |       | _        y rg   )r   r9   r:   r;   r   rn   ro   rp   r   r=   r5   rZ   r[   r*   rW   r   rX   rq   s                  r4   rp   zAsyncAnthropicVertex.__init__  s    , ZZ^^$5yAF a  zz~~&ABH%fX-JK#*&#)(C 	 	
 J(DO(&%d+dO	r6   c                N   K   t        || j                  | j                        S wrt   ru   rw   s     r4   rv   z%AsyncAnthropicVertex._prepare_options=  s     DOODKKXXs   #%c                   K   |j                   j                  d      ry d| j                          d {    |j                   d<   y 7 wrz   r|   r   s     r4   r   z%AsyncAnthropicVertex._prepare_requestA  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   )rZ   r[   r   r   r=   r   r   r   r2   r   rN   r<   s     r4   r~   z)AsyncAnthropicVertex._ensure_access_tokenI  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                  |
|t        d      ||t        d      | j                  }|
i ||
}n||}| j                  }|i ||}n||}|5|t        d      t        | j                  t
              st        d      d}n1| j                  t        ur| j                  }nd}|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$                  ||d
|S r   )rn   r   r   r   r   r(   r   r#   rr   r   r5   r=   r   rZ   r[   r\   r   r]   r^   r   s                    r4   r   zAsyncAnthropicVertex.copy[  s   * &+>+Jopp$):)Fkll&&&44O4G ,)G##$00-0F*&F!-& !qrrdll,CD |  K||#<<)-&)-&%5Kt~~ 
%f-64;;%-j%9zt?[R[%:):):#7t'7'7.$.w$ADLLw#'/'<$BRBR# 
 
 	
r6   )r5   r   r=   r   rZ   rO   r[   r   r\   r   r]   r   r^   r   r_   r   r`   r   ra   httpx.AsyncClient | Nonerb   zAsyncTransport | Nonerc   r   rd   r   re   r   rM   r   r   r   rL   )r5   r   r=   r   rZ   rO   r[   r   r\   r   r]   r   ra   r   rd   r   r^   r   r_   r   r   r   r`   r   r   r   r   r   rM   r	   r   r   s   @r4   r   r      s   
O
 "+%.#'04+/;D.485904+/'+6:,1)8$ 8$ #	8$
 !8$ .8$ )8$ 98$ 8$ 28$ 38$ .8$ )8$" %#8$& !4'8$( &*)8$* 
+8$t Y Y Y Y&* "+%.#'04+/;D046:&/488<599=+-!E
 E
 #	E

 !E
 .E
 )E
 9E
 .E
 !4E
 $E
 2E
 6E
 3E
 7E
  )!E
" 
#E
R Lr6   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methodr2   popr;   
startswithr    )input_optionsr=   r5   rx   r   r   	specifiers          r4   rv   rv     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Nr6   )r   r   r=   rO   r5   rN   rM   r   )B
__future__r   r9   typingr   r   r   r   r   typing_extensionsr	   r
   httpx r   _authr   r   _betar   r   _typesr   r   r   r   r   _utilsr   r   r   _compatr   r   _modelsr   _versionr   
_streamingr   r   r    r!   _base_clientr"   r#   r$   r%   r&   r'   r(   resources.messagesr)   r*   google.auth.credentialsr+   GoogleCredentialsr   ClientAsyncClientr,   r.   r0   rV   r   rv   rT   r6   r4   <module>r      s   " 	 > > ,   * " R R 1 1 8 * # - 9   :H &uU\\5CTCT5T/UV+5kRUFV9V3WX,Ez-"@A ,E^e&u||VC['@A= ePe+E,=,={3?O,OPR` eP r6   