o
    ٰi
                     @   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
jeedZe ee je jB ZG dd deZdddZdS )    N)Integrationadd_global_event_processor)capture_internal_exceptions)TYPE_CHECKING)Any)Eventz[^@]+?z\s+@\s+0x[0-9a-fA-F]+z[
^(?P<index>\d+)\.\s+(?P<function>{FUNCTION_RE}){HEX_ADDRESS}(?:\s+in\s+(?P<package>.+))?$
)FUNCTION_REHEX_ADDRESSc                   @   s   e Zd ZdZedddZdS )GnuBacktraceIntegrationgnu_backtracereturnNc                  C   s   t ddd} d S )	Neventr   hintdict[str, Any]r   c                 S   s4   t   t| |W  d    S 1 sw   Y  d S )N)r   _process_gnu_backtrace)r   r    r   Y/home/ubuntu/.local/lib/python3.10/site-packages/sentry_sdk/integrations/gnu_backtrace.pyprocess_gnu_backtrace"   s   $zAGnuBacktraceIntegration.setup_once.<locals>.process_gnu_backtracer   r   r   r   r   r   r   )r   r   r   r   
setup_once    s   z"GnuBacktraceIntegration.setup_once)r   N)__name__
__module____qualname__
identifierstaticmethodr   r   r   r   r   r      s    r   r   r   r   r   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>Y   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liner1   _framer   r   r   r   (   sP   

r   r   )rer+   sentry_sdk.integrationsr   sentry_sdk.scoper   sentry_sdk.utilsr   typingr   r   sentry_sdk._typesr   r	   r
   formatr0   compile	MULTILINEVERBOSEr   r   r   r   r   r   <module>   s&    