
    YjP                    2   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mZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZ ddlmZ ddlmZm Z m!Z! eg df   Z"ed   Z#dZ$ ejJ                  d      Z&d)dZ'd*dZ(d+dZ)d,dZ*d-dZ+	 	 	 	 	 	 	 	 d.dZ,d/dZ-d0dZ.d1dZ/d2dZ0d3dZ1 G d d      Z2 G d d      Z3e G d  d!e             Z4 ed"#       G d$ d%             Z5ddeeddddddd&
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d4d'Z6g d(Z7y)5    )annotationsN)LiteralCallable	Awaitablecast)field	dataclass   )	NOT_GIVENNotGiven)asyncify)normalize_httpx_urlrequest_not_read_exceptions)FinalRequestOptions)	_Provider_create_provider_ProviderRuntime)OpenAIError)BedrockAwsAuthBedrockAwsAuthConfigAwsCredentialsProviderzstr | Awaitable[str])mantleruntime)authorizationzx-amz-content-sha256z
x-amz-datezx-amz-security-tokenz^[a-z]{2,8}(?:-[a-z0-9]+)+-\d+$c                4    | y | j                         }|xs d S N)strip)value
normalizeds     W/var/www/html/vmm-quimica/venv/lib/python3.12/site-packages/openai/providers/bedrock.py_normalize_optional_stringr!      s     }J    c                    t        |       }|j                  j                  d      }t        j                  d|      }||d |j                          }|j                  |xs d      S )N/z/responses(?:/.*)?$)path)r   r%   rstripresearchstart	copy_with)base_urlurlr%   responses_matchs       r    _normalize_base_urlr.   &   s`    
h
'C88??3Dii 6=O"-o++-.==dkc=**r"   c                    | j                  d      ry| j                  d      ry| j                  d      ry| j                  d      ry| j                  d	      ry
| j                  d      ryy)Nzcn-)zamazonaws.com.cnzapi.amazonwebservices.com.cnzeusc-)zamazonaws.euzapi.amazonwebservices.euzus-iso-)z
c2s.ic.govzapi.aws.ic.govzus-isob-)zsc2s.sgov.govzapi.aws.scloudzeu-isoe-)zcloud.adc-e.ukzapi.cloud-aws.adc-e.ukzus-isof-)zcsp.hci.ic.govzapi.aws.hci.ic.gov)zamazonaws.comapi.aws)
startswithregions    r    _runtime_dns_suffixesr4   0   sk    A!9#-$0$9$5%r"   c                   | j                  d      j                         j                  d      \  }}}|j                  d      \  }}}|r|rt        j	                  |      y |dk(  r	|dk(  rd|fS |dv r|t        |      v rd|fS y )N.bedrock-mantler0   r   >   bedrock-runtimebedrock-runtime-fipsr   )removesuffixlower	partition_AWS_REGION	fullmatchr4   )hostnameservice	separator	remainderr3   region_separatorsuffixs          r     _parse_bedrock_endpoint_hostnamerE   @   s    $,$9$9#$>$D$D$F$P$PQT$U!GY	'0':':3'?$Ff,0E0Ef0M0U""v':==&LabhLiBi&  r"   c                J    | !t         j                  |       t        d      y y )NzSThe Bedrock AWS `region` is invalid. Use a standard AWS region such as `us-east-1`.)r=   r>   r   r2   s    r    _validate_bedrock_regionrG   M   s-    k33F;Copp Dr"   c          	         t        | j                        }|y |\  }}| j                  dk7  rt        d      ||k7  rt        d| d| d| d      |||k7  rt        d| d| d	      y y )
Nhttpsz1Canonical Amazon Bedrock endpoints require HTTPS.The Bedrock ' hostname does not match the selected `z` endpoint. Set `endpoint='z'` to use this hostname.The Bedrock endpoint region `z,` does not match the configured AWS region ``.)rE   hostschemer   )r+   endpointr3   canonical_endpointcanonical_familycanonical_regions         r    $_validate_canonical_bedrock_endpointrT   R   s     :(--H!);&&'!MNN8#+,,ST\S] ^.//GI
 	
 .&8+,<+==ijpiqqst
 	
 9r"   c                ^    | dk(  rd| dt        |      d    nd| d}t        d| d      S )	Nr   zbedrock-runtime.r6   r   zbedrock-mantle.z.api.awszhttps://z
/openai/v1)r4   r.   )rP   r3   r?   s      r    _default_bedrock_base_urlrV   g   sQ     y  6(!$9&$A!$D#EFvhh/ 
 (:>??r"   c                    | j                   | j                  | j                  f|j                   |j                  |j                  fk(  S r   )rO   rN   port)leftrights     r    _same_originr[   p   s3    KKDII.5<<UZZ2XXXr"   c                ^    	 | j                   S # t               $ r}t        d      |d }~ww xY w)Nz}Bedrock SigV4 authentication requires a replayable request body. Buffer the body before sending or use bearer authentication.)contentr   r   )requestexcs     r    _body_for_signingr`   t   s<    &( K
 	s    ,',c                6    d| j                   v rt        d      y )NAuthorizationzXBedrock provider authentication cannot be combined with a custom `Authorization` header.)headersr   )r^   s    r    #_assert_provider_owns_authorizationrd   ~   s    '//)tuu *r"   c                B    | j                   rt        d      d| _         | S )NzBedrock SigV4 authentication does not support automatic redirects. Send a new request to the redirect target so it can be signed again.F)follow_redirectsr   )optionss    r    _without_redirectsrh      s-    S
 	
  %GNr"   c                  <    e Zd ZddZd	dZd
dZd
dZd	dZd	dZy)_BedrockBearerAuthc                    || _         || _        y r   )_token_provider	_base_url)selftoken_providerr+   s      r    __init__z_BedrockBearerAuth.__init__   s    -!r"   c                p    t        |       t        |j                  | j                        st	        d      y )Nz`Refusing to authenticate a Bedrock request for an origin other than the configured provider URL.)rd   r[   r,   rm   r   rn   r^   s     r    _validate_requestz$_BedrockBearerAuth._validate_request   s1    +G4GKK8r  9r"   c                d   	 t        t        | j                               }t        j                  |      r*t        |dd       }t        |      r |        t        d      t        |t              r|j                         st        d      |S # t        $ r  t        $ r}t        d      |d }~ww xY w)N2Failed to resolve a bearer credential for Bedrock.closez7An async Bedrock token provider requires `AsyncOpenAI`.FThe Bedrock bearer credential provider must return a non-empty string.)r   objectrl   r   	Exceptioninspectisawaitablegetattrcallable
isinstancestrr   )rn   tokenr_   rv   s       r    _resolve_tokenz!_BedrockBearerAuth._resolve_token   s    	]!5!5!78E u%E7D1EWXX%%U[[]fgg  	 	]RSY\\	]s   B B/B**B/c                0  K   	 t        t        | j                               }t        j                  |      r
| d {   }t        |t              r|j                         st        d      |S 7 1# t
        $ r  t        $ r}t        d      |d }~ww xY ww)Nru   rw   )
