
    4RjMJ                    x   U d dl m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Zddl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+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5  ejl                  e7      Z8de9d<   dZ: e
deejv                  ejx                  f         Z= e
dee!e   e"e   f         Z>d"dZ?d#dZ@ G d de)e=e>f         ZA G d deAejv                  e!e   f   e*      ZB G d  d!eAejx                  e"e   f   e+      ZCy)$    )annotationsN)AnyUnionMappingTypeVarSequence)Selfoverride   )_exceptions   )Beta	AsyncBeta)	NOT_GIVENTimeoutNotGiven)is_dictis_given)
model_copy)__version__)StreamAsyncStream)AnthropicErrorAPIStatusError)MiddlewareInput)DEFAULT_MAX_RETRIES
BaseClientSyncAPIClientAsyncAPIClientFinalRequestOptionsmerge_headersAWSEventStreamDecoder)MessagesAsyncMessages)CompletionsAsyncCompletionszlogging.Loggerlogzbedrock-2023-05-31_HttpxClientT)bound_DefaultStreamTc                4   t        | d      }t        |j                        r}|j                  j                  dt               t        |j                        rH|j                  j                  d      }|r+|j                  j                  d|j                  d             |j                  dv r|j                  dk(  rt        |j                        st        d	      |j                  j                  d
d       }t        j                  j                  t!        |      d      }|j                  j                  dd      }|rd| d|_	        nd| d|_	        |j                  j#                  d      rt%        d      |j                  dk(  rt%        d      |S )NT)deepanthropic_versionzanthropic-betaanthropic_beta,>   /v1/complete/v1/messages/v1/messages?beta=truepostz<Expected dictionary json_data for post /completions endpointmodel:)safestreamFz/model/z/invoke-with-response-streamz/invokez/v1/messages/batchesz-The Batch API is not supported in Bedrock yetz/v1/messages/count_tokensz.Token counting is not supported in Bedrock yet)r   r   	json_data
setdefaultDEFAULT_VERSIONr   headersgetspliturlmethodRuntimeErrorpopurllibparsequotestr
startswithr   )input_optionsoptionsbetasr5   r8   s        e/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/anthropic/lib/bedrock/_client.py_prepare_optionsrL   (   s[   T2Gw  !$$%8/JGOO$OO''(89E!!,,-=u{{3?OP{{PPU\UcUcgmUmw(()]^^!!%%gt4""3u:C"8""&&x7#E7*FGGK#E7'2GK{{45LMM{{11MNNN    c                     t         j                  j                  d      } | -	 ddl}|j	                         }|j
                  r|j
                  } | t        j                  d       d} | S # t        $ r Y &w xY w)zi
    Infer the AWS region from the environment variables or
    from the boto3 session if available.
    
AWS_REGIONNr   z0No AWS region specified, defaulting to us-east-1	us-east-1)	osenvironr=   boto3Sessionregion_nameImportErrorr(   warning)
aws_regionrS   sessions      rK   _infer_regionrZ   H   sw    
 -J	mmoG""$00
 FG 
  		s   ,A* *	A65A6c                  .    e Zd Ze	 	 	 	 	 	 	 	 dd       Zy)BaseBedrockClientc                  |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  )status_coder   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorUnprocessableEntityErrorRateLimitErrorServiceUnavailableErrorInternalServerErrorr   )selferr_msgr_   r^   s       rK   _make_status_errorz$BaseBedrockClient._make_status_error`   sT    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&227XTXYYgtDDrM   N)rk   rF   r_   objectr^   zhttpx.Responsereturnr   )__name__
__module____qualname__r
   rl    rM   rK   r\   r\   _   s@    !E!E 	!E
 !!E 
!E !ErM   r\   c                  B    e Zd ZU ded<   ded<   ded<   dddddddeedddddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Zedd
       Zedd       Z	edd       Z
ddddddededdddei d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZddZ xZS )AnthropicBedrockr$   messagesr&   completionsr   betaNFc                   |t         j                  j                  d      }|d uxs |d uxs
 |d uxs |d u}||rt        d      || _        || _        || _        |
t               n|| _        || _	        || _
        |t         j                  j                  d      }|d| j                   d}t        | 1  t        |||	|
||||	       t        |       | _        t!        |       | _        t%        |       | _        y NAWS_BEARER_TOKEN_BEDROCKzzCannot specify both `api_key` and AWS credentials (`aws_access_key`, `aws_secret_key`, `aws_session_token`, `aws_profile`)ANTHROPIC_BEDROCK_BASE_URLzhttps://bedrock-runtime.z.amazonaws.com)	versionbase_urltimeoutmax_retriescustom_headerscustom_queryhttp_client
middleware_strict_response_validation)rQ   rR   r=   
ValueErrorapi_keyaws_secret_keyaws_access_keyrZ   rX   aws_profileaws_session_tokensuper__init__r   r   rw   r$   ru   r&   rv   rj   r   r   rX   r   r   r   r}   r~   r   default_headersdefault_queryr   r   r   has_aws_credentials	__class__s                   rK   r   zAnthropicBedrock.__init__   s0   4 ?jjnn%?@G $& 'T)' ,' $&	 	 #6 M  $+,,-7-?-/Z&!2zz~~&BCH1$//1B.QH#*&#!(C 	 
	
 J	 &t,rM   c                    t               S Nr"   rj   s    rK   _make_sse_decoderz"AnthropicBedrock._make_sse_decoder       $&&rM   c                    t        |      S r   rL   rj   rI   s     rK   rL   z!AnthropicBedrock._prepare_options   s    ((rM   c                   | j                   d| j                    |j                  d<   y ddlm} |j	                         j                         } ||j                  t        |j                        |j                  | j                  | j                  | j                  | j                  xs d| j                  |	      }|j                  j                  |       y NzBearer Authorizationr   )get_auth_headersrP   )	r@   r?   r<   r   r   r   regionprofiledatar   r<   _authr   readdecoder@   rF   r?   r   r   r   rX   r   updaterj   requestr   r   r<   s        rK   _prepare_requestz!AnthropicBedrock._prepare_request   s    <<#18/GGOOO,+||~$$&">>GKK OO...."44??1k$$

 	w'rM   r   r   rX   r   r   r}   r~   r   r   r   set_default_headersr   set_default_queryr   _extra_kwargsc               2   |
|t        d      ||t        d      | j                  }|
t        ||
      }n||}| j                  }|i ||}n||} | j                  d|xs | j
                  |xs | j                  |xs | j                  |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)r   r   rX   r   r   r}   r~   r   r   r   r   r   rr   r   _custom_headersr!   _custom_queryr   r   r   rX   r   r   r}   
isinstancer   r~   r   r   _middlewarerj   r   r   rX   r   r   r}   r~   r   r   r   r   r   r   r   r   r<   paramss                     rK   copyzAnthropicBedrock.copy   9   , &+>+Jopp$):)Fkll&&&#G_=G ,)G##$00-0F*&Ft~~ 
)@T-@-@)@T-@-@!4T__/I43I3I+t||.$.w$ADLLw#'/'<$BRBR# +5j(+Kt''Q[
 
 	
rM   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(...)
        ```
        )r   r   r   rj   r   s     rK   with_middlewarez AnthropicBedrock.with_middleware-  &     yy$Dd&6&6$D$DyEErM   )r   
