
    Yf                     j    d dl mZmZmZ d dlmZ erd dlmZ d dlmZ d dlm	Z	 g dZ
 G d de      Zy	)
    )capture_internal_exceptionsAnnotatedValueiter_event_frames)TYPE_CHECKING)Event)List)Optional)$passwordpasswdsecretapi_keyapikeyauthcredentials	mysql_pwd
privatekeyprivate_keytoken
ip_addresssession	csrftoken	sessionidremote_addrx_csrftokenx_forwarded_for
set_cookiecookieauthorization	x_api_keyr   	x_real_ipaiohttp_sessionzconnect.sid
csrf_tokencsrf_csrf_csrf_token	PHPSESSID_sessionsymfonyuser_session_xsrfz
XSRF-TOKENc                   J    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zy)EventScrubberNc                     |t         n|| _        | j                  D cg c]  }|j                          c}| _        || _        y c c}w N)DEFAULT_DENYLISTdenylistlower	recursive)selfr0   r2   xs       S/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/sentry_sdk/scrubber.py__init__zEventScrubber.__init__;   s9    ,4,<((,0MM:q:" ;s   Ac                 x    t        |t              sy|D ]$  }| j                  |       | j                  |       & y)a*  
        If a list is passed to this method, the method recursively searches the list and any
        nested lists for any dictionaries. The method calls scrub_dict on all dictionaries
        it finds.
        If the parameter passed to this method is not a list, the method does nothing.
        N)
isinstancelist
scrub_dict
scrub_list)r3   lstvs      r5   r;   zEventScrubber.scrub_listA   s8     #t$ 	AOOAOOA	    c                 <   t        |t              sy|j                         D ]x  \  }}t        |t              r4|j	                         | j
                  v rt        j                         ||<   J| j                  sW| j                  |       | j                  |       z y)a[  
        If a dictionary is passed to this method, the method scrubs the dictionary of any
        sensitive data. The method calls itself recursively on any nested dictionaries (
        including dictionaries nested in lists) if self.recursive is True.
        This method does nothing if the parameter passed to it is not a dictionary.
        N)r8   dictitemsstrr1   r0   r   +substituted_because_contains_sensitive_datar2   r:   r;   )r3   dkr=   s       r5   r:   zEventScrubber.scrub_dictP   sx     !T"GGI 	#DAq !S!aggi4==&@%QQS!""	#r>   c                     t               5  d|v rZd|d   v r| j                  |d   d          d|d   v r| j                  |d   d          d|d   v r| j                  |d   d          d d d        y # 1 sw Y   y xY w)Nrequestheaderscookiesdatar   r:   r3   events     r5   scrub_requestzEventScrubber.scrub_requestd   s    (* 	>E!i 00OOE)$4Y$?@i 00OOE)$4Y$?@U9--OOE)$4V$<=	> 	> 	>s   AA33A<c                 r    t               5  d|v r| j                  |d          d d d        y # 1 sw Y   y xY w)NextrarK   rL   s     r5   scrub_extrazEventScrubber.scrub_extrao   s5    (* 	0%g/	0 	0 	0   -6c                 r    t               5  d|v r| j                  |d          d d d        y # 1 sw Y   y xY w)NuserrK   rL   s     r5   
scrub_userzEventScrubber.scrub_useru   s4    (* 	/f.	/ 	/ 	/rR   c                     t               5  d|v r-d|d   v r&|d   d   D ]  }d|v s| j                  |d           d d d        y # 1 sw Y   y xY w)NbreadcrumbsvaluesrJ   rK   )r3   rM   values      r5   scrub_breadcrumbszEventScrubber.scrub_breadcrumbs{   sb    (* 	;%u]33!&}!5h!? ;!U? OOE&M:;	; 	; 	;s   AAAc                     t               5  t        |      D ]  }d|v s| j                  |d           	 d d d        y # 1 sw Y   y xY w)Nvars)r   r   r:   )r3   rM   frames      r5   scrub_frameszEventScrubber.scrub_frames   sH    (* 	3*51 3U?OOE&M23	3 	3 	3s   ??Ac                     t               5  d|v r#|d   D ]  }d|v s| j                  |d           d d d        y # 1 sw Y   y xY w)NspansrJ   rK   )r3   rM   spans      r5   scrub_spanszEventScrubber.scrub_spans   sO    (* 	6%!'N 6D~V56	6 	6 	6s   <<Ac                     | j                  |       | j                  |       | j                  |       | j                  |       | j	                  |       | j                  |       y r.   )rN   rQ   rU   rZ   r^   rb   rL   s     r5   scrub_eventzEventScrubber.scrub_event   sT    5!u%% r>   )NF)__name__
__module____qualname__r6   r;   r:   rN   rQ   rU   rZ   r^   rb   rd    r>   r5   r,   r,   :   s4    ##(	>0/;36 r>   r,   N)sentry_sdk.utilsr   r   r   sentry_sdk._typesr   r   typingr   r	   r/   objectr,   rh   r>   r5   <module>rm      s7    
 ,') X` F ` r>   