
    j~                        d dl Z d dlZd dlZd dlZ ej        d          Zdedej        de	fdZ
e
fdedej        eej        ge	f         defd	Zd
edefdZ G d dej                  ZdeddfdZdedej        fdZdS )    Nunstructured.ingestkvreturnc                 z     ddg}g d}|rt           fd|D                       p                                 |v S )Naccount_name	client_id)keycredtokenpasswordc                 <    g | ]}|                                 v S  )lower).0sr   s     d/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/unstructured/ingest/logger.py
<listcomp>z-default_is_data_sensitive.<locals>.<listcomp>   s%    <<<Aaggii<<<    )anyr   )r   r   sensitive_fieldssensitive_triggerss   `   r   default_is_data_sensitiver   	   sc     >==	 	><<<<);<<<==	)7799((r   datais_sensitive_fnc                    |                                  }|                                D ]\  }} |||          rd||<   t          |t                    rt	          |          ||<   t          |t
                    rf	 t          j        |          }t          |t                    r&t	          |          }t          j        |          ||<   # t          j	        $ r Y w xY w|S )a`  
    Will recursively look through every k, v pair in this dict and any nested ones and run
    is_sensitive_fn to dynamically redact the value of the k, v pair. Will also check if
    any string value can be parsed as valid json and process that dict as well and replace
    the original string with the json.dumps() version of the redacted dict.
    z*******)
copyitems
isinstancedicthide_sensitive_fieldsstrjsonloadsdumpsJSONDecodeError)r   r   new_datar   r   	json_dataupdated_datas          r   r!   r!      s     yy{{H    1?1a   	$#HQKa 	3/22HQKa 	 JqMM	i.. ;#8#C#CL"&*\":":HQK'   	 Os   <ACCCr   c                    t          |           }d|vr| S d}g }d}|t          |          k     r||         }|dk    r|g}|g}t          |          dk    r|t          |          k     r~|dz  }||         }|                    |           |dk    r|                    |           |dk    r|                    d           t          |          dk    r|t          |          k     ~|                    d                    |                     |dz  }|t          |          k     |D ]}	 t          j        t          j        |                    }n;# t
          j        $ r) t          j        t          j
        |                    }Y nw xY wt          j        t          t          j        |                              }	|                     ||	          } | S )a  
    Takes in a generic string and pulls out all valid json content. Leverages
    hide_sensitive_fields() to redact any sensitive information and replaces the
    original json with the new redacted format. There can be any number of valid
    jsons in a generic string and this will work. Having extra '{' without a
    closing '}' will cause this to break though. i.e '{ text, {"a": 3}'.

    {r      } )listlenappendpopjoinr#   r%   r$   r&   astliteral_evalr!   replace)
r   charsijsonscharstackcurrentjformatted_jhidden_js
             r   redact_jsonsrA   2   s    GGE
%	AE	A
c%jj..Qx3;;FEfGe**//a#e**nnQQxt$$$3;;LL&&&3;;IIbMMM e**//a#e**nn LL))***	Q c%jj..   # #	:*TZ]]33KK# 	: 	: 	:*S%5a%8%899KKK	::3DJ{4K4KLLMMIIa""Hs   -&E5FFc                        e Zd Z fdZ xZS )SensitiveFormatterc                 f    t                                          |          }t          |          S )N)record)superformatrA   )selfrE   r   	__class__s      r   rG   zSensitiveFormatter.format\   s&    GGNN&N))Ar   )__name__
__module____qualname__rG   __classcell__)rI   s   @r   rC   rC   [   s8                r   rC   levelc                    t          j                    }d|_        t          d          }|                    |           dd t
          j        D             vrt
                              |           t
                              |            d S )Ningest_log_handler:%(asctime)s %(processName)-10s %(levelname)-8s %(message)sc                     g | ]	}|j         
S r   )name)r   hs     r   r   z-ingest_log_streaming_init.<locals>.<listcomp>h   s    #D#D#DqAF#D#D#Dr   )	loggingStreamHandlerrS   rC   setFormatterloggerhandlers
addHandlersetLevel)rN   handler	formatters      r   ingest_log_streaming_initr^   a   s    #%%G'GL"#_``I### #D#DFO#D#D#DDD'"""
OOEr   c                     t          j        d          }t          j                    }d|_        t	          d          }|                    |           |                    |           |                    |            |S )zReturn a custom logger.r   rP   rQ   )rU   	getLoggerrV   rS   rC   rW   rZ   r[   )rN   rX   r\   r]   s       r   make_default_loggerra   n   su    455F#%%G'GL"#_``I###
g
OOEMr   )r5   r#   rU   typingtr`   rX   r"   Anyboolr   r    Callabler!   rA   	FormatterrC   intr^   Loggerra   r   r   r   <module>rj      sT   



      		0	1	1
 
 
4 
 
 
 
 C\ 
!"S!%L$,>!?	   8&C &C & & & &R    *   
S 
T 
 
 
 
	s 	w~ 	 	 	 	 	 	r   