str | Noner   r   rX   r   r   r   r   r   r   r   r}   str | httpx.URL | Noner~   'float | httpx.Timeout | None | NotGivenr   intr   Mapping[str, str] | Noner   Mapping[str, object] | Noner   httpx.Client | Noner    Sequence[MiddlewareInput] | Noner   boolrn   Nonern   r#   rI   r    rn   r    r   zhttpx.Requestrn   r   ) r   r   r   r   rX   r   r   r   r   r   r}   r   r~   !float | Timeout | None | NotGivenr   r   r   int | NotGivenr   r   r   r   r   r   r   r   r   +Sequence[MiddlewareInput] | None | NotGivenr   Mapping[str, Any]rn   r	   r   r   rn   r	   ro   rp   rq   __annotations__r   r   r   r
   r   rL   r   r   with_optionsr   __classcell__r   s   @rK   rt   rt      s   
J &*%)!%"&(,"+/;D.4859+/7; -21F-"F- #F- 	F-
  F- &F- F- )F- 9F- F- 2F- 3F- )F- 5F-0 &*1F-2 
3F-P ' ' ) ) ( (2 &*%)!%(,"+/5>+/&/488<599=BK+-#6
 #6
 #	6

 6
 &6
 6
 )6
 36
 )6
 $6
 26
 66
 36
 76
  @!6
