
    pi+>                    d   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
 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%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1  ejd                  e3      Z4de5d<   dZ6 e
deejn                  ejp                  f         Z9 e
dee e   e!e   f         Z:d!dZ;d"dZ< G d de&e9e:f         Z= G d de=ejn                  e e   f   e'      Z> G d d e=ejp                  e!e   f   e(      Z?y)#    )annotationsN)AnyUnionMappingTypeVar)Selfoverride   )_exceptions   )Beta	AsyncBeta)	NOT_GIVENTimeoutNotGiven)is_dictis_given)
model_copy)__version__)StreamAsyncStream)AnthropicErrorAPIStatusError)DEFAULT_MAX_RETRIES
BaseClientSyncAPIClientAsyncAPIClientFinalRequestOptions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betasr2   r5   s        _/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/anthropic/lib/bedrock/_client.py_prepare_optionsrI   &   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_regionrP   sessions      rH   _infer_regionrW   F   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       rH   _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DrJ   N)rh   rC   r\   objectr[   zhttpx.Responsereturnr   )__name__
__module____qualname__r	   ri    rJ   rH   rY   rY   ]   s@    !E!E 	!E
 !!E 
!E !ErJ   rY   c                  "    e Zd ZU ded<   ded<   ded<   ddddddee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ededdddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZ xZS )AnthropicBedrockr!   messagesr#   completionsr   betaNFc           
     `   || _         || _        |
t               n|| _        || _        || _        |t        j                  j                  d      }|d| j                   d}t        | )  t        ||||	|
||       t        |       | _        t        |       | _        t!        |       | _        y NANTHROPIC_BEDROCK_BASE_URLzhttps://bedrock-runtime.z.amazonaws.com)versionbase_urltimeoutmax_retriescustom_headerscustom_queryhttp_client_strict_response_validation)aws_secret_keyaws_access_keyrW   rU   aws_profileaws_session_tokenrN   rO   r:   super__init__r   r   rt   r!   rr   r#   rs   rg   r   r   rU   r   r   ry   rz   r{   default_headersdefault_queryr~   r   	__class__s                rH   r   zAnthropicBedrock.__init__   s    0 -,-7-?-/Z&!2zz~~&BCH1$//1B.QH#*&#(C 	 		
 J	 &t,rJ   c                    t               S Nr   rg   s    rH   _make_sse_decoderz"AnthropicBedrock._make_sse_decoder       $&&rJ   c                    t        |      S r   rI   rg   rF   s     rH   rI   z!AnthropicBedrock._prepare_options   s    ((rJ   c                ^   ddl m} |j                         j                         } ||j                  t        |j                        |j                  | j                  | j                  | j                  | j                  xs d| j                  |	      }|j                  j                  |       y Nr   )get_auth_headersrM   )	r=   r<   r9   r   r   r   regionprofiledata_authr   readdecoder=   rC   r<   r9   r   r   r   rU   r   updaterg   requestr   r   r9   s        rH   _prepare_requestz!AnthropicBedrock._prepare_request   s    +||~$$&">>GKK OO...."44??1k$$

 	w'rJ   r   r   rU   r   ry   rz   r~   r{   r   set_default_headersr   set_default_query_extra_kwargsc                  |	|
t        d      ||t        d      | j                  }|	i ||	}n|
|
}| j                  }|i ||}n||} | j                  d|xs | j                  |xs | j
                  |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.
        zPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusive)
r   r   rU   r   ry   rz   r~   r{   r   r   ro   
ValueError_custom_headers_custom_queryr   r   r   rU   r   ry   
isinstancer   rz   r   r{   rg   r   r   rU   r   ry   rz   r~   r{   r   r   r   r   r   r9   paramss                   rH   copyzAnthropicBedrock.copy      ( &+>+Jopp$):)Fkll&&&44O4G ,)G##$00-0F*&Ft~~ 
)@T-@-@)@T-@-@!4T__/I43I3I.$.w$ADLLw#'/'<$BRBR# 
 
 	
rJ   )r   
str | Noner   r   rU   r   r   r   r   r   ry   str | httpx.URL | Nonerz   'float | httpx.Timeout | None | NotGivenr{   intr   Mapping[str, str] | Noner   Mapping[str, object] | Noner~   httpx.Client | Noner   boolrk   Nonerk   r    rF   r   rk   r   r   zhttpx.Requestrk   r   )r   r   r   r   rU   r   r   r   ry   r   rz   !float | Timeout | None | NotGivenr~   r   r{   int | NotGivenr   r   r   r   r   r   r   r   r   Mapping[str, Any]rk   r   rl   rm   rn   __annotations__r   r   r   r	   r   rI   r   r   with_options__classcell__r   s   @rH   rq   rq      s   
J &*%)!%"&(,+/;D.4859+/ -2-3-"3- #3- 	3-
  3- &3- )3- 93- 3- 23- 33- )3-, &*-3-. 
/3-j ' ' ) ) ( (* &*%)!%(,+/5>+/&/488<599=+-2
 #2
 #	2

 2
 &2
 )2
 32
 )2
 $2
 22
 62
 32
 72
 )2
  
!2
l LrJ   rq   c                  "    e Zd ZU ded<   ded<   ded<   ddddddee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ededdddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZeZ xZS )AsyncAnthropicBedrockr"   rr   r$   rs   r   rt   NFc           
     `   || _         || _        |
