Ë
    P/æjw  ã                   ó  — d Z ddlmZ ddlmZ ddlZddlZddlZddl	m
Z
mZ ddlmZ ej                  ee
f   Z G d„ d	e«      Zd
edefd„Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ d«      Z G d„ d«      Zy)z»Represents a model repository, including pre-trained models and bags of models.
A repo can either be the main remote repository stored in AWS, or a local repository
with your own models.
é    )Úsha256)ÚPathNé   )ÚBagOfModelsÚModel)Ú
load_modelc                   ó   — e Zd Zy)ÚModelLoadingErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úN/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/demucs/repo.pyr
   r
      s   „ Ør   r
   ÚpathÚchecksumc                 ó  — t        «       }t        | d«      5 }	 |j                  d«      }|sn|j                  |«       Œ&	 d d d «       |j	                  «       d t        |«       }||k7  rt        d| › d|› d|› �«      ‚y # 1 sw Y   Œ?xY w)NÚrbi   zInvalid checksum for file z, expected z	 but got )r   ÚopenÚreadÚupdateÚ	hexdigestÚlenr
   )r   r   ÚshaÚfileÚbufÚactual_checksums         r   Úcheck_checksumr      s©   € Ü
‹(€CÜ	ˆd�DÓ	ð ˜TØØ—)‘)˜EÓ"ˆCÙØØ�J‰J�sŒOð	 ð ÷	ð —m‘m“o n¤s¨8£}Ð5€OØ˜(Ò"ÜÐ"<¸T¸Fð C,Ø,4¨:°Y¸Ð>Oð!Qó Rð 	Rð #÷ð ús   —(A>Á>Bc                   ó0   — e Zd ZdZdedefd„Zdedefd„Zy)ÚModelOnlyRepoz)Base class for all model only repos.
    ÚsigÚreturnc                 ó   — t        «       ‚©N©ÚNotImplementedError©Úselfr!   s     r   Ú	has_modelzModelOnlyRepo.has_model.   ó   € Ü!Ó#Ð#r   c                 ó   — t        «       ‚r$   r%   r'   s     r   Ú	get_modelzModelOnlyRepo.get_model1   r*   r   N)	r   r   r   Ú__doc__ÚstrÚboolr)   r   r,   r   r   r   r    r    +   s-   „ ñð$˜Sð $ Tó $ð$˜Sð $ Uô $r   r    c                   óV   — e Zd Zdej                  eef   fd„Zdedefd„Zdede	fd„Z
y)Ú
RemoteRepoÚmodelsc                 ó   — || _         y r$   ©Ú_models)r(   r2   s     r   Ú__init__zRemoteRepo.__init__6   s	   € Øˆ�r   r!   r"   c                 ó   — || j                   v S r$   r4   r'   s     r   r)   zRemoteRepo.has_model9   ó   € Ø�d—l‘lÐ"Ð"r   c                 ó´   — 	 | j                   |   }t        j                  j                  |dd¬«      }t        |«      S # t        $ r t        d|› d�«      ‚w xY w)Nz2Could not find a pre-trained model with signature ú.ÚcpuT)Úmap_locationÚ
check_hash)r5   ÚKeyErrorr
   ÚtorchÚhubÚload_state_dict_from_urlr   )r(   r!   ÚurlÚpkgs       r   r,   zRemoteRepo.get_model<   sm   € ð	aØ—,‘,˜sÑ#ˆCô �i‰i×0Ñ0Ø˜e°ð 1ó 6ˆä˜#‹Ðøô	 ò 	aÜ#Ð&XÐY\ÐX]Ð]^Ð$_Ó`Ð`ð	aús	   ‚> ¾AN)r   r   r   ÚtpÚDictr.   r6   r/   r)   r   r,   r   r   r   r1   r1   5   sA   „ ð˜rŸw™w s¨C xÑ0ó ð#˜Sð # Tó #ð˜Sð  Uô r   r1   c                   ó>   — e Zd Zdefd„Zd„ Zdedefd„Zdede	fd„Z
y)	Ú	LocalRepoÚrootc                 ó2   — || _         | j                  «        y r$   )rH   Úscan)r(   rH   s     r   r6   zLocalRepo.__init__G   s   € ØˆŒ	Ø�	‰	�r   c                 óf  — i | _         i | _        | j                  j                  «       D ]†  }|j                  dk(  sŒd|j
                  v r.|j
                  j                  d«      \  }}|| j                  |<   n|j
                  }|| j                   v rt        d|› d�«      ‚|| j                   |<   Œˆ y )Nz.thú-z0Duplicate pre-trained model exist for signature z. Please delete all but one.)r5   Ú