r   rx   rl   rz   r{   r   ry   r~   r   r   )rn   r   r_   s      r    _resolve_token_asyncz'_BedrockBearerAuth._resolve_token_async   s     	]!5!5!78E""5)# %%U[[]fgg $ 	 	]RSY\\	]s8   B8A0 A.A0 -B.A0 0BBBBc                f    | j                  |       d| j                          |j                  d<   y NzBearer rb   )rs   r   rc   rr   s     r    prepare_requestz"_BedrockBearerAuth.prepare_request   s/    w'-4T5H5H5J4K+L(r"   c                   K   | j                  |       d| j                          d {    |j                  d<   y 7 wr   )rs   r   rc   rr   s     r    prepare_async_requestz(_BedrockBearerAuth.prepare_async_request   s9     w'-44;T;T;V5V4W+X(5Vs   &?=?N)ro   BedrockTokenProviderr+   
httpx2.URLreturnNoner^   httpx2.Requestr   r   r   r   )	__name__
__module____qualname__rp   rs   r   r   r   r    r"   r    rj   rj      s"    ""MYr"   rj   c                  H    e Zd Zdd	 	 	 	 	 	 	 ddZd	dZd
dZddZddZy)_BedrockSigV4AuthN)authc               .    || _         || _        || _        y r   )_configrm   _auth)rn   configr+   r   s       r    rp   z_BedrockSigV4Auth.__init__   s     !
r"   c                   t        |       t        |j                  | j                        st	        d      t        |j                  j                        }|x|\  }}| j                  j                  dk(  rdnd}||k7  rt	        d| d| d      || j                  j                  k7  r&t	        d| d	| j                  j                   d
      t        |      S )NzXRefusing to sign a Bedrock request for an origin other than the configured provider URL.bedrockr   r   rJ   rK   z` endpoint.rL   z#` does not match the SigV4 region `rM   )rd   r[   r,   rm   r   rE   rN   r   r@   r3   r`   )rn   r^   rQ   rP   r3   expected_endpoints         r    rs   z#_BedrockSigV4Auth._validate_request   s    +G4GKK8j  >gkk>N>NO)1Hf-1\\-A-AY-N	T\,,!"8*,STeSffqr  ,,,!3F8;^_c_k_k_r_r^ssuv  !))r"   c               F   t         D ]  }|j                  j                  |d          |j                  |j                  t        |j                        t        |j                        |      }|j                  j                          |j                  j                  |       y N)methodr,   rc   body)
