o
    i                     @   s   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 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)DependencyConflictError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   ~/var/www/html/karishye-ai-python/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_for0   s   z_EntryPointDistFinder.dist_forc                 C   s   | j  d| j d| j S )N:)groupnamevalue)r   r   r   r   r   7   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   


r3   c                 C   s  t tg }t }t|tr|d}dd |D }tddD ]}|   qtddD ]}|j	|v r;t
d|j	 q,z%||}t|}|rQt
d|j	| W q,| j|d	d
 t
d|j	 W q, ty{ } zt
d|j	|j W Y d }~q,d }~w ty } zt
d|j	|j W Y d }~q,d }~w ty   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>[   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_instrumentorr   conflictModuleNotFoundErrormsgImportErrorr/   r.   )r1   package_to_excludeentry_point_finderr   entry_point_distr?   r2   r   r   r   _load_instrumentorsU   sh   




rF   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   r2   r   r   r   _load_configurators   s<   

rM   N)	functoolsr   loggingr   osr   *opentelemetry.instrumentation.dependenciesr   r   $opentelemetry.instrumentation.distror   r   3opentelemetry.instrumentation.environment_variablesr	   r
   r   %opentelemetry.instrumentation.versionr   &opentelemetry.util._importlib_metadatar   r   r   r#   r,   r   r3   rF   rM   r   r   r   r   <module>   s   F