o
    g2
                     @  sv   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 eeZG dd dZdddZdddZdS )    )annotations)	getLogger)
Collection)InvalidRequirementRequirement)DistributionPackageNotFoundErrorversionc                   @  s:   e Zd ZU dZded< dZded< d	d
ddZdd ZdS )DependencyConflictN
str | Nonerequiredfoundc                 C  s   || _ || _d S Nr   r   )selfr   r    r   a/var/www/visachat/venv/lib/python3.10/site-packages/opentelemetry/instrumentation/dependencies.py__init__#   s   
zDependencyConflict.__init__c                 C  s   d| j  d| j dS )Nz DependencyConflict: requested: "z" but found: ""r   )r   r   r   r   __str__'   s   zDependencyConflict.__str__r   )r   r   r   r   )__name__
__module____qualname__r   __annotations__r   r   r   r   r   r   r   r
      s
   
 r
   distr   returnDependencyConflict | Nonec                 C  s^   g }d}d}||i}| j r+| j D ]}||vs||vrqt|}|j|r*|| qt|S )Nextrainstruments)requiresr   markerevaluateappendget_dependency_conflicts)r   instrumentation_depsr   r   instruments_markerdepreqr   r   r   get_dist_dependency_conflicts+   s   

r(   depsCollection[str | Requirement]c                 C  s   | D ]Z}t |tr|}n&zt|}W n ty1 } ztd|| t|W  Y d }~  S d }~ww zt|j}W n tyH   t| Y   S w |j	
|s\t||j d|   S qd S )Nz<error parsing dependency, reporting as a conflict: "%s" - %s )
isinstancer   r   loggerwarningr
   r	   namer   	specifiercontains)r)   r&   r'   excdist_versionr   r   r   r#   >   s.   
r#   N)r   r   r   r   )r)   r*   r   r   )
__future__r   loggingr   typingr   packaging.requirementsr   r   &opentelemetry.util._importlib_metadatar   r   r	   r   r-   r
   r(   r#   r   r   r   r   <module>   s   