_AWS_SIGNING_HEADERSrc   popsignr   r   r,   dictclearupdate)rn   r^   r   r   headersigned_headerss         r    _signz_BedrockSigV4Auth._sign   s    * 	.FOO-	. >>GKK )	 # 
 	~.r"   c                    | j                  |      }| j                  t        | j                        | _        | j	                  || j                  |       y )N)r   r   )rs   r   r   r   r   )rn   r^   r   s      r    r   z!_BedrockSigV4Auth.prepare_request   sB    %%g.::'5DJ

7$
7r"   c           
     >  K   | j                  |      }| j                  , t        t              | j                         d {   | _         t        | j                  j
                        |j                  t        |j                        |j                  j                         D ci c]  \  }}|j                         t        vs||! c}}|       d {   }|j                  j                          |j                  j                  |       y 7 c c}}w 7 Bwr   )rs   r   r   r   r   r   r   r   r,   rc   itemsr;   r   r   r   )rn   r^   r   namer   r   s         r    r   z'_BedrockSigV4Auth.prepare_async_request   s     %%g.::7x7EEDJ8x

8>>GKK /6/D/D/F +e$**,^rJre  
 
 	~. F

s7   A DDA$D'DDDD;DD)r   r   r+   r   r   zBedrockAwsAuth | Noner   r   r^   r   r   bytes)r^   r   r   r   r   r   r   r   r   )r   r   r   rp   rs   r   r   r   r   r"   r    r   r      sH     '+	 %	 		
 $	 
	*,/8/r"   r   c                      e Zd ZU dZded<   y)_BedrockProviderRuntimeN
str | Noner3   )r   r   r   r3   __annotations__r   r"   r    r   r     s    FJr"   r   T)frozenc                  @   e Zd ZU ded<   ded<   ded<   ded<    ed	d
      Zded<    ed	d
d
      Zded<   d
Zded<   d	Zded<    ed	d
      Z	ded<    ed	d
      Z
ded<    ed	d
      Zded<    ed	d
