o
    i!                     @   sh   d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 e
eZdd ZejZdd ZdS )	z*
An API to provide atexit functionalities
    )absolute_importN)signalsc                 O   s0   ddl m} | rtj| g|R i |S | S )aT  Register a function to be executed upon normal program termination.

    This wraps the standard library's atexit.register but respects uwsgi's
    --skip-atexit flag when running under uwsgi. When --skip-atexit is set,
    the registration is skipped to avoid running cleanup code during process
    shutdown, which can cause crashes.
    r   )uwsgi)ddtrace.internalr   should_register_atexitatexitregister)funcargskwargsr    r   K/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/atexit.pyr      s   r   c                    sf    fdd}t  t  u r1zttj| ttj| W d S  ty0   t	j
ddd Y d S w d S )Nc                    s
      d S )Nr   )sigframefr   r   handle_exit(   s   
z,register_on_exit_signal.<locals>.handle_exitz3Encountered an exception while registering a signalT)exc_info)	threadingcurrent_threadmain_threadr   handle_signalsignalSIGTERMSIGINT	Exceptionlogdebug)r   r   r   r   r   register_on_exit_signal'   s   r   )__doc__
__future__r   r   loggingr   r   typingddtrace.internal.utilsr   	getLogger__name__r   r   
unregisterr   r   r   r   r   <module>   s   
