
    mi                     4   d Z ddlZddlmZ ddlZddlmZmZ ddl	m
Z
 ddlmZmZmZmZmZmZ ddlmZ  ej(                  e      Zd	Z ee      j2                  d
z  Zg dZdZd Zd Zdej>                  e e f   fdZ!	 dde dejD                  e   fdZ#d Z$y)zLoading pretrained models.
    N)Path)fatalbold   )HDemucs)
RemoteRepo	LocalRepoModelOnlyRepoBagOnlyRepoAnyModelRepoModelLoadingError)_check_diffqz&https://dl.fbaipublicfiles.com/demucs/remote)drumsbassothervocalshtdemucsc                  (    t        dt              } | S )N   )channelssources)r   SOURCES)models    K/var/www/stems/demucs_env/lib/python3.12/site-packages/demucs/pretrained.pydemucs_unittestr      s    Q0EL    c                     | j                  d      }|j                  ddd       |j                  ddd d	
       | j                  dt        d       y )NF)requiredz-sz--sigzLocally trained XP signature.)helpz-nz--namez8Pretrained model name or signature. Default is htdemucs.)defaultr    z--repoz9Folder containing all pre-trained models for use with -n.)typer    )add_mutually_exclusive_groupadd_argumentr   )parsergroups     r   add_model_flagsr'       sc    ///?E	tW+JK	tXtV  X
tX  Zr   returnc                 X   d}i }| j                         j                  d      D ]  }|j                         }|j                  d      r%|j                  d      r$|j                  dd      d   j                         }Z|j                  dd      d   }||vsJ t        |z   |z   ||<    |S )	N 
#zroot::r   -r   )	read_textsplitstrip
startswithROOT_URL)remote_file_listrootmodelslinesigs        r   _parse_remote_filesr9   )   s    D "F **,2248 	1zz|??3__W%::c1%a(..0D**S!$Q'Cf$$$"T/D0F3K	1 Mr   namerepoc                    | dk(  r
t               S |.t        t        dz        }t        |      }t	        t        |      }n5|j                         st        | d       t        |      }t	        ||      }t        ||      }	 |j                  |       }|j                          |S # t        $ r!}d|j                  d   v r
t                 d}~ww xY w)z`name` must be a bag of models name or a pretrained signature
    from the remote AWS model repo or the specified local repo if `repo` is not None.
    r   Nz	files.txtz must exist and be a directory.diffqr   )r   r9   REMOTE_ROOTr   r   is_dirr   r	   r   	get_modelImportErrorargsr   eval)r:   r;   r6   
model_repobag_repoany_repor   excs           r   r@   r@   9   s    
     |$[;%>?'
{J7{{}TF9:;t_
tZ0J1H""4( 
JJLL  chhqk!Ns   B% %	C.C

Cc                     | j                    t        | _         t        t        d      d       t	        | j                   | j
                        S )z8
    Load local model package or pre-trained model.
    z?Important: the default model was recently changed to `htdemucs`zthe latest Hybrid Transformer Demucs model. In some cases, this model can actually perform worse than previous models. To get back the old default model use `-n mdx_extra_q`.)r:   r;   )r:   DEFAULT_MODELprintr   r@   r;   )rB   s    r   get_model_from_argsrK   V   sA     yy!	dTU&	' $))$))44r   )N)%__doc__loggingpathlibr   typingtpdora.logr   r   hdemucsr   r;   r   r	   r
   r   r   r   statesr   	getLogger__name__loggerr3   __file__parentr>   r   rI   r   r'   Dictstrr9   Optionalr@   rK    r   r   <module>r]      s          d d  			8	$38n##h.
.
ZRWWS#X-> " )-C KK%:
5r   