Ë
    õ�Dj&  ã                   óp   — 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¢Z G d„ d	«      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ÚsessionÚ	csrftokenÚ	sessionidÚx_csrftokenÚx_forwarded_forÚ
set_cookieÚcookieÚauthorizationÚ	x_api_keyÚaiohttp_sessionzconnect.sidÚ
csrf_tokenÚcsrfÚ_csrfÚ_csrf_tokenÚ	PHPSESSIDÚ_sessionÚsymfonyÚuser_sessionÚ_xsrfz
XSRF-TOKEN)r   Ú	x_real_ipÚ
ip_addressÚremote_addrc                   óL   — 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         j                  «       n|| _        |s-|€t        j                  «       n|}| xj                  |z  c_        | j                  D �cg c]  }|j	                  «       ‘Œ c}| _        || _        yc c}w )a
  
        A scrubber that goes through the event payload and removes sensitive data configured through denylists.

        :param denylist: A security denylist that is always scrubbed, defaults to DEFAULT_DENYLIST.
        :param recursive: Whether to scrub the event payload recursively, default False.
        :param send_default_pii: Whether pii is sending is on, pii fields are not scrubbed.
        :param pii_denylist: The denylist to use for scrubbing when pii is not sent, defaults to DEFAULT_PII_DENYLIST.
        N)ÚDEFAULT_DENYLISTÚcopyÚdenylistÚDEFAULT_PII_DENYLISTÚlowerÚ	recursive)Úselfr0   r3   Úsend_default_piiÚpii_denylistÚxs         úWC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/scrubber.pyÚ__init__zEventScrubber.__init__?   sp   € ð 4<Ð3CÔ(×-Ñ-Ô/ÈˆŒáà/;Ð/CÔ$×)Ñ)Ô+Èð ð �MŠM˜\Ñ)�Mà,0¯M©MÖ: q˜Ÿ™�Ò:ˆŒØ"ˆ�ùò ;s   ÁB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)r4   ÚlstÚvs      r8   r>   zEventScrubber.scrub_listV   s8   € ô ˜#œtÔ$Øàò 	ˆAØ�O‰O˜AÔØ�O‰O˜AÕñ	ó    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)r;   ÚdictÚitemsÚstrr2   r0   r   Ú+substituted_because_contains_sensitive_datar3   r=   r>   )r4   ÚdÚkr@   s       r8   r=   zEventScrubber.scrub_dicte   sx   € ô ˜!œTÔ"Øà—G‘G“Iò 	#‰DˆAˆqô ˜!œSÔ! a§g¡g£i°4·=±=Ñ&@Ü%×QÑQÓS��!’Ø—“Ø—‘ Ô"Ø—‘ Õ"ñ	#rA   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=   ©r4   Úevents     r8   Úscrub_requestzEventScrubber.scrub_requesty   sŽ   € ä(Ó*ñ 	>Ø˜EÑ!Ø  iÑ 0Ñ0Ø—O‘O E¨)Ñ$4°YÑ$?Ô@Ø  iÑ 0Ñ0Ø—O‘O E¨)Ñ$4°YÑ$?Ô@Ø˜U 9Ñ-Ñ-Ø—O‘O E¨)Ñ$4°VÑ$<Ô=÷	>÷ 	>ñ 	>ú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ÚextrarN   rO   s     r8   Úscrub_extrazEventScrubber.scrub_extra„   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ÚuserrN   rO   s     r8   Ú
scrub_userzEventScrubber.scrub_userŠ   s4   € ä(Ó*ñ 	/Ø˜‰Ø—‘  f¡Ô.÷	/÷ 	/ñ 	/úrU   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ÚvaluesrM   rN   )r4   rP   Úvalues      r8   Úscrub_breadcrumbszEventScrubber.scrub_breadcrumbs�   sb   € ä(Ó*ñ 	;Ø Ñ%Ø˜u ]Ñ3Ñ3Ø!& }Ñ!5°hÑ!?ò ;˜Ø! Uš?Ø ŸO™O¨E°&©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=   )r4   rP   Úframes      r8   Úscrub_frameszEventScrubber.scrub_frames™   sH   € ä(Ó*ñ 	3Ü*¨5Ó1ò 3�Ø˜U’?Ø—O‘O E¨&¡MÕ2ñ3÷	3÷ 	3ñ 	3ús   ‹?Ÿ?¿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ÚspansrM   rN   )r4   rP   Úspans      r8   Úscrub_spanszEventScrubber.scrub_spans    sO   € ä(Ó*ñ 	6Ø˜%ÑØ! '™Nò 6�DØ ’~ØŸ™¨¨V©Õ5ð6÷	6÷ 	6ñ 	6ús   ‹<�<¼Ac                 óÐ   — | j                  |«       | j                  |«       | j                  |«       | j                  |«       | j	                  |«       | j                  |«       y )N)rQ   rT   rX   r]   ra   re   rO   s     r8   Úscrub_eventzEventScrubber.scrub_event¨   sT   € à×Ñ˜5Ô!Ø×Ñ˜ÔØ�‰˜ÔØ×Ñ˜uÔ%Ø×Ñ˜%Ô Ø×Ñ˜ÕrA   )NFFN)Ú__name__Ú
__module__Ú__qualname__r9   r>   r=   rQ   rT   rX   r]   ra   re   rg   © rA   r8   r,   r,   >   s7   „ àSWó#ò.ò#ò(	>ò0ò/ò;ò3ò6ó rA   r,   N)Úsentry_sdk.utilsr   r   r   Útypingr   Úsentry_sdk._typesr   r   r	   r.   r1   r,   rk   rA   r8   ú<module>ro      s=   ð÷ñ õ !áÝ'ÝÝò%Ð òNÐ ÷q ò q rA   