o
    BDiN                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 e	r.d dlm
Z
 d dlmZ dZd	Zd
ZdjeeedZe ee je jB ZG dd deZdd ZdS )    N)Integrationadd_global_event_processor)capture_internal_exceptions)TYPE_CHECKING)Any)Eventz[a-zA-Z0-9/._:\\-]+z[a-zA-Z0-9._:<>,-]+z[A-Fa-f0-9]+z
^(?P<index>\d+)\.\s
(?P<package>{MODULE_RE})\(
  (?P<retval>{TYPE_RE}\ )?
  ((?P<function>{TYPE_RE})
    (?P<args>\(.*\))?
  )?
  ((?P<constoffset>\ const)?\+0x(?P<offset>{HEXVAL_RE}))?
\)\s
\[0x(?P<retaddr>{HEXVAL_RE})\]$
)	MODULE_RE	HEXVAL_RETYPE_REc                   @   s   e Zd ZdZedd ZdS )GnuBacktraceIntegrationgnu_backtracec                  C   s   t dd } d S )Nc                 S   s4   t   t| |W  d    S 1 sw   Y  d S )N)r   _process_gnu_backtrace)eventhint r   ^/var/www/Datamplify/venv/lib/python3.10/site-packages/sentry_sdk/integrations/gnu_backtrace.pyprocess_gnu_backtrace+   s   $zAGnuBacktraceIntegration.setup_once.<locals>.process_gnu_backtracer   )r   r   r   r   
setup_once(   s   z"GnuBacktraceIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr   r   r   r   r   r   %   s    r   c              	   C   s@  t  td u r| S |dd }|d u r| S | dd }|d u r#| S |dd }|d u r/| S |D ]l}|di dg }|s@q1|dd }|sIq1g }g }| D ])}	t|	}
|
ru|t	|

d|

dphd |

d	pnd d
df qQ||	 qQ|r|jdd d |D ]	\}}|| q|d d||d< q1| S )Nexc_info	exceptionvalues
stacktraceframesvalueindexpackagefunctionnative)r!   r"   platformc                 S   s
   | d  S )Nr   r   )xr   r   r   <lambda>d   s   
 z(_process_gnu_backtrace.<locals>.<lambda>)keyz:<stacktrace parsed and removed by GnuBacktraceIntegration>
)
sentry_sdk
get_clientget_integrationr   get
splitlinesFRAME_REmatchappendintgroupsortjoin)r   r   r   r   r   r   msgadditional_framesnew_msgliner/   _framer   r   r   r   2   sP   

r   )rer)   sentry_sdk.integrationsr   sentry_sdk.scoper   sentry_sdk.utilsr   typingr   r   sentry_sdk._typesr   r	   r   r
   formatr.   compile	MULTILINEVERBOSEr   r   r   r   r   r   <module>   s&    