" )#6
$ 
%6
t L	FrM   rt   c                  B    e Zd ZU ded<   ded<   ded<   dddddddeedddddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Zedd
       Zedd       Z	edd       Z
ddddddededdddei d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZddZ xZS )AsyncAnthropicBedrockr%   ru   r'   rv   r   rw   NFc                   |t         j                  j                  d      }|d uxs |d uxs
 |d uxs |d u}||rt        d      || _        || _        || _        |
t               n|| _        || _	        || _
        |t         j                  j                  d      }|d| j                   d}t        | 1  t        |||	|
||||	       t        |       | _        t!        |       | _        t%        |       | _        y ry   )rQ   rR   r=   r   r   r   r   rZ   rX   r   r   r   r   r   r%   ru   r'   rv   r   rw   r   s                   rK   r   zAsyncAnthropicBedrock.__init__>  s1   4 ?jjnn%?@G $& 'T)' ,' $&	 	 #6 M  $+,,-7-?-/Z&!2zz~~&BCH1$//1B.QH#*&#!(C 	 
	
 &d++D1dO	rM   c                    t               S r   r"   r   s    rK   r   z'AsyncAnthropicBedrock._make_sse_decoder  r   rM   c                    K   t        |      S wr   r   r   s     rK   rL   z&AsyncAnthropicBedrock._prepare_options  s     ((s   c                  K   | j                   d| j                    |j                  d<   y ddlm} |j	                         j                         } ||j                  t        |j                        |j                  | j                  | j                  | j                  | j                  xs d| j                  |	      }|j                  j                  |       y wr   r   r   s        rK   r   z&AsyncAnthropicBedrock._prepare_request  s     <<#18/GGOOO,+||~$$&">>GKK OO...."44??1k$$

 	w's   CCr   c               2   |
|t        d      ||t        d      | j                  }|
t        ||
      }n||}| j                  }|i ||}n||} | j                  d|xs | j
                  |xs | j                  |xs | j                  |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                     rK   r   zAsyncAnthropicBedrock.copy  r   rM   c                B    | j                  g | j                  |      S r   r   r   s     rK   r   z%AsyncAnthropicBedrock.with_middleware  r   rM   )r   r   r   r   rX   r   r   r   r   r   r   r   r}   r   r~   r   r   r   r   r   r   r   r   httpx.AsyncClient | Noner   r   r   r   rn   r   r   r   r   ) r   r   r   r   rX   r   r   r   r   r   r}   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r	   r   r   r   s   @rK   r   r   9  s   !!
O &*%)!%"&(,"+/;D.4859047; -21F$"F$ #F$ 	F$
  F$ &F$ F$ )F$ 9F$ F$ 2F$ 3F$ .F$ 5F$0 &*1F$2 
3F$P ' ' ) ) ( (2 &*%)!%(,"+/5>04&/488<599=BK+-#6
 #6
 #	6

 6
 &6
 6
 )6
 36
 .6
 $6
 26
 66
 36
 76
  @!6
" )#6
$ 
%6
t L	FrM   r   )rH   r    rn   r    )rn   rF   )D
__future__r   rQ   loggingurllib.parserC   typingr   r   r   r   r   typing_extensionsr	   r
   httpx r   _betar   r   _typesr   r   r   _utilsr   r   _compatr   _versionr   
_streamingr   r   r   r   r   r   _base_clientr   r   r   r   r    r!   _stream_decoderr#   resources.messagesr$   r%   resources.completionsr&   r'   	getLoggerro   r(   r   r;   ClientAsyncClientr)   r+   rL   rZ   r\   rt   r   rr   rM   rK   <module>r      s    " 	   9 9 ,   " 2 2 ' ! # - 9 *  3 9 B'g''1^ 1&uU\\5CTCT5T/UV+5kRUFV9V3WX@.#E
=/#AB #ELqF(vc{)BC] qFhqF-e.?.?SAQ.QRTb qFrM   