d
      Zded<    edd
      Zded<   ddZd dZd!dZy	)"_BedrockProviderDefinitionBedrockEndpointrP   r   configured_regionz)Literal['explicit', 'environment'] | Noneregion_sourcezhttpx2.URL | Noneconfigured_base_urlNF)defaultreprapi_key)r   r   compareBedrockTokenProvider | Nonero   booluse_environment_bearerprofileaccess_key_idsecret_access_keysession_tokenAwsCredentialsProvider | Nonecredential_providerr   )r   initr   r   c                R    | j                   y| j                  y| j                  yy)Nstaticr   providerr   )r   r   r   rn   s    r    _aws_sourcez&_BedrockProviderDefinition._aws_source  s0    )<<###/r"   c                   | j                   t        | j                   | j                         | j                  dk(  rdnd| j                  xs d| j
                  | j                  | j                  | j                  | j                  	      d fS t        j                  d | j
                  | j                  | j                  | j                  | j                  | j                  dk(  rdnd      }|j                  |fS )Nr   r   r7   explicit)	r3   sourcer@   r   r   r   r   r   credentials_provider)r3   r   r   r   r   r   r@   )r   r   r   rP   r   r   r   r   r   r   r   resolver   )rn   r   s     r    _resolve_aws_authz,_BedrockProviderDefinition._resolve_aws_auth%  s    !!-$11++-)-))CIIY"&"4"4"B
 LL"&"4"4&*&<&<"&"4"4)-)A)A
   %%LL,,"44,,!%!9!9!%)!;IAQ
 {{D  r"   c                :    d	d}d }d } j                    fd} j                  }n j                   j                  } j                  }n j                  r|} j                  }nt j	                         \  }}|j
                  }t        |        j                  xs t         j                  |      }t        | j                  |       t        |||      } j                   j                  }n$|t         j                  |      }nt        d      |t        ||      }|J t        |t              r3t         j                   ||t"        |j$                  |j&                        S t         j                   |||j$                  |j&                        S )
Nc                 ^    t         j                  j                  d      } | st        d      | S )NAWS_BEARER_TOKEN_BEDROCKzCould not find credentials for Bedrock. Pass a bearer credential or AWS credentials to `bedrock(...)`, set `AWS_BEARER_TOKEN_BEDROCK`, or configure the default AWS credential chain.)osenvirongetr   )r   s    r    environment_tokenz?_BedrockProviderDefinition.configure.<locals>.environment_tokenB  s2    JJNN#=>E!u  Lr"   c                 $     j                   xs dS )N )r   r   s   r    <lambda>z6_BedrockProviderDefinition.configure.<locals>.<lambda>N  s    dll&8b r"   rP   r3   )r   r+   r   zmBedrock requires an AWS region. Pass `region` to `bedrock(...)`, or set `AWS_REGION` or `AWS_DEFAULT_REGION`.)r+   )r   r+   r3   transform_requestr   r   )r   r+   r3   r   r   r   )r   r   ro   r   r   r3   rG   r   rV   rP   rT   r   r   rj   r~   r   r   rh   r   r   )rn   r   r   bearer_providerr3   
aws_configaws_authr+   s   `       r    	configurez$_BedrockProviderDefinition.configureA  s   	 ?C7;<<#8O++F  ,"11O++F((/O++F#'#9#9#; J&&F$V,//c3LT]]\b3cH0DMMZ`a$JPXYD##///H0GH( 
 &%oIDd-.*YY!"4 $ 4 4&*&@&@  ' 00"&"<"<
 	
r"   )r   z3Literal['static', 'profile', 'provider', 'default'])r   z2tuple[BedrockAwsAuthConfig, BedrockAwsAuth | None])r   r   )r   r   r   r   r   r   ro   r   r   r   r   r   r   r   r   r   r   r   r"   r    r   r     s    !!<<**59GZ9275Z_2`N/`#(D(GZ %d ?M:?$)$U$CzC %d ?M:?9>tRWaf9g6gie4D#4!8;
r"   r   )
rP   r3   r+   r   ro   r   r   r   r   r   c        
           | | dvrt        d      t        |      }
||
t        d      t        |
       |
dnd}t        |t              r8t        t
        j                  j                  d            }|rt        |      nd}n;|d}n6t        |t              r|j                         st        d      t        |      }|t        |j                        nd}| xs	 ||d   nd	}t        |      }||t        d
      |du |du k7  s||t        d      |9|j                         rt        t        |      j                         st        d      ||j                         st        d      t        |t               xr |du}|r+t        |t              r|j                         st        d      |r|t        d      |xs |du}t        |du|du|	duf      }|dkD  rt        d      |r|rt        d      t        |t               xr |du }| xr2 | xr- | xr( t        t
        j                  j                  d            }|