_checksumsrH   ÚiterdirÚsuffixÚstemÚsplitr
   )r(   r   Úxp_sigr   s       r   rJ   zLocalRepo.scanK   s­   € ØˆŒØˆŒØ—I‘I×%Ñ%Ó'ò 	,ˆDØ�{‰{˜eÓ#Ø˜$Ÿ)™)Ñ#Ø'+§y¡y§¡°sÓ';Ñ$�F˜HØ.6�D—O‘O FÒ+à!ŸY™Y�FØ˜TŸ\™\Ñ)Ü+ØJÈ6È(ð S5ð 5ó6ð 6ð (,�—‘˜VÒ$ñ	,r   r!   r"   c                 ó   — || j                   v S r$   r4   r'   s     r   r)   zLocalRepo.has_model[   r8   r   c                 ó¾   — 	 | j                   |   }|| j                  v rt	        || j                  |   «       t        |«      S # t        $ r t        d|› d�«      ‚w xY w)Nz0Could not find pre-trained model with signature r:   )r5   r>   r
   rM   r   r   )r(   r!   r   s      r   r,   zLocalRepo.get_model^   sm   € ð	_Ø—<‘< Ñ$ˆDð �$—/‘/Ñ!Ü˜4 §¡°Ñ!5Ô6Ü˜$ÓÐøô	 ò 	_Ü#Ð&VÐWZÐV[Ð[\Ð$]Ó^Ð^ð	_ús   ‚A ÁAN)r   r   r   r   r6   rJ   r.   r/   r)   r   r,   r   r   r   rG   rG   F   s9   „ ð˜Tó ò,ð #˜Sð # Tó #ð ˜Sð   Uô  r   rG   c                   óF   — e Zd ZdZdedefd„Zd„ Zdede	fd„Z
dedefd	„Zy
)ÚBagOnlyRepoziHandles only YAML files containing bag of models, leaving the actual
    model loading to some Repo.
    rH   Ú
model_repoc                 ó@   — || _         || _        | j                  «        y r$   )rH   rW   rJ   )r(   rH   rW   s      r   r6   zBagOnlyRepo.__init__l   s   € ØˆŒ	Ø$ˆŒØ�	‰	�r   c                 ó¢   — i | _         | j                  j                  «       D ]+  }|j                  dk(  sŒ|| j                   |j                  <   Œ- y )Nz.yaml)Ú_bagsrH   rN   rO   rP   )r(   r   s     r   rJ   zBagOnlyRepo.scanq   sC   € ØˆŒ
Ø—I‘I×%Ñ%Ó'ò 	-ˆDØ�{‰{˜gÓ%Ø(,�—
‘
˜4Ÿ9™9Ò%ñ	-r   Únamer"   c                 ó   — || j                   v S r$   )rZ   )r(   r[   s     r   r)   zBagOnlyRepo.has_modelw   s   € Ø�t—z‘zÐ!Ð!r   c                 óV  — 	 | j                   |   }t        j                  t        |«      «      }|d   }|D �cg c]  }| j                  j                  |«      ‘Œ }}|j                  d«      }|j                  d«      }t        |||«      S # t        $ r t        |› d�«      ‚w xY wc c}w )Nz: is neither a single pre-trained model or a bag of models.r2   ÚweightsÚsegment)
rZ   r>   r
   ÚyamlÚ	safe_loadr   rW   r,   Úgetr   )	r(   r[   Ú	yaml_fileÚbagÚ
signaturesr!   r2   r^   r_   s	            r   r,   zBagOnlyRepo.get_modelz   s°   € ð	8ØŸ
™
 4Ñ(ˆIô �n‰nœT )›_Ó-ˆØ˜‘]ˆ
Ø<FÖG°S�$—/‘/×+Ñ+¨CÕ0ÐGˆÐGØ—'‘'˜)Ó$ˆØ—'‘'˜)Ó$ˆÜ˜6 7¨GÓ4Ð4øô ò 	8Ü# t fð -7ð %7ó 8ð 8ð	8üò
 Hs   ‚B ¸"B&ÂB#N)r   r   r   r-   r   r    r6   rJ   r.   r/   r)   r   r,   r   r   r   rV   rV   h   sE   „ ñð˜Tð ¨}ó ò
-ð"˜cð " dó "ð5˜cð 5 kô 5r   rV   c                   ó<   — e Zd Zdedefd„Zdedefd„Zdede	fd„Z
y)	ÚAnyModelReporW   Úbag_repoc                 ó    — || _         || _        y r$   )rW   rh   )r(   rW   rh   s      r   r6   zAnyModelRepo.__init__‰   s   € Ø$ˆŒØ ˆ�r   Úname_or_sigr"   c                 ór   — | j                   j                  |«      xs | j                  j                  |«      S r$   )rW   r)   rh   ©r(   rj   s     r   r)   zAnyModelRepo.has_model�   s,   € Ø�‰×(Ñ(¨Ó5Ò]¸¿¹×9PÑ9PÐQ\Ó9]Ð]r   c                 ó¤   — | j                   j                  |«      r| j                   j                  |«      S | j                  j                  |«      S r$   )rW   r)   r,   rh   rl   s     r   r,   zAnyModelRepo.get_model�   s>   € Ø�?‰?×$Ñ$ [Ô1Ø—?‘?×,Ñ,¨[Ó9Ð9à—=‘=×*Ñ*¨;Ó7Ð7r   N)r   r   r   r    rV   r6   r.   r/   r)   ÚAnyModelr,   r   r   r   rg   rg   ˆ   s>   „ ð! =ð !¸Kó !ð^ Sð ^¨Tó ^ð8 Sð 8¨Xô 8r   rg   )r-   Úhashlibr   Úpathlibr   ÚtypingrD   r?   r`   Úapplyr   r   Ústatesr   ÚUnionrn   ÚRuntimeErrorr
   r.   r   r    r1   rG   rV   rg   r   r   r   ú<module>rv      s�   ðñõ
 Ý Û ã Û ç %Ý ð �8‰8�E˜;Ð&Ñ'€ô	˜ô 	ðR˜ð R¨ó R÷$ñ $ô�ô ô" �ô  ÷D5ñ 5÷@8ò 8r   