
    AHj;                       d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	m
Z
 ddlZddlmZmZ ddlmZ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 ddlmZ ddlm Z   ejB                  dejD                        Z# G d dee      Z$y)zdSQS Logging Integration

This logger sends ``StandardLoggingPayload`` entries to an AWS SQS queue.

    )annotationsN)ListOptional)print_verboseverbose_logger)DEFAULT_SQS_BATCH_SIZE"DEFAULT_SQS_FLUSH_INTERVAL_SECONDSSQS_API_VERSIONSQS_SEND_MESSAGE_ACTION)
safe_dumps)
BaseAWSLLM)get_async_httpx_clienthttpxSpecialProvider)StandardLoggingPayload   )CustomBatchLogger)IntegrationHealthCheckStatuszOdata:(?:application|image|audio|video)/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/=\s]+c                  :   e Zd ZdZddddddddddddddeedddddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 ddZd Z	dd	Z
dd
ZddZy)	SQSLoggerzXBatching logger that writes logs to an AWS SQS queue, optionally encrypting the payload.NTFc                   	 t        j                  dt        j                          t	        t
        j                        | _         | j                  di d|d|d|d|d|d|d	|d
|d|	d|
d|d|d|d|d|d|d|d|d|| t        j                  | j                                t        j                         | _        t        j                  d| d|        t        j                  | | j                  ||       g | _        t#        j                  |        y # t$        $ r}t'        dt)        |              |d }~ww xY w)Nz)in init sqs logger - sqs_callback_params )llm_providersqs_queue_urlsqs_region_namesqs_api_versionsqs_use_ssl
sqs_verifysqs_endpoint_urlsqs_aws_access_key_idsqs_aws_secret_access_keysqs_aws_session_tokensqs_aws_session_namesqs_aws_profile_namesqs_aws_role_namesqs_aws_web_identity_tokensqs_aws_sts_endpointsqs_strip_base64_files(sqs_aws_use_application_level_encryptionsqs_app_encryption_key_b64sqs_app_encryption_aad
sqs_configzsqs flush interval: z, sqs batch size: )
flush_lockflush_interval
batch_sizez!Got exception on init sqs client  )r   debuglitellmaws_sqs_callback_paramsr   r   LoggingCallbackasync_httpx_client_init_sqs_paramsasynciocreate_taskperiodic_flushLockr+   r   __init__	log_queuer   	Exceptionr   str)selfr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   sqs_flush_intervalsqs_batch_sizer*   r&   r'   r(   r)   kwargses                           P/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/integrations/sqs.pyr9   zSQSLogger.__init__,   s   63	  ;G<[<[;\] '=1AA'D# "D!! + / !0 (	
 & "2 '< +D '< &: &: #4 ,F &: (>  :b!" ,F#$ (>%& &).  3 3 56%llnDO  &'9&::L^L\] &&??1)	 <>DN% 	=c!fXFGG	s   D&D) )	E2EEc                   t         j                  xs i t         _        t         j                  j                         D ]N  \  }}t        |t              s|j                  d      s)t        j                  |      t         j                  |<   P t         j                  j                  d      xs || _        t         j                  j                  d      xs || _	        t         j                  j                  d      xs || _
        t         j                  j                  dd      xs || _        t         j                  j                  d      xs || _        t         j                  j                  d      xs || _        t         j                  j                  d	      xs || _        t         j                  j                  d
      xs || _        t         j                  j                  d      xs |	| _        t         j                  j                  d      xs |
