o
    Rh
                     @   sl   d dl Z d dlZd dlZd dlmZ d dlmZmZmZ er$d dl	m
Z
 G dd deeZG dd dZdS )	    N)Enum)TYPE_CHECKINGListOptional)Clientc                   @   s   e Zd ZdZdS )IntegrationsdjangoN)__name__
__module____qualname__Django r   r   [/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/posthog/exception_capture.pyr      s    r   c                   @   s^   e Zd ZedZ	ddddeee  fddZ	dd	 Z
d
d Zdd Zdd ZdddZdS )ExceptionCaptureposthogNclientr   integrationsc                 C   s   || _ tj| _| jt_| jt_g | _|pg D ]6}|tj	krLzddl
m} || j}| j| W q tyK } z| jd|  W Y d }~qd }~ww qd S )Nr   )DjangoIntegrationz%Failed to enable Django integration: )r   sys
excepthookoriginal_excepthookexception_handlerthread_exception_handler	threadingenabled_integrationsr   r   %posthog.exception_integrations.djangor   exception_receiverappend	Exceptionlog	exception)selfr   r   integrationr   enabled_integrationer   r   r   __init__   s"   

zExceptionCapture.__init__c                 C   s    | j t_| jD ]}|  qd S N)r   r   r   r   	uninstall)r!   r"   r   r   r   close.   s   

zExceptionCapture.closec                 C   s"   |  |||f | ||| d S r&   )capture_exceptionr   )r!   exc_type	exc_valueexc_tracebackr   r   r   r   3   s   z"ExceptionCapture.exception_handlerc                 C   s   |  |j|j|jf d S r&   )r)   r*   r+   r,   )r!   argsr   r   r   r   8   s   z)ExceptionCapture.thread_exception_handlerc                 C   s<   d|v rd|d i}nd }|  |d |d |d f| d S )Ndistinct_idr         )r)   )r!   exc_infoextra_propertiesmetadatar   r   r   r   ;   s   "z#ExceptionCapture.exception_receiverc              
   C   s`   z|r| dnd }| j|| W d S  ty/ } z| jd|  W Y d }~d S d }~ww )Nr.   zFailed to capture exception: )getr   r)   r   r   r    )r!   r    r3   r.   r$   r   r   r   r)   B   s    z"ExceptionCapture.capture_exceptionr&   )r	   r
   r   logging	getLoggerr   r   r   r   r%   r(   r   r   r   r)   r   r   r   r   r      s    


r   )r5   r   r   enumr   typingr   r   r   posthog.clientr   strr   r   r   r   r   r   <module>   s   