o
    g                     @   s   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	m
Z
 d dlmZmZmZ d dlmZ d dlmZmZmZ eeZG d	d
 d
Zde	fddZdd Zdd ZdS )    )cached_property)	getLogger)environ)get_dist_dependency_conflicts)
BaseDistroDefaultDistro)OTEL_PYTHON_CONFIGURATOR%OTEL_PYTHON_DISABLED_INSTRUMENTATIONSOTEL_PYTHON_DISTRO)__version__)
EntryPointdistributionsentry_pointsc                   @   s8   e Zd Zedd ZdefddZedefddZdS )	_EntryPointDistFinderc                    s    fddt  D S )Nc                    s$   i | ]}|j D ]} ||qqS  )r   _key_for).0distepselfr   o/var/www/visachat/venv/lib/python3.10/site-packages/opentelemetry/instrumentation/auto_instrumentation/_load.py
<dictcomp>)   s    
z2_EntryPointDistFinder._mapping.<locals>.<dictcomp>)r   r   r   r   r   _mapping'   s   
z_EntryPointDistFinder._mappingentry_pointc                 C   s&   t |dd }|r
|S | j| |S )Nr   )getattrr   getr   )r   r   r   r   r   r   dist_for/   s   z_EntryPointDistFinder.dist_forc                 C   s   | j  d| j d| j S )N:)groupnamevalue)r   r   r   r   r   6   s   z_EntryPointDistFinder._key_forN)	__name__
__module____qualname__r   r   r   r   staticmethodr   r   r   r   r   r   &   s    
r   returnc                  C   s   t td } tddD ]A}z*| d u s| |jkr6|  }t|ts*t	d|j W qt	d|j |W   S W q t
yL } z	td|j |d }~ww t S )Nopentelemetry_distror   z+%s is not an OpenTelemetry Distro. Skippingz"Distribution %s will be configuredz$Distribution %s configuration failed)r   r   r
   r   r    load
isinstancer   _loggerdebug	Exception	exceptionr   )distro_namer   distroexcr   r   r   _load_distro;   s0   


r2   c                 C   s(  t tg }t }t|tr|d}dd |D }tddD ]}|   qtddD ]X}|j	|v r;t
d|j	 q,z%||}t|}|rQt
d|j	| W q,| j|d	d
 t
d|j	 W q, typ   t
d|j	 Y q, ty } z	t
d|j	 |d }~ww tddD ]}|   qd S )N,c                 S   s   g | ]}|  qS r   )strip)r   xr   r   r   
<listcomp>Z   s    z'_load_instrumentors.<locals>.<listcomp>opentelemetry_pre_instrumentr(   opentelemetry_instrumentorz&Instrumentation skipped for library %szSkipping instrumentation %s: %sT)skip_dep_checkzInstrumented %sz#Importing of %s failed, skipping itzInstrumenting of %s failedopentelemetry_post_instrument)r   r   r	   r   r*   strsplitr   r)   r    r+   r,   r   r   load_instrumentorImportErrorr.   r-   )r0   package_to_excludeentry_point_finderr   entry_point_distconflictr1   r   r   r   _load_instrumentorsT   sL   



rC   c                  C   s   t td } d }tddD ]E}|d urtd|j| qz!| d u s&| |jkr3|  jt	d |j}n	td|j| t W q t
yR } z	td|j |d }~ww d S )Nopentelemetry_configuratorr(   z1Configuration of %s not loaded, %s already loaded)auto_instrumentation_versionz6Configuration of %s not loaded because %s is set by %szConfiguration of %s failed)r   r   r   r   r+   warningr    r)   	configurer   r-   r.   )configurator_name
configuredr   r1   r   r   r   _load_configurators   s<   

rJ   N)	functoolsr   loggingr   osr   *opentelemetry.instrumentation.dependenciesr   $opentelemetry.instrumentation.distror   r   3opentelemetry.instrumentation.environment_variablesr   r	   r
   %opentelemetry.instrumentation.versionr   &opentelemetry.util._importlib_metadatar   r   r   r"   r+   r   r2   rC   rJ   r   r   r   r   <module>   s   3