
    i^                         d Z ddlZddlZddlmZ  ej                  e      ZdefdZ	d	de
dej                  e   fdZy)
z%Convert PyTorch models to MLX models.    N)Pathreturnc                  `    t        j                         dz  dz  } | j                  dd       | S )z,Get or create the MLX model cache directory.z.cachez
demucs-mlxT)parentsexist_ok)r   homemkdir)	cache_dirs    o/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/demucs_mlx/model_converter.pyget_mlx_cache_dirr   
   s-    		h&5IOOD4O0    namerepoc                 "   ddl m}m} t               }	  || t	        |      dd      }|S # t
        $ rZ t        j                  d|         || t	        |      dd       t        j                  d        || t	        |      dd      }|cY S w xY w)	zT
    Get an MLX model, loading from cache or converting from PyTorch if needed.
       )convert_htdemucs_weightsload_mlx_modelF)r
   auto_convertverbosez/Cache miss for '%s'. Converting from PyTorch...T)
output_dirverifyr   zLoading converted model...)mlx_convertr   r   r   strFileNotFoundErrorloggerinfo)r   r   r   r   r
   models         r   get_mlx_modelr      s     F!#I ts9~E[`a EtL 	!9~		
 	01ts9~E[_`s   + A BB)N)__doc__loggingtypingtppathlibr   	getLogger__name__r   r   r   Optionalr    r   r   <module>r(      sK    +   			8	$4  2;;t#4 r   