
    k7iT                     z    S SK r S SKrS SKJr  S SKJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr   " S S	\5      rg)
    N)Sequence)AnyLiteralSupportsFloat)override)AsyncKeyValueDEFAULT_COLLECTION_NAME)BaseWrapperc                     ^  \ rS rSrSrS\R                  SS4S\S\R                  S-  S\	S\
S	\
S
S4U 4S jjjrS\S-  S
\4S jr  S$S\S   S\S\\   \-  S\S-  S\\\4   \\\\4      -  S-  S\\\4   S-  S
\4S jjr  S$S\S   S\S\\   \-  S\S-  S\\\4   \\\\4      -  S-  S\\\4   S-  S
S4S jjr\SS.S\S\S-  S
\\\4   S-  4S jj5       r\SS.S\\   S\S-  S
\\\\4   S-     4S jj5       r\SS.S\S\S-  S
\\\\4   S-  \S-  4   4S jj5       r\SS.S\\   S\S-  S
\\\\\4   S-  \S-  4      4S jj5       r\SSS.S\S\\\4   S\S-  S\S-  S
S4
S jj5       r\SSS.S\\   S\\\\4      S\S-  S\\S-     S-  S
S4
S  jj5       r\SS.S\S\S-  S
\
4S! jj5       r\SS.S\\   S\S-  S
\	4S" jj5       r S#r!U =r"$ )%LoggingWrapper   a"  Wrapper that logs all operations for debugging and auditing.

