o
    4ѹg                     @   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   S/Users/admin/.pyenv/versions/3.10.0/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headersZclasses_keyZclasses_dictZmetasZregister_keymetadataZ
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)	Ztarget_classregistryregistry_keyZregister_tables_key_metaZregistry_metaZ
class_fileZ
class_linepatternZ	meta_datar   r'   r!   r   r
   	decorator4   s0   




z*RegisterTables.register.<locals>.decoratorNr   )r!   r'   r   r9   r   r8   r
   register1   s    zRegisterTables.registerr   )r/   
__module____qualname____doc__Zmodel_classesZfrontend_classesZspecaug_classesZnormalize_classesZencoder_classesZdecoder_classesZjoint_network_classesZpredictor_classesZstride_conv_classesZtokenizer_classesZdataloader_classesZbatch_sampler_classesZdataset_classesZindex_ds_classesr   r   callabler:   r   r   r   r
   r      s$    r   )r,   r0   dataclassesr   r3   r   Ztablesr   r   r   r
   <module>   s    
O