
    Yj                        d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZmZ ddlmZ eg ef   Z G d de	      Zd	Zed
ddfZddZ ed       G d d             Z G d d      Zdd	 	 	 	 	 ddZy)    )annotationsN)AnyLiteralMappingCallableProtocolcast)field	dataclass   )OpenAIErrorc                      e Zd ZddZy)_BotocoreSessionc                     y )N )selfs    W/var/www/html/vmm-quimica/venv/lib/python3.12/site-packages/openai/lib/_bedrock_auth.pyget_credentialsz _BotocoreSession.get_credentials   s        N)returnobject | None)__name__
__module____qualname__r   r   r   r   r   r      s    3r   r   authorizationzx-amz-content-sha256z
x-amz-datezx-amz-security-tokenc                     	 ddl m}  ddlm} ddlm} ddlm} t        d| |||f      S # t        $ r}t        d      |d }~ww xY w)Nr   )	SigV4Auth)Session)
AWSRequest)Credentialsz}Bedrock AWS authentication requires optional AWS dependencies. Install them with `pip install openai[bedrock]` and try again.tuple[Any, Any, Any, Any])botocore.authr   botocore.sessionr   botocore.awsrequestr   botocore.credentialsr    ImportErrorr   r	   )r   r   r   r    excs        r   _load_botocorer(      sW    	+,24 +i[RY-Z[[  M
 	s   * 	A?AT)frozenc                      e Zd ZU ded<   de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<   y)BedrockAwsAuthConfigstrregionz3Literal['static', 'profile', 'provider', 'default']sourcebedrock-mantle$Literal['bedrock-mantle', 'bedrock']serviceexplicitz-Literal['explicit', 'environment', 'profile']region_sourceN
str | NoneprofileF)defaultrepraccess_key_idsecret_access_keysession_token)r6   r7   compareAwsCredentialsProvider | Nonecredentials_provider)r   r   r   __annotations__r1   r3   r5   r
   r8   r9   r:   r=   r   r   r   r+   r+   +   sx    K??4DG1DCMM@MGZ %d ?M:?$)$U$CzC %d ?M:?:?SXbg:h7hr   r+   c                  X    e Zd ZddddZedd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	d       Zd
dZy)BedrockAwsAuthNsessionc               x   t               \  }}}}|	  ||j                        }|J || _        || _        |j                  | _        |j                  4|j                  ( ||j                  |j                  |j                        nd | _        || _        || _        y # t        $ r}t        d      |d }~ww xY w)Nr5   Failed to resolve AWS credentials for Bedrock. Verify your AWS profile, environment variables, or runtime identity configuration and try again.)r(   r5   	Exceptionr   config_sessionr=   _credentials_providerr8   r9   r:   _explicit_credentials_aws_request_cls_sigv4_auth_cls)r   rG   rB   sigv4_auth_clsaws_request_clscredentials_clssession_clsr'   s           r   __init__zBedrockAwsAuth.__init__9   s    HVHXE+?%fnn= """%+%@%@" ##/F4L4L4X F00&2J2JFL`L`a 	"
 !0-!  !G s   B 	B9(B44B9r/   )r1   c                   t               \  }}}}		  |	|      }
t        ||
      \  }}|d}n|d}n|d}nd}t	        |||||||||	      } | ||
      S # t        $ r  t        $ r}t        d      |d }~ww xY w)	NrD   rA   rE   staticr5   providerr6   )	r-   r.   r1   r3   r5   r8   r9   r:   r=   )r(   resolve_aws_region_with_sourcer   rF   r+   )clsr-   r5   r8   r9   r:   r=   r1   _rP   rB   resolved_regionr3   r'   r.   rG   s                   r   resolvezBedrockAwsAuth.resolveQ   s      ./1a		!'2G-KF\c-d*O] $F F!-FF%"''/'!5

 67++;  	 	C 	s   A A<+A77A<c                  	 | j                   | j                         n'| j                  xs | j                  j                         }|t	        d      t        |dd       }t        |      r |       }|j                         D ci c]  \  }}|j                         t        vs||! }	}}t        j                  |xs d      j                         |	d<   | j                  ||||	      }
| j                  || j                  j                   | j                  j"                        j%                  |
       t)        |
j*                  j                               S c c}}w # t        $ r  t&        $ r}t	        d      |d }~ww xY w)NzCould 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.get_frozen_credentialsr   zX-Amz-Content-SHA256)methodurldataheadersrE   )rI   rJ   rH   r   r   getattrcallableitemslower_AWS_SIGNING_HEADERShashlibsha256	hexdigestrK   rL   rG   r1   r-   add_authrF   dictr_   )r   r\   r]   r_   bodycredentialsr[   namevaluesigned_headersaws_requestr'   s               r   signzBedrockAwsAuth.sign   s   "	 --9 **,//R4==3P3P3R 
 "!e  &-[:RTX%Y"./46 07}} +e$**,VjBjeN  6=^^DKC5P5Z5Z5\N12//&	 0 K   dkk.A.A4;;CUCUV__`kl K''--/00'  	 	C 	s1   BE E$E)BE E F0E<<F)rG   r+   rB   z_BotocoreSession | Noner   None)r-   r4   r5   r4   r8   r4   r9   r4   r:   r4   r=   r<   r1   r0   r   r@   )
r\   r,   r]   r,   r_   zMapping[str, str]rj   zbytes | Noner   zdict[str, str])r   r   r   rQ   classmethodrY   rp   r   r   r   r@   r@   8   sz    [_ .0  9I-, -, 	-,
 "-, &-, "-, <-, 6-, 
-, -,^%1r   r@   rA   c                  | }d}||j                         sBt        j                  j                  d      xs t        j                  j                  d      }d}||j                         s.|,t	        |dd       }t        |      rt        d |d            }d}||j                         st        d	      |j                         |fS )
Nr2   
AWS_REGIONAWS_DEFAULT_REGIONenvironmentget_config_variabler4   r-   r5   zmBedrock requires an AWS region. Pass `region` to `bedrock(...)`, or set `AWS_REGION` or `AWS_DEFAULT_REGION`.)striposenvirongetr`   ra   r	   r   )
aws_regionrB   r-   r.   rw   s        r   rU   rU      s     F<FF~V\\^-U@T1Uflln'2E%g/DdK'(,(;H(EFFF~V\\^$
 	

 <<>6!!r   )r   r!   )r|   r4   rB   r   r   z9tuple[str, Literal['explicit', 'environment', 'profile']])
__future__r   ry   re   typingr   r   r   r   r   r	   dataclassesr
   r   _exceptionsr   objectAwsCredentialsProviderr   _AUTHORIZATIONrd   r(   r+   r@   rU   r   r   r   <module>r      s    # 	  B B ( %!"f*- 4x 4 !	 \ $	i 	i 	in1 n1d 9=""(5">"r   