| _        t         j                  j                  d      xs || _        t         j                  j                  d      xs || _        t         j                  j                  d      xs || _        t         j                  j                  d      xs || _        t         j                  j                  dd      xs || _        t         j                  j                  dd      xs || _        t         j                  j                  d      xs || _        t         j                  j                  d      xs || _        d | _        | j.                  r^ddlm} | j0                  st;        d      t=        j>                  | j0                        } ||      | _        tA        jB                  d       t         j                  j                  d      xs || _"        y )Nzos.environ/r   r   r   r   Tr   r   r   r   r    r!   r"   r#   r$   r%   r&   Fr'   r(   r)   r   )	AppCryptozBsqs_app_encryption_key_b64 is required when encryption is enabled.z0SQSLogger: Application-level encryption enabled.r*   )#r0   r1   items
isinstancer<   
startswith
get_secretgetr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   
app_crypto%litellm.litellm_core_utils.app_cryptorD   
ValueErrorbase64	b64decoder   r/   r*   )r=   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   keyvaluerD   s                          rB   r4   zSQSLogger._init_sqs_params|   s   , +2*I*I*OR' "99??A 	QJC%%%*:*:=*I7>7I7I%7P//4	Q
 ++//@QM 	 ++//0ABUo 	 ++//0ABUo 	 ++//tDS 	 ++//=K 	 ++//0BCWGW 	 ++//0GH %$ 	" ++//0KL )( 	& ++//0GH %$ 	" ++//0FG $# 	! ++//0FG $# 	! ++//0CD !  	 ++//0LM *) 	' ++//0FG $# 	!
 ++//0H%P &% 	# ++//:E 8 8	 	5 ++//0LM *) 	'
 ++//0HI &% 	# 2688G22 X  ""4#B#BCC'nDO  !ST++//=K 	    c                  K   	 t        j                  d|       |j                  d      }| j                  r| j	                  |       d {   }|t        d      | j                  j                  |       t        j                  dt        | j                        | j                         y 7 a# t        $ r+}t        j                  dt        |              Y d }~y d }~ww xY ww)Nz2SQS Logging - Enters logging function for model %sstandard_logging_object standard_logging_payload is None+sqs logging: queue length %s, batch size %szsqs Layer Error - )r   r/   rI   r&   _strip_base64_from_messagesrL   r:   appendlenr-   r;   	exceptionr<   r=   r@   response_obj
start_timeend_timestandard_logging_payloadrA   s          rB   async_log_success_eventz!SQSLogger.async_log_success_event   s     	D  Df (.zz2K'L$**151Q1Q,2 ,( (/ !CDDNN!!":;  =DNN#,  	D$$'9#a&%BCC	DsB   C&AB/ B-A B/ ,C&-B/ /	C#8!CC&C##C&c                  K   	 |j                  d      }|t        d      | j                  r| j                  |       d {   }| j                  j                  |       t        j                  dt        | j                        | j                         y 7 T# t        $ r@}t        j                  dt        |       dt        j                                 Y d }~y d }~ww xY ww)NrS   rT   rU   zDatadog Layer Error - 
)rI   rL   r&   rV   r:   rW   r   r/   rX   r-   r;   rY   r<   	traceback
format_excrZ   s          rB   async_log_failure_eventz!SQSLogger.async_log_failure_event  s     	'-zz2K'L$'/ !CDD**151Q1Q,2 ,( NN!!":;  =DNN#,  	$$(Q93G3G3I2JK 		sA   C%>B BAB C%B 	C""6CC%C""C%c                   K   t        j                  dt        | j                                | j                  sy | j                  D ]&  }t	        j
                  | j                  |             ( y w)Nzsqs logger - sending batch of )r   r/   rX   r:   r5   r6   async_send_message)r=   payloads     rB   async_send_batchzSQSLogger.async_send_batch#  s^     =c$..>Q=RST~~~~ 	BG 7 7 @A	Bs   A/A1c                0  K   	 ddl m} dd l}ddlm} ddlm} ddlm}  || j                        } || j                  | j                  | j                  | j                  | j                  | j                  | j                   | j"                  | j$                  	       d {   }| j&                  t)        d      t+        j,                  t/        |            }	| j0                  r_| j2                  r| j2                  j5                  d      nd }
| j0                  j7                  |	|
	      }t+        j8                  d
