o
    i                     @   s  d dl Zd dlZ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 d dlmZ d dlmZ d dlmZ d d	lmZ d dlmZ d dlmZ d dlmZ d d
lmZ eeZdZz2d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dlm#Z# d dlm$Z$ d dlm%Z% d dlm&Z& W n e'y   dZY nw dee(e)e)f  de(e)e)f fddZ*dee(e)e)f  fddZ+de,fddZ-ddee(e)e)f  de,fddZ.dS )     N)Optional)config)version)forksafeensure_text)
get_logger)process_tags)get_runtime_id)
config_strT)CrashtrackerConfiguration)CrashtrackerMetadata)CrashtrackerReceiverConfig)CrashtrackerStatus)StacktraceCollection)crashtracker_init)crashtracker_on_fork)crashtracker_statusFadditional_tagsreturnc                 C   s   ddddd}t jrt j|d< t jrt j|d< t jrt j|d< t }|r(||d	< t }|r2||d
< tj}|r;||d< trAt|d< t	j
 D ]\}}|rR|rR|||< qF| rf|  D ]\}}|re|re|||< qYtjrott|d< dd | D }|S )NpythonCPythontruecrash)languageruntimeis_crashseverityenvservicer   
runtime_idruntime_versionlibrary_versionr	   profiler_configc                 S   s   i | ]\}}t |t |qS  r   ).0kvr$   r$   W/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/core/crashtracking.py
<dictcomp>Q   s    z_get_tags.<locals>.<dictcomp>)r   r   r   r   r
   platformpython_version__version__r	   crashtracker_configtagsitemsprofiling_configenabledr   )r   r.   r    r!   r"   r&   r'   r$   r$   r(   	_get_tags%   sF   



r2   c                 C   sD  t j}tjd}|d u rtd dS |j}|s td dS tj	d u r)t
j}n%tj	dkr2t
j}ntj	dkr;t
j}ntj	dkrDt
j}n
tdtj	 t
j}tg tjtjd	|tjp[tjd }i }tjd
}|d urn||d
< g d}|D ]}	tj|	}
|
d ur|
||	< qtt||g||tjtj}t| }tdtjd|}|||fS )Nz*ddtrace.commands._dd_crashtracker_receiverz1Failed to locate _dd_crashtracker_receiver module)NNNz:Failed to resolve path to _dd_crashtracker_receiver modulefastsafefullz%Invalid stacktrace_resolver value: %si  &DD_CRASHTRACKING_ERRORS_INTAKE_ENABLED)LD_LIBRARY_PATHDYLD_LIBRARY_PATH
PYTHONPATHzdd-trace-pyr   )sys
executable	importlibutil	find_speclogerrororiginr-   stacktrace_resolverr   DisabledWithoutSymbolsEnabledWithSymbolsInReceiverEnabledWithInprocessSymbolsr   create_alt_stackuse_alt_stack	debug_urlagent_configtrace_agent_urlosenvirongetr   stderr_filenamestdout_filenamer2   r   r   r,   )r   python_executablespecreceiver_script_pathrB   r   receiver_envcrashtracking_enabledinherited_env_varsenv_var	env_valuereceiver_configr.   metadatar$   r$   r(   	_get_argsV   s`   








r[   c                   C   s   t sdS t tjkS )NF)is_availabler   r   Initializedr$   r$   r$   r(   
is_started   s   r^   c                    s   t sdS tjs	dS z/t \}}}|d u s|d u s|d u r%td W dS t|||  fdd}t| W dS  t	yG   t
d Y dS w )NFzLFailed to start crashtracker: failed to construct crashtracker configurationc                     sD   t  \} }}| d u s|d u s|d u rtd d S t| || d S )NzYFailed to restart crashtracker after fork: failed to construct crashtracker configuration)r[   r?   r@   r   )r   rY   rZ   r   r$   r(   crashtracker_fork_handler   s
   
z(start.<locals>.crashtracker_fork_handlerzFailed to start crashtrackerT)r\   r-   r1   r[   r?   r@   r   r   register	Exception	exception)r   r   rY   rZ   r`   r$   r_   r(   start   s"   
	
rd   )N)/importlib.utilr<   rL   r*   r:   typingr   ddtracer   r   ddtrace.internalr   ddtrace.internal.compatr   ddtrace.internal.loggerr   ddtrace.internal.process_tagsr	   ddtrace.internal.runtimer
    ddtrace.internal.settings._agentrJ   &ddtrace.internal.settings.crashtrackerr-   #ddtrace.internal.settings.profilingr0   r   __name__r?   r\   ddtrace.internal.native._nativer   r   r   r   r   r   r   r   ImportErrordictstrr2   r[   boolr^   rd   r$   r$   r$   r(   <module>   sD    &1O$