
    ]i                     :   S r SSKrSSKJr  SSKrSSKJrJr  SSK	J
r
  SSKJrJrJrJrJrJr  SSKJr  \R(                  " \5      rS	r\" \5      R2                  S
-  r/ SQrSrS rS rS\R>                  \ \ 4   4S jr! SS\ S\RD                  \   4S jjr#S r$g)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                  "    [        S[        S9n U $ )N   )channelssources)r   SOURCES)models    N/mnt/rpi/tmp/demucs-venv-sys/lib/python3.13/site-packages/demucs/pretrained.pydemucs_unittestr      s    Q0EL    c                     U R                  SS9nUR                  SSSS9  UR                  SSS S	S
9  U R                  S[        SS9  g )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                 t   Sn0 nU R                  5       R                  S5       H  nUR                  5       nUR                  S5      (       a  M+  UR                  S5      (       a%  UR                  SS5      S   R                  5       nMf  UR                  SS5      S   nXB;  d   e[        U-   U-   X$'   M     U$ )	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zz|??3__W%%::c1%a(..0D**S!$Q'C$$$"T/D0FK 9 Mr   namerepoc                    U S:X  a
  [        5       $ Uc.  [        [        S-  5      n[        U5      n[	        [        U5      nO9UR                  5       (       d  [        U S35        [        U5      n[	        X5      n[        X45      n UR                  U 5      nUR                  5         U$ ! [         a#  nSUR                  S   ;   a
  [        5         e SnAff = f)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_
t0J1H""4( 
JJLL  chhqk!Ns   B* *
C4CCc                     U R                   c   [        U l         [        [        S5      S5        [	        U R                   U R
                  S9$ )z0
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   