o
    pi
                     @   s2   d dl mZ ddlmZ d dlZG dd dZdS )    )Optional   )PreprocessorsNc                       s`   e Zd ZdZd fdd	Zdd Zdd Zd	d
 Zdd Z	dde	e
 fddZdd Z  ZS )DatabasezPBase database

    This class should be inherited from, not used directly.

    Nc                    s8   |d ur| j j}d| d}t| tt|   d S )Nz0Ignoring deprecated 'preprocessors' argument in z-.__init__. Pass it to 'get_protocol' instead.)	__class____name__warningswarnsuperr   __init__)selfpreprocessorsdatabase_namemsgr    N/home/ubuntu/.local/lib/python3.10/site-packages/pyannote/database/database.pyr   *   s   

zDatabase.__init__c                 C   s6   t | dsi | _|| jvri | j|< || j| |< d S )N
protocols_)hasattrr   )r   	task_nameprotocol_nameprotocolr   r   r   register_protocol6   s
   


zDatabase.register_protocolc                 C   s(   z| j }W |S  ty   d}t|w )Nz.This database does not implement any protocol.)r   AttributeError)r   tasksmessager   r   r   
_get_tasks>   s   zDatabase._get_tasksc                 C   s   |   }t|S N)r   sorted)r   r   r   r   r   	get_tasksF   s   zDatabase.get_tasksc                 C   s   t | j|  S r   )r   r   keys)r   taskr   r   r   get_protocolsJ   s   zDatabase.get_protocolsr   c                 C   s   | j | | |dS )N)r   )r   )r   r!   r   r   r   r   r   get_protocolM   s   zDatabase.get_protocolc                 C   s   | j S r   )__doc__)r   r   r   r   __str__R   s   zDatabase.__str__r   )r   
__module____qualname__r$   r   r   r   r   r"   r   r   r#   r%   __classcell__r   r   r   r   r   #   s    
r   )typingr   protocol.protocolr   r   r   r   r   r   r   <module>   s   