t               n|| _        || _        || _        |t        j                  j                  d      }|d| j                   d}t        | )  t        ||||	|
||       t        |       | _        t        |       | _        t!        |       | _        y rv   )r   r   rW   rU   r   r   rN   rO   r:   r   r   r   r"   rr   r$   rs   r   rt   r   s                rH   r   zAsyncAnthropicBedrock.__init__  s    0 -,-7-?-/Z&!2zz~~&BCH1$//1B.QH#*&#(C 	 		
 &d++D1dO	rJ   c                    t               S r   r   r   s    rH   r   z'AsyncAnthropicBedrock._make_sse_decoderK  r   rJ   c                    K   t        |      S wr   r   r   s     rH   rI   z&AsyncAnthropicBedrock._prepare_optionsO  s     ((s   c                f  K   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        rH   r   z&AsyncAnthropicBedrock._prepare_requestS  s     +||~$$&">>GKK OO...."44??1k$$

 	w's   B/B1r   c                  |	|
t        d      ||t        d      | j                  }|	i ||	}n|
|
}| j                  }|i ||}n||} | j                  d|xs | j                  |xs | j
                  |xs | j                  |xs | j                  |xs | j                  t        |t              r| j                  n||t        |      r|n| j                  ||d
|S r   r   r   s                   rH   r   zAsyncAnthropicBedrock.copyf  r   rJ   )r   r   r   r   rU   r   r   r   r   r   ry   r   rz   r   r{   r   r   r   r   r   r~   httpx.AsyncClient | Noner   r   rk   r   r   r   r   )r   r   r   r   rU   r   r   r   ry   r   rz   r   r~   r   r{   r   r   r   r   r   r   r   r   r   r   r   rk   r   r   r   s   @rH   r   r     s   !!
O &*%)!%"&(,+/;D.485904 -2-3$"3$ #3$ 	3$
  3$ &3$ )3$ 93$ 3$ 23$ 33$ .3$, &*-3$. 
/3$j ' ' ) ) ( (* &*%)!%(,+/5>04&/488<599=+-2
 #2
 #	2

 2
 &2
 )2
 32
 .2
 $2
 22
 62
 32
 72
 )2
  
!2
l LrJ   r   )rE   r   rk   r   )rk   rC   )@
__future__r   rN   loggingurllib.parser@   typingr   r   r   r   typing_extensionsr   r	   httpx r   _betar   r   _typesr   r   r   _utilsr   r   _compatr   _versionr   
_streamingr   r   r   r   _base_clientr   r   r   r   r   _stream_decoderr    resources.messagesr!   r"   resources.completionsr#   r$   	getLoggerrl   r%   r   r8   ClientAsyncClientr&   r(   rI   rW   rY   rq   r   ro   rJ   rH   <module>r      s   " 	   / / ,   " 2 2 ' ! # - 9  3 9 B'g''1^ 1&uU\\5CTCT5T/UV+5kRUFV9V3WX@.#E
=/#AB #ELK(vc{)BC] K\K-e.?.?SAQ.QRTb KrJ   