^||sZ|sXt        t
        j                  j                  d      xs t
        j                  j                  d            }
t        |
       |
d}|t!        |||
       t#        t%        ||
|||rt        d|      nd|||||||	            S )zJConfigure the standard OpenAI client for Amazon Bedrock Mantle or Runtime.N>   r   r   z<The Bedrock `endpoint` must be either `mantle` or `runtime`.z+The Bedrock AWS `region` must not be empty.r   AWS_BEDROCK_BASE_URLz)The Bedrock `base_url` must not be empty.r   r   z,The Bedrock AWS `profile` must not be empty.zzStatic AWS credentials require both `access_key_id` and `secret_access_key`. A `session_token` may only be used with both.zXStatic AWS credentials require non-empty `access_key_id` and `secret_access_key` values.z=A static AWS `session_token` must not be empty when provided.z0The Bedrock bearer credential must not be empty.zVThe `api_key` and `token_provider` options are mutually exclusive. Configure only one.   zBedrock authentication is ambiguous. Configure exactly one explicit AWS mode: static credentials, profile, or credential provider.zBedrock authentication is ambiguous. Configure exactly one explicit mode: bearer credential, static AWS credentials, profile, or credential provider.r   
AWS_REGIONAWS_DEFAULT_REGIONenvironmentr   r   )rP   r   r   r   r   ro   r   r   r   r   r   r   )r   r!   rG   r~   r   r   r   r   r.   r   r   rE   rN   r   sumr   rT   r   r   )rP   r3   r+   r   ro   r   r   r   r   r   normalized_regionr   environment_base_urlr   rQ   resolved_endpointnormalized_profileexplicit_api_keyexplicit_bearer	aws_modesskip_environment_bearerr   s                         r    r   r     si    0E EXYY26:/7GHH./M^MjzptM (H%9"**..I_:`aK_12FGei		"h$X^^-=IJJ1(; GZFe()<)A)ABko  *2 *!3!?1X  4G<19HII#4#<=-B[`m`u<
 	
  -*=*=*?tCQbGcGiGiGktuu )<)<)>YZZ%gx88PWD=PGS!9LMMN6rss&D.*DO%d*t+	
I 1}/
 	
 9G
 	

 #-Wh"??SGtO 	=M	=''	=  :;<	   &9&A/]s6JJNN<(PBJJNN;O,P
 	!!23()M&,-@K\evw"&/' 33CDw/)#9&'/' 3	
 r"   )r   r   r   r   )r   r   r   r   )r+   zstr | httpx2.URLr   r   )r3   r   r   ztuple[str, str])r?   r   r   z"tuple[BedrockEndpoint, str] | None)r3   r   r   r   )r+   r   rP   r   r3   r   r   r   )rP   r   r3   r   r   r   )rY   r   rZ   r   r   r   r   r   )rg   r   r   r   )rP   zBedrockEndpoint | Noner3   r   r+   z"str | httpx2.URL | None | NotGivenr   zstr | None | NotGivenro   r   r   r   r   r   r   r   r   r   r   r   r   r   )8
__future__r   r   r'   rz   typingr   r   r   r   dataclassesr   r	   httpx2_typesr   r   _utilsr   _httpx2r   r   _modelsr   	_providerr   r   r   _exceptionsr   lib._bedrock_authr   r   r   r   r   r   compiler=   r!   r.   r4   rE   rG   rT   rV   r[   r`   rd   rh   rj   r   r   r   r   __all__r   r"   r    <module>r     s   " 	 	  5 5 (  (  F ) E E %   $: :; -.f bjj;<+& 
q


'6
@J
	
*@Yv
1Y 1YhC/ C/L .   $o
 o
 o
h (,3<%.26 $$( $9=t$t t 1	t
 #t 0t t "t t t 7t tn [r"   