o
    pi"                     @   sv   d dl Zd dlZd dlZd dl mZ d dlmZmZ G dd deZ	G dd deZ
deeef d	ed
dfddZdS )    N)PackageNotFoundError)InvalidVersionVersionc                       s2   e Zd ZdZdedededdf fddZ  ZS )	MissingDependencyz7Exception raised when a required dependency is missing.what
dependencyrequiredreturnNc                    s.   t  | d| d| d || _|| _d S )N
 requires  ~ zQ but it is not installed. Use PYANNOTE_SKIP_DEPENDENCY_CHECK=1 to proceed anyway.)super__init__r   r   )selfr   r   r   	__class__ U/home/ubuntu/.local/lib/python3.10/site-packages/pyannote/audio/utils/dependencies.pyr   #   s
   
zMissingDependency.__init____name__
__module____qualname____doc__strr   r   __classcell__r   r   r   r   r       s    &r   c                
       s6   e Zd ZdZdededededdf
 fdd	Z  ZS )
WrongDependencyVersionzCException raised when a required dependency has an invalid version.r   r   r   	availabler	   Nc              
      s:   t  | d| d| d| d || _|| _|| _d S )Nr
   r    but zF is installed. Use PYANNOTE_SKIP_DEPENDENCY_CHECK=1 to proceed anyway.)r   r   r   r   r   )r   r   r   r   r   r   r   r   r   /   s   
zWrongDependencyVersion.__init__r   r   r   r   r   r   ,   s    r   dependenciesr   r	   c                 C   s(  t dddv }|  D ]\}}t|}ztj|}W n! ty=   |r5t	| d| d| dt
 nt|||Y nw tj|}zt|}W n tyd   |sbt	| d| d| dt
 Y qw |j|jkr|dkru|jd	k ruq|rt	| d| d| d
| dt
 qt||||qdS )zCheck if required dependencies are installed

    Raises
    ------
    MissingDependency
        If a required dependency is not found.
    WrongDependencyVersion
        If a required dependency has an incompatible version.
    PYANNOTE_SKIP_DEPENDENCY_CHECKF)T1trueTrueyesYesr
   r   z, but it is not installed. Proceeding anyway.z but we could not figure out which version is installed. Proceeding anyway. Use PYANNOTE_SKIP_DEPENDENCY_CHECK=1 to remove this warning.zpyannote.audio   r   z! is installed. Proceeding anyway.N)osgetenvitemsr   	importlibmetadataversionr   warningswarnUserWarningr   r   majorr   )r   r   skip_dependency_checkr   r*   r   _versionr   r   r   r   check_dependencies;   sP   
r1   )importlib.metadatar(   r%   r+   r   packaging.versionr   r   	Exceptionr   r   dictr   r1   r   r   r   r   <module>   s   "