o
    i@)                     @   s  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 d dlmZ d dlm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 eeZedd ZdefddZdeeef defddZ deeef fddZ!dddZ"dS )    N)TYPE_CHECKING)Any)Union)get_distributionsconfig)callonce)AgentWriterInterface)	LogWriter)__version__   )
get_loggerc                   C   s   t  S )N)platformarchitecture r   r   J/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/debug.py<lambda>   s    r   returnc                   C   s*   dt jv pttdpttdotjtjkS )NVIRTUAL_ENVreal_prefixbase_prefix)osenvironhasattrsysr   prefixr   r   r   r   in_venv   s
   
r   tagsc                 C   s   d dd |  D S )N,c                 S   s   g | ]
\}}d ||f qS )z%s:%sr   ).0kvr   r   r   
<listcomp>)   s    ztags_to_str.<locals>.<listcomp>)joinitems)r   r   r   r   tags_to_str'   s   r%   c               
   C   s  ddl m}  ddlm} ddlm} ddlm} t|j	j
tr$d}d}n=t|j	j
tr]|j	j
}|j}z|g  |jdd	 W n tyY } zd
|t|f }W Y d}~nd}~ww d}nd}d}dd |jjD }t }	dd t  D }
i }tjj D ]/\}}||
v }|tjjv }|tjv }|rtjj|d}nd}|rt|||
| ||d||< q|
dd}|   \}}}tdBi dt!j!"t!j#j$% dd dt&' dt&( dtj)dkdt* d dt&+ dt,dddt&- d|d |	d!|d"|d#t.j/d$tjj0pd%d&tjj1d'|d(tjj2pd%d)t34t5j6d*d+t78d,d%v d-tjj9d.tjj:d/|j;d0tjj<pd%d1t=tjj>d2t=|j?d3|d4|j	j@d5|j	jAd6tBjCd7tBjDd8tBjEd9tjjFd:tjjGd;|j;d<| jj;d=|d>|d?|d@t78dAS d1t=tjj>d2t=|j?d3|d4|j	j@d5|j	jAd6tBjCd7tBjDd8tBjEd9tjjFd:tjjGd;|j;d<| jj;d=|d>|d?|d@t78dAS )Cz@Collect system and library information into a serializable dict.r   )gitmetadata)RuntimeWorkerr   )tracer	AGENTLESSNT)	raise_excz/Agent not reachable at %s. Exception raised: %sCUSTOMc                 S   s   g | ]}t |qS r   )str)r   ruler   r   r   r"   F   s    zcollect.<locals>.<listcomp>c                 S   s   i | ]\}}||qS r   r   )r   nameversionr   r   r   
<dictcomp>J   s    zcollect.<locals>.<dictcomp>zN/A)enabledinstrumentedmodule_versionmodule_importedr   pipdateios_name
os_version	is_64_bitl        r   vmr/   langpythonlang_versionpip_versionin_virtual_env	agent_urlagent_error
statsd_urlenv ddtrace_enabledsampling_rulesservicedebugenabled_cliddtrace
PYTHONPATHlog_injection_enabledhealth_metrics_enabledruntime_metrics_enabled
dd_versionglobal_tagstracer_tagsintegrationspartial_flush_enabledpartial_flush_min_spansasm_enablediast_enabledwaf_timeoutremote_config_enabledconfig_endpointcrashtracking_enabledgitmetadata_enabledgit_repository_urlgit_commit_shagit_main_packagelog_level_overrideDD_TRACE_LOG_LEVELr   )Hddtrace.internalr&   (ddtrace.internal.runtime.runtime_metricsr'   &ddtrace.internal.settings.crashtrackerr   ddtrace.tracer(   
isinstance_span_aggregatorwriterr
   r	   
intake_urlwriteflush_queue	Exceptionr,   _samplerrulesr   r   r$   rJ   _monkeyPATCH_MODULES_PATCHED_MODULESr   modules_configgetdictget_git_tagsdatetimenowtimezoneutc	isoformatr   systemreleasemaxsizer   python_implementationr   python_versionagent_configdogstatsd_urlrC   _tracing_enabledrG   loggerisEnabledForloggingDEBUGr   getenv_logs_injection_health_metrics_enabledr1   r/   r%   r   _tagsrS   rT   
asm_config_asm_enabled_iast_enabled_waf_timeout_remote_config_enabled_from_endpoint)r&   r'   crashtracker_configr(   r@   rA   rg   erF   is_venvpackages_availableintegration_configsmoduler1   module_availablemodule_instrumentedr4   r   r>   r\   r]   r^   r   r   r   collect,   s>  




	

 !"#$%&'()*
