
    ÁjgJ                    |   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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/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5m6Z6  ejn                  e8      Z9de:d<   dZ; e
deejx                  ejz                  f         Z> e
dee"e   e#e   f         Z?d"dZ@d#dZA G d de*e>e?f         ZB G d deBejx                  e"e   f   e+      ZC G d  d!eBejz                  e#e   f   e,      ZDy)$    )annotationsN)AnyUnionMappingTypeVarSequence)Selfoverride   )_exceptions   )Beta	AsyncBeta)TimeoutNotGiven	not_given)is_dictasyncify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betasr6   r9   s        D/tmp/pip-target-k_scjv0h/lib/python/anthropic/lib/bedrock/_client.py_prepare_optionsrM   (   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_regionrT   sessions      rL   _infer_regionr[   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       rL   _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DrN   N)rl   rG   r`   objectr_   zhttpx.Responsereturnr   )__name__
__module____qualname__r
   rm    rN   rL   r]   r]   _   s@    !E!E 	!E
 !!E 
!E !ErN   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)rR   rS   r>   
ValueErrorapi_keyaws_secret_keyaws_access_keyr[   rY   aws_profileaws_session_tokensuper__init__r   r   rx   r%   rv   r'   rw   rk   r   r   rY   r   r   r   r~   r   r   default_headersdefault_queryr   r   r   has_aws_credentials	__class__s                   rL   r   zAnthropicBedrock.__init__   s0   4 ?jjnn%?@G $& 'T)' ,' $&	 	 #6 M  $+,,-7-?-/Z&!2zz~~&BCH1$//1B.QH#*&#!(C 	 
	
 J	 &t,rN   c                    t               S Nr#   rk   s    rL   _make_sse_decoderz"AnthropicBedrock._make_sse_decoder       $&&rN   c                    t        |      S r   rM   rk   rJ   s     rL   rM   z!AnthropicBedrock._prepare_options   s    ((rN   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_headersrQ   )	rA   r@   r=   r   r   r   regionprofiledata)r   r=   _authr   readdecoderA   rG   r@   r   r   r   rY   r   updaterk   requestr   r   r=   s        rL   _prepare_requestz!AnthropicBedrock._prepare_request   s    <<#18/GGOOO,+||~$$&">>GKK OO...."44??1k$$

 	w'rN   r   r   rY   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   rY   r   r   r~   r   r   r   r   r   r   rs   r   _custom_headersr"   _custom_queryr   r   r   rY   r   r   r~   
isinstancer   r   r   r   _middlewarerk   r   r   rY   r   r   r~   r   r   r   r   r   r   r   r   r   r=   paramss                     rL   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[
 
 	
rN   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   rk   r   s     rL   with_middlewarez AnthropicBedrock.with_middleware-  &     yy$Dd&6&6$D$DyEErN   )r   
str | Noner   r   rY   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   boolro   Nonero   r$   rJ   r!   ro   r!   r   zhttpx.Requestro   r   ) r   r   r   r   rY   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]ro   r	   r   r   ro   r	   rp   rq   rr   __annotations__r   r   r   r
   r   rM   r   r   with_optionsr   __classcell__r   s   @rL   ru   ru      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rN   ru   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&   rv   r(   rw   r   rx   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 rz   )rR   rS   r>   r   r   r   r   r[   rY   r   r   r   r   r   r&   rv   r(   rw   r   rx   r   s                   rL   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	rN   c                    t               S r   r#   r   s    rL   r   z'AsyncAnthropicBedrock._make_sse_decoder  r   rN   c                    K   t        |      S wr   r   r   s     rL   rM   z&AsyncAnthropicBedrock._prepare_options  s     ((s   c                  K   | j                   d| j                    |j                  d<   y ddlm} |j	                         j                         } t        |      |j                  t        |j                        |j                  | j                  | j                  | j                  | j                  xs d| j                  |	       d {   }|j                  j                  |       y 7  wr   )r   r=   r   r   r   r   r   rA   rG   r@   r   r   r   rY   r   r   r   s        rL   r   z&AsyncAnthropicBedrock._prepare_request  s     <<#18/GGOOO,+||~$$&2!12>>GKK OO...."44??1k$$

 

 	w'

s   CC-
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                     rL   r   zAsyncAnthropicBedrock.copy  r   rN   c                B    | j                  g | j                  |      S r   r   r   s     rL   r   z%AsyncAnthropicBedrock.with_middleware  r   rN   )r   r   r   r   rY   r   r   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   httpx.AsyncClient | Noner   r   r   r   ro   r   r   r   r   ) r   r   r   r   rY   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   ro   r	   r   r   r   s   @rL   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rN   r   )rI   r!   ro   r!   )ro   rG   )E
__future__r   rR   loggingurllib.parserD   typingr   r   r   r   r   typing_extensionsr	   r
   httpx r   _betar   r   _typesr   r   r   _utilsr   r   r   _compatr   _versionr   
_streamingr   r   r   r   r   r   _base_clientr   r   r   r    r!   r"   _stream_decoderr$   resources.messagesr%   r&   resources.completionsr'   r(   	getLoggerrp   r)   r   r<   ClientAsyncClientr*   r,   rM   r[   r]   ru   r   rs   rN   rL   <module>r      s#   " 	   9 9 ,   " 2 2 1 1 ! # - 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rN   