Ë
    @çil  ã                   ó   — d dl mZ d dlZd dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
Z
d dlZd dlmZ d dlmZ ddlmZ  ej&                  e«      Zd	„ Zedd
ededefd„«       Zej2                  dfd
edefd„Zdedej6                  fd„Zd
efd„Zy)é    )ÚcontextmanagerN)ÚPath)Úrmtree)ÚBaseContainer)Ú	OmegaConfé   )Úfatalc                 ór  — dd l }t        | t        «      r-| j                  «       D ��ci c]  \  }}|t	        |«      “Œ c}}S t        | t
        t        f«      r| D �cg c]  }t	        |«      ‘Œ c}S t        | |j                  «      r,| j                  «       j                  «       j                  «       S t        | t        «      rt        | «      S | � t        | t        t        t        t        f«      r| S t        | t         «      rt#        j$                  | «      S t'        t)        | «      › d�«      ‚c c}}w c c}w )Nr   z is not jsonable.)ÚtorchÚ
isinstanceÚdictÚitemsÚjsonableÚlistÚtupleÚTensorÚdetachÚcpuÚtolistr   ÚstrÚintÚfloatÚboolr   r   Úto_containerÚ
ValueErrorÚrepr)Úvaluer   ÚkÚvs       ú_/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/dora/utils.pyr   r      só   € Ûä�%œÔØ+0¯;©;¬=Ô9©=¡4 1 a�”8˜A“;‘¨=Ò9Ð9Ü	�EœD¤%˜=Ô	)Ù%*Ó+¡U ”˜• UÑ+Ð+Ü	�E˜5Ÿ<™<Ô	(Ø�|‰|‹~×!Ñ!Ó#×*Ñ*Ó,Ð,Ü	�Eœ4Ô	 Ü�5‹zÐØ	ˆœ* U¬S´%¼¼dÐ,CÔDØˆÜ	�Eœ=Ô	)Ü×%Ñ% eÓ,Ð,äœD ›K˜=Ð(9Ð:Ó;Ð;ùó :ùâ+s   ¨D.ÁD4ÚpathÚmodeÚsuffixc              #   óž   K  — t        | «      |z   }t        ||«      5 }|–— ddd«       t        j                  || «       y# 1 sw Y   Œ xY w­w)a?  
    Write to a temporary file with the given suffix, then rename it
    to the right filename. As renaming a file is usually much faster
    than writing it, this removes (or highly limits as far as I understand NFS)
    the likelihood of leaving a half-written checkpoint behind, if killed
    at the wrong time.
    N)r   ÚopenÚosÚrename)r!   r"   r#   Útmp_pathÚfs        r    Úwrite_and_renamer*   -   sB   è ø€ ô �4‹y˜6Ñ!€HÜ	ˆh˜Ô	 ØŠ÷ 
ä‡I�Iˆh˜Õ÷ 
Ð	üs   ‚A�A¢AÁA
ÁAÚrbc                 ó¶   — 	  |t        | |«      «      S # t        t        j                  t        t
        f$ r!}t        j                  d| |«       Y d}~yd}~ww xY w)zt
    Try to load from a path using torch.load, and handles various failure cases.
    Return None upon failure.
    zLAn error happened when trying to load from %s, this file will be ignored: %rN)r%   ÚOSErrorÚpickleÚUnpicklingErrorÚRuntimeErrorÚEOFErrorÚloggerÚwarning)r!   Úloadr"   Úexcs       r    Útry_loadr6   <   sQ   € ð
Ù”D˜˜tÓ$Ó%Ð%øÜ”V×+Ñ+¬\¼8ÐDò ä�‰ØZØ�#ô	ô ûðús   ‚ ”#A·AÁAÚmodule_nameÚreturnc                 óš   — 	 t        j                  | «      S # t        $ r* t        j	                  d| d¬«       t        d| › d�«       Y y w xY w)NzCould not import module %sT)Úexc_infozFailed to import module Ú.)Ú	importlibÚimport_moduleÚImportErrorr2   Úinfor	   )r7   s    r    Úimport_or_fatalr@   K   sL   € ð9Ü×&Ñ& {Ó3Ð3øÜò 9Ü�‰Ð0°+ÈˆÔMÜÐ(¨¨°QÐ7Ö8ð9ús   ‚ —0A
Á	A
c                 ó2  ‡— dŠˆfd„}t        | |¬«       ‰rn| j                  «       sJ ‚t        j                  | j                  | j
                  dz   d¬«      }t        j                  d| › d|› �«       | j                  |«       y	| j                  «       rJ ‚y	)
z…Reliably delete the given folder, trying to remove while ignoring errors,
    and if any files remain, renaming to some trash folder.Fc                 ó:   •— dŠt         j                  d|› �«       y )NTzError deleting file )r2   r3   )ÚfuncÚ
error_pathr:   Úerrors      €r    Ú	_on_errorz"reliable_rmtree.<locals>._on_errorX   s   ø€ àˆÜ�‰Ð-¨j¨\Ð:Õ;ó    )ÚonerrorÚ_Ú_trash)ÚdirÚprefixr#   zDeletion of z failed, moving to N)	r   ÚexistsÚtempfileÚmkdtempÚparentÚnamer2   r3   r'   )r!   rF   Útarget_namerE   s      @r    Úreliable_rmtreerS   S   s„   ø€ ð €Eô<ô
 ˆ4˜Õ#ÙØ�{‰{Œ}Ðˆ}Ü×&Ñ&¨4¯;©;¸t¿y¹yÈ3¹ÐW_Ô`ˆÜ�‰˜ d VÐ+>¸{¸mÐLÔMØ�‰�KÕ à—;‘;”=Ð Ð �=rG   )Úwbz.tmp)Ú
contextlibr   r<   Úloggingr&   Úpathlibr   r.   Úshutilr   rN   ÚtypingÚtpÚomegaconf.basecontainerr   Ú	omegaconfr   Úlogr	   Ú	getLoggerÚ__name__r2   r   r   r*   r4   r6   ÚAnyr@   rS   © rG   r    Ú<module>rb      s¬   ðõ &Û Û Û 	Ý Û Ý Û Û å 1Ý å à	ˆ×	Ñ	˜8Ó	$€ò<ð& ñ˜4ð  sð ¸3ò ó ðð %Ÿk™k°tñ �4ð °ó ð9 ð 9¨¯©ó 9ð!˜$ô !rG   