
    h(                        d Z ddlm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  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   )CustomBatchLoggerc                      e Zd ZdZddddddddddddddeedf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	dZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 ddZddZ	ddZ
y)	SQSLoggerz5Batching logger that writes logs to an AWS SQS queue.NTc                P   	 t        j                  dt        j                          t	        t
        j                        | _        | j                  |||||||||	|
|||||       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_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%   kwargses                       T/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/integrations/sqs.pyr3   zSQSLogger.__init__"   s(   */	  ;G<[<[;\] '=1AA'D# !!+ / /'%!1&;*C&;%9%9"3+E%9% " $  3 3 56%llnDO  &'9&::L^L\] &&??1)	 <>DN% 	=c!fXFGG	s   C;C> >	D%D  D%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      xs || _        y )Nzos.environ/r   r   r   r   Tr   r   r   r   r   r    r!   r"   r#   r$   r%   )r*   r+   items
isinstancer6   
startswith
get_secretgetr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   )r7   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   keyvalues                     r<   r.   zSQSLogger._init_sqs_paramsh   s   $ +2*I*I*OR' "99??AJC%%%*:*:=*I7>7I7I%7P//4 B
 ++//@QM 	 ++//0ABUo 	 ++//0ABUo 	 ++//tDS 	 "99==lKYz++//0BCWGW 	 ++//0GH %$ 	" ++//0KL )( 	& ++//0GH %$ 	" ++//0FG_K_ 	!
 ++//0FG_K_ 	!
 ++//0CDYHY 	
 ++//0LM *) 	' ++//0FG_K_ 	! "99==lKYz    c                  K   	 t        j                  d|       |j                  d      }|t        d      | j                  j                  |       t        j                  dt        | j                        | j                         y # 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_objectz standard_logging_payload is Nonez+sqs logging: queue length %s, batch size %szsqs Layer Error - )r   r)   rB   
ValueErrorr4   appendlenr(   r5   	exceptionr6   )r7   r:   response_obj
start_timeend_timestandard_logging_payloadr;   s          r<   async_log_success_eventz!SQSLogger.async_log_success_event   s     	D  Df (.zz2K'L$'/ !CDDNN!!":;  =DNN#
  	D$$'9#a&%BCC	Ds/   B?BB B?	B<!B72B?7B<<B?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)   rJ   r4   r/   r0   async_send_message)r7   payloads     r<   async_send_batchzSQSLogger.async_send_batch   s[     ,S-@,AB	
 ~~~~G 7 7 @A &s   A/A1c                  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+        |      }	dt,         d	t.         d
 ||	d      z   }
ddi}|j1                  d| j&                  |
|      }|j3                         } ||j4                  |j6                  |j8                  |j:                        } ||d| j                        j=                  |       t?        |j:                  jA                               }| jB                  jE                  | j&                  |
|       d {   }|jG                          y 7 17 # tH        $ r+}tK        jL                  dtO        |              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Action=z	&Version=z&MessageBody= )safezContent-Typez!application/x-www-form-urlencodedPOST)dataheaders)methodurlrf   rg   sqszError sending to SQS: )(urllib.parserV   requestsbotocore.authrW   botocore.awsrequestrX   #litellm.litellm_core_utils.asyncifyrY   get_credentialsr   r   r   r   r    r!   r"   r#   r$   r   rH   r   r   r
   Requestpreparerh   ri   bodyrg   add_authdictr>   r-   postraise_for_statusr5   r   rK   r6   )r7   rS   rV   rl   rW   rX   rY   asyncified_get_credentialscredentialsjson_stringrs   rg   reqpreppedaws_requestsigned_headersresponser;   s                     r<   rR   zSQSLogger.async_send_message   s    <	H*/6D)1$2F2F)G& :"&"<"<&*&D&D"&"<"< $ 4 4!%!:!:!%!:!:"44'+'F'F!%!:!:
! 
K !!) !899$W-K 12)O;LMZ"-.   CG ""**w # C kkmG$~~KK\\	K k5$*>*>?HH "+"5"5";";"=>N!4499""& :  H
 %%'a
V  	H$$'=c!fX%FGG	HsT   HBG  G!DG ;G<G HG G 	H
!H HH

H)"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   r8   Optional[int]r9   r   returnNone)NNNTNNNNNNNNNNN)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   )rS   r   r   r   )__name__
__module____qualname____doc__r	   r   r3   r.   rP   rT   rR    rE   r<   r   r      s   ? (,)-)- %)*./337/3.2.2+/48.2,N(>%D$D 'D '	D
 D #D (D  -D $1D  -D ,D ,D )D %2D ,D  *!D" &#D( 
)DP (,)-)- %)*./337/3.2.2+/48.2!MZ$MZ 'MZ '	MZ
 MZ #MZ (MZ  -MZ $1MZ  -MZ ,MZ ,MZ )MZ %2MZ ,MZ" 
#MZ^D	D(B=HrE   r   )r   
__future__r   r/   typingr   r   r*   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   r   r   rE   r<   <module>r      sN    #  !  :  B 8 7 2sH!: sHrE   