o
    i                     @   s@   d dl Z d dlZd dlmZ d dlZeG dd dZe ZdS )    N)	dataclassc                   @   st   e Zd ZdZi Zi Zi Zi Zi Zi Z	i Z
i Zi Zi Zi Zi Zi Zi Zd
deddfddZd
dededefdd	ZdS )RegisterTableszRegistry system for classes.Nkeyreturnc              
   C   s   t d t| }g d}| D ][\}}|drk|du s!||v rkt d|dd d g }| D ]	\}}|| q3|jdd	 d
 |g| }	dd t|	 D }
|	D ]}t dddd t||
D  d  qUqt d dS )zPrint registered classes.z

tables: 
)zregister namez
class namezclass location_metaNz-----------    **  z **    --------------c                 S   s   | d S )Nr    )xr   r   C/home/ubuntu/.local/lib/python3.10/site-packages/funasr/register.py<lambda>%   s    z&RegisterTables.print.<locals>.<lambda>)r   c                 S   s   g | ]}t d d |D qS )c                 s   s    | ]	}t t|V  qd S N)lenstr).0itemr   r   r
   	<genexpr>'   s    z2RegisterTables.print.<locals>.<listcomp>.<genexpr>)max)r   colr   r   r
   
<listcomp>'   s    z(RegisterTables.print.<locals>.<listcomp>z| z | c                 s   s"    | ]\}}t ||V  qd S r   )r   ljust)r   r   widthr   r   r
   r   ,   s     z'RegisterTables.print.<locals>.<genexpr>z |
)	printvarsitemsendswithreplaceappendsortzipjoin)selfr   fieldsheadersclasses_keyclasses_dictmetasregister_keymetadata
col_widthsrowr   r   r
   r      s,   
zRegisterTables.printregister_tables_keyc                    s    fdd}|S )zDecorator to register a class.c           	         s   t sti  td  t} d ur n| j}||v r1td| d d | ||< d }t |sDt|i  t|}t| }t| d }d}t	
|d|}|| j| d	| g}|||< | S )
NzNew registry table added: zKey z already exists in z, re-registerr      z^.+/funasr/zfunasr/:)hasattrsetattrloggingdebuggetattr__name__inspectgetfilegetsourcelinesresub)	target_classregistryregistry_keyregister_tables_key_metaregistry_meta
class_file
class_linepattern	meta_datar   r,   r!   r   r
   	decorator4   s0   




z*RegisterTables.register.<locals>.decoratorr   )r!   r,   r   rD   r   rC   r
   register1   s    zRegisterTables.registerr   )r4   
__module____qualname____doc__model_classesfrontend_classesspecaug_classesnormalize_classesencoder_classesdecoder_classesjoint_network_classespredictor_classesstride_conv_classestokenizer_classesdataloader_classesbatch_sampler_classesdataset_classesindex_ds_classesr   r   callablerE   r   r   r   r
   r      s$    r   )r1   r5   dataclassesr   r8   r   tablesr   r   r   r
   <module>   s    
O