|d      }nt/        |      }dt:         dt<         d ||d      z   }ddi}|j?                  d| j&                  ||      }|jA                         } ||jB                  |jD                  |jF                  |jH                        } ||d| j                        jK                  |       tM        |jH                  jO                               }| jP                  jS                  | j&                  ||       d {   }|jU                          y 7 7 # tV        $ r+}tY        jZ                  dt]        |              Y d }~y d }~ww xY ww)Nr   )quote)	SigV4Auth)
AWSRequest)asyncify)	aws_access_key_idaws_secret_access_keyaws_session_tokenaws_region_nameaws_session_nameaws_profile_nameaws_role_nameaws_web_identity_tokenaws_sts_endpointzsqs_queue_url not setzutf-8)aadT)__encrypted__rg   zAction=z	&Version=z&MessageBody= )safezContent-Typez!application/x-www-form-urlencodedPOST)dataheaders)methodurlr|   r}   sqszError sending to SQS: )/urllib.parserj   requestsbotocore.authrk   botocore.awsrequestrl   #litellm.litellm_core_utils.asyncifyrm   get_credentialsr   r   r    r   r!   r"   r#   r$   r%   r   rL   jsonloadsr   rJ   r)   encodeencrypt_jsondumpsr   r
   Requestpreparer~   r   bodyr}   add_authdictrE   r3   postraise_for_statusr;   r   rY   r<   )r=   rg   rj   r   rk   rl   rm   asyncified_get_credentialscredentials	json_data	aad_bytes	encryptedjson_stringr   r}   reqpreppedaws_requestsigned_headersresponserA   s                        rB   rf   zSQSLogger.async_send_message+  sg    D	H*/6D)1$2F2F)G& :"&"<"<&*&D&D"&"<"< $ 4 4!%!:!:!%!:!:"44'+'F'F!%!:!:
! 
K !!) !899

:g#67I 22 //66w? 
 !OO88	8R	"jj4I)VW(1 12)O;LMZ"-.   CG ""**w # C kkmG$~~KK\\	K k5$*>*>?HHU!+"5"5";";"=>N!4499""& :  H
 %%'q
f  	H$$'=c!fX%FGG	HsT   JBI  I!F#I II JI I 	J(!J	JJJc                   K   	 ddl m}  |       }| j                  |       d{    t        dd      S 7 # t        $ r }t        dt        |            cY d}~S d}~ww xY ww)z_
        Health check for SQS by sending a small test message to the configured queue.
        r   )%create_dummy_standard_logging_payloadNhealthy)statuserror_message	unhealthy)*litellm.litellm_core_utils.litellm_loggingr   rf   r   r;   r<   )r=   r   rS   rA   s       rB   async_health_checkzSQSLogger.async_health_checkr  sm     	 67 $ ))*ABBB/yPTUU C 	/"#a& 	s=   A%!9 79 A%9 	A"AA"A%A""A%)*r   Optional[str]r   r   r   r   r   boolr   Optional[bool]r   r   r   r   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r>   Optional[int]r?   r   r&   r   r'   r   r(   r   r)   r   returnNone)NNNTNNNNNNNNNNFFNNN)&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$   r   r%   r   r&   r   r'   r   r(   r   r)   r   r   r   )r   r   )rg   r   r   r   )r   r   )__name__
__module____qualname____doc__r	   r   r9   r4   r_   rd   rh   rf   r   r.   rQ   rB   r   r   )   sl   b
 (,)-)- %)*./337/3.2.2+/48.2,N(>',9>48041N %N '	N
 'N N #N (N  -N $1N  -N ,N ,N )N %2N  ,!N" *#N$ &%N( !%)N, 37-N. %2/N0 !.1N4 
5Nd (,)-)- %)*./337/3.2.2+/48.2',9>4804)v
$v
 'v
 '	v

 v
 #v
 (v
  -v
 $1v
  -v
 ,v
 ,v
 )v
 %2v
 ,v
  !%!v
" 37#v
$ %2%v
& !.'v
* 
+v
pD	D0.BEHNrQ   r   )%r   
__future__r   r5   rM   r   rerb   typingr   r   r0   litellm._loggingr   r   litellm.constantsr   r	   r
   r   *litellm.litellm_core_utils.safe_json_dumpsr   !litellm.llms.bedrock.base_aws_llmr   &litellm.llms.custom_httpx.http_handlerr   r   litellm.types.utilsr   custom_batch_loggerr   ,litellm.types.integrations.base_health_checkr   compile	MULTILINE_BASE64_INLINE_PATTERNr   r.   rQ   rB   <module>r      sv    #    	  !  :  B 8 7 2 U#VLL \!: \rQ   