This wrapper logs all key-value operations including their parameters and results.
It's useful for:
- Debugging application behavior
- Auditing data access
- Understanding cache hit/miss patterns
- Monitoring performance issues
NF	key_valuelogger	log_level
log_valuesstructured_logsreturnc                    > Xl         U=(       d    [        R                  " S5      U l        X0l        X@l        XPl        [        TU ]!  5         g)aD  Initialize the logging wrapper.

Args:
    key_value: The store to wrap.
    logger: Logger instance to use. If None, creates a logger named 'key_value.logging'.
    log_level: Logging level to use. Defaults to logging.INFO.
    log_values: If True, logs the actual values being stored/retrieved.
               If False (default), only logs metadata (keys, collections, operation types).
               Set to False to avoid logging sensitive data.
    structured_logs: If True, logs the values as structured data.
               If False (default), logs the values as a string.
zkey_value.loggingN)	r   logging	getLoggerr   r   r   r   super__init__)selfr   r   r   r   r   	__class__s         `/home/james-whalen/.local/lib/python3.13/site-packages/key_value/aio/wrappers/logging/wrapper.pyr   LoggingWrapper.__init__   s=    ( )2&,&V0A0ABU0V' *%4    
collectionc                      U=(       d    [         $ )z#Format collection name for logging.r	   )r   r   s     r   _format_collection!LoggingWrapper._format_collection4   s    444r   state)startfinishactionkeysvaluesextrac                    U R                   (       a+  UUUUS.nUb  XWS'   Ub  XgS'   [        R                  " U5      $ UR                  5        SU SU R	                  U5       SU S3nUb  USU 3-  nUb	  US	U S
3-  nU$ )N)statusr&   r   r'   valuer)    z collection='z' keys=''z value=z ())r   jsondumps
capitalizer!   )	r   r#   r&   r'   r   r(   r)   structured_database_msgs	            r   _format_messageLoggingWrapper._format_message8   s      (	/O !+1( +0(::o..&&()6(-@W@WXb@c?ddlmqlrrst'&**H"UG1%Hr   c                 n    U R                   R                  U R                  U R                  XX4XVS95        g )Nr#   r&   r'   r   r(   r)   )r   logr   r5   )r   r#   r&   r'   r   r(   r)   s          r   _logLoggingWrapper._logY   s4     	NND00uRVv|0  K	
r   )r   keyc          
         #    U R                  SSXS9  U R                  R                  XS9I S h  vN nU R                  SSXUSUS L0S9  U$  N7f)Nr$   GETr#   r&   r'   r   r<   r   r%   hitr8   )r:   r   getr   r<   r   results       r   rB   LoggingWrapper.getf   so     		C	O~~))c)II		SX^glnt  }A  oA  gB	  	C	 Js   .AAAc          
         #    U R                  SSXSUS S 0S9  U R                  R                  XS9I S h  vN n[        S U 5       5      n[	        U5      U-
  nU R                  SSXXES	.S9  U$  N:7f)
Nr$   GET_MANYr'      r#   r&   r'   r   r)   r'   r   c              3   .   #    U  H  oc  M  Sv   M     g 7f)N    .0rs     r   	<genexpr>*LoggingWrapper.get_many.<locals>.<genexpr>v   s     7g11gs   	r%   hitsmisses)r:   r   get_manysumlenr   r'   r   resultsrT   rU   s         r   rV   LoggingWrapper.get_manyp   s     		
]ceijlklem\n	o//T/QQ7g77W$		$fj]}	~ R   4A3A1;A3c          	         #    U R                  SSXS9  U R                  R                  XS9I S h  vN u  p4U R                  SSXUSU0S9  X44$  N7f)Nr$   TTLr?   r@   r%   ttlr8   )r:   r   r_   )r   r<   r   r,   r_   s        r   r_   LoggingWrapper.ttl}   s_     		C	O>>--#-MM
		SX]fkmpeq	rz	 Ns   .AAAc          
         #    U R                  SSXSUS S 0S9  U R                  R                  XS9I S h  vN n[        S U 5       5      n[	        U5      U-
  nU R                  SSXXES	.S9  U$  N:7f)
Nr$   TTL_MANYr'   rH   rI   rJ   c              3   4   #    U  H  oS    c  M
  Sv   M     g7f)r   NrL   rM   rN   s     r   rQ   *LoggingWrapper.ttl_many.<locals>.<genexpr>   s     :g111gs   		r%   rS   )r:   r   ttl_manyrW   rX   rY   s         r   re   LoggingWrapper.ttl_many   s     		
]ceijlklem\n	o//T/QQ:g::W$		$fj]}	~ Rr\   )r   r_   r,   r_   c          	         #    U R                  SSXUSU0S9  U R                  R                  XX4S9I S h  vN   U R                  SSXUSU0S9  g  N7f)Nr$   PUTr_   r8   )r<   r,   r   r_   r%   )r:   r   put)r   r<   r,   r   r_   s        r   ri   LoggingWrapper.put   sd     		CW\ejlodp	qnn  S* VVV		SX]fkmpeq	r 	W   3AAAc          	         #    U R                  SSXUSU0S9  U R                  R                  XX4S9I S h  vN   U R                  SSXUSU0S9  g  N7f)Nr$   PUT_MANYr_   r8   )r'   r(   r   r_   r%   )r:   r   put_many)r   r'   r(   r   r_   s        r   rn   LoggingWrapper.put_many   sf      			
]clqsvkw	xnn%%4:%___		$^dmrtwlx	y 	`rk   c                   #    U R                  SSXS9  U R                  R                  XS9I S h  vN nU R                  SSXSU0S9  U$  N7f)Nr$   DELETEr?   r@   r%   deletedrI   )r:   r   deleterC   s       r   rs   LoggingWrapper.delete   sW     		s	R!^^22s2RR		[dflZm	n Ss   .AAAc          
         #    U R                  SSXSUS S 0S9  U R                  R                  XS9I S h  vN nU R                  SSXSU0S9  U$  N7f)	Nr$   DELETE_MANYr'   rH   rI   rJ   r%   rr   )r:   r   delete_many)r   r'   r   deleted_counts       r   rw   LoggingWrapper.delete_many   sj     		D`fhlmonohp_q	r#'>>#=#=4#=#__		Tajly`z	{	 `s   4AAA)r   r   r   r   r   )NN)#__name__
__module____qualname____firstlineno____doc__r   INFOr   Loggerintboolr   strr!   r   listdictr   r   r5   r:   r   rB   rV   tuplefloatr_   re   r   ri   rn   rs   rw   __static_attributes____classcell__)r   s   @r   r   r      s*    )-   %  % 	
   
 85S4Z 5C 5 DH'+()  3i#o	
 $J S#X$sCx.!99D@ CH~$ 
N DH'+
()
 
 3i#o	

 $J
 S#X$sCx.!99D@
 CH~$
 

 >B S t tCQTH~X\G\   JN 
49 
S4Z 
SWX\]`be]eXfimXmSn 
 
 >B S t uTRUWZRZ^^bMbdilpdpMpGq   JN 
49 
S4Z 
SWX]^bcfhkck^los^suz  ~B  vB  _B  YC  TD 
 
 UYw{ sS sc3h sd
 s`mpt`t s  AE s s  "&59z3iz c3h(z
 $Jz md*+d2z 
z z AE  C$J $   MQ d3i d
 VY  r   r   )r0   r   collections.abcr   typingr   r   r   typing_extensionsr   !key_value.aio.protocols.key_valuer   key_value.aio.stores.baser
   key_value.aio.wrappers.baser   r   rM   r   r   <module>r      s.      $ . . & ; = 3o[ or   