+
 !"#$%&'()*
+r   Tc                 C   s  G dd d}| s!d|_ d|_d|_d|_d|_d|_d|_d|_t }dj	d(i d|
dd|
dd	|
d	d
|
d
d|
dd|
dpMdd|
dpUdd|
dd|
dd|
dd|
dd|
dpudd|
dp}dd|
dpdd|
dpdd|
dpdd|
dd|
dpdd|jd|jd|jd|j}d 	|j|j|j}|
dr|d!j	|j|
d|jd"7 }|
ds|d#j	|j|jd$7 }|
ds|d%j	|j|jd$7 }|
ds|d&j	|j|jd$7 }|d'| 7 }|S ))Nc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
zpretty_collect.<locals>.bcolorsz[95mz[94mz[96mz[92mz[93mz[91mz[0mz[1mN)__name__
__module____qualname__HEADEROKBLUEOKCYANOKGREENWARNINGFAILENDCBOLDr   r   r   r   bcolors   s    r   rD   a/  {blue}{bold}Tracer Configurations:{end}
    Tracer enabled: {tracer_enabled}
    Application Security enabled: {appsec_enabled}
    Remote Configuration enabled: {remote_config_enabled}
    IAST enabled (experimental): {iast_enabled}
    Debug logging: {debug}
    Writing traces to: {agent_url}
    Agent error: {agent_error}
    Log injection enabled: {log_injection_enabled}
    Health metrics enabled: {health_metrics_enabled}
    Priority sampling enabled: {priority_sampling_enabled}
    Partial flushing enabled: {partial_flush_enabled}
    Partial flush minimum number of spans: {partial_flush_min_spans}
    WAF timeout: {waf_timeout} msecs
    {green}{bold}Tagging:{end}
    DD Service: {service}
    DD Env: {env}
    DD Version: {dd_version}
    Global Tags: {global_tags}
    Tracer Tags: {tracer_tags}tracer_enabledrE   appsec_enabledrU   rX   rV   rH   r@   z2Not writing at the moment, is your tracer running?rA   NonerL   rM   priority_sampling_enabledrS   rT   zNot setrG   rC   rO   rP   rW   rQ   bluegreenboldendz{0}{1}Summary{2}a  

{fail}ERROR: It looks like you have an agent error: '{agent_error}'
 If you're experiencing a connection error, please make sure you've followed the setup for your particular environment so that the tracer and Datadog agent are configured properly to connect, and that the Datadog agent is running: https://ddtrace.readthedocs.io/en/stable/troubleshooting.html#failed-to-send-traces-connectionrefusederror
If your issue is not a connection error then please reach out to support for further assistance: https://docs.datadoghq.com/help/{end})failrA   r   z

{warning}WARNING SERVICE NOT SET: It is recommended that a service tag be set for all traced applications. For more information please see https://ddtrace.readthedocs.io/en/stable/troubleshooting.html{end})warningr   z

{warning}WARNING ENV NOT SET: It is recommended that an env tag be set for all traced applications. For more information please see https://ddtrace.readthedocs.io/en/stable/troubleshooting.html{end}z

{warning}WARNING VERSION NOT SET: It is recommended that a version tag be set for all traced applications. For more information please see https://ddtrace.readthedocs.io/en/stable/troubleshooting.html{end}z

r   )r   r   r   r   r   r   r   r   r   formatrs   )colorr   infoinfo_prettysummaryr   r   r   pretty_collect   s   









 !"#
$%&'(),






r   )T)#rv   r   r   r   r   typingr   r   r   rJ   ddtrace.internal.packagesr    ddtrace.internal.settings._agentr   r   ddtrace.internal.settings.asmr   ddtrace.internal.utils.cacher   ddtrace.internal.writerr	   r
   ddtrace.versionr   r   r   r   r   boolr   rt   r,   r%   r   r   r   r   r   r   <module>   s.    
m