Ë
    îÿæib  ã                   ó˜   — d dl Z d dlmZmZ d dlmZ deeeeef         dee   defd„Zdede	fd	„Z
d
„ Zedk(  r ed«        e«        yy)é    N)ÚListÚUnion)Úscan_cache_dirÚrowsÚheadersÚreturnc           	      óª  — t        g | ¢|‘­Ž D �cg c]  }t        d„ |D «       «      ‘Œ }} dt        |«      z  j                  |Ž }g }|j	                   |j                  |Ž «       |j	                   |j                  |D �cg c]  }d|z  ‘Œ	 c}Ž «       | D ]   }|j	                   |j                  |Ž «       Œ" dj                  |«      S c c}w c c}w )zˆ
    Inspired by:
    - stackoverflow.com/a/8356620/593036
    - stackoverflow.com/questions/9535954/printing-lists-as-tabular-data
    c              3   óD   K  — | ]  }t        t        |«      «      –— Œ y ­w©N)ÚlenÚstr)Ú.0Úxs     úb/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/manage.pyÚ	<genexpr>ztabulate.<locals>.<genexpr>   s   è ø€ Ð/©3 a”cœ#˜a›&—k©3ùs   ‚ z{{:{}}} Ú-Ú
)ÚzipÚmaxr   ÚformatÚappendÚjoin)r   r   ÚcolÚ
col_widthsÚ
row_formatÚlinesÚwÚrows           r   Útabulater      sØ   € ô <?Ð;NÀÐ;NÀgÓ;NÓOÑ;N°C”#Ñ/©3Ó/Õ/Ð;N€JÐOØ3�*œs 7›|Ñ+×3Ñ3°ZÐ@€JØ€EØ	‡L�LÐ"�×"Ñ" GÐ,Ô-Ø	‡L�LÐ"�×"Ñ"±jÓ$A±j° S¨1£W°jÑ$AÐBÔCÛˆØ�‰Ð&�Z×&Ñ&¨Ð,Õ-ð à�9‰9�UÓÐùò Pùò %Bs   �CÂCÚmessagec                 ót   — d}d}| › d�}	 t        |«      j                  «       }||v ry||v ryt        d«       Œ/)z\Ask user for confirmation with Y/N prompt.
    Returns True for Y/yes, False for N/no/empty.)ÚyÚyesÚ1)ÚnÚnoÚ0Ú z (y/n) TFz9Invalid input. Must be one of: yes/no/y/n or empty for no)ÚinputÚlowerÚprint)r    r"   r%   Úfull_messageÚanswers        r   Úask_for_confirmationr.      sR   € ð 	€AØ€AØ�Y˜gÐ&€LØ
Ü�|Ó$×*Ñ*Ó,ˆØ�Q‰;ØØ�Q‰;ØÜÐIÔKð ó    c                  ó¢  — t        j                  d¬«      } | j                  ddd¬«       | j                  ddd¬«       | j                  d	t        d
d¬«       | j	                  «       }|j
                  rÜt        d|j                  › d�«       t        «       }t        t        t        |j                  d„ ¬«      D �cg c]�  }|j                  |j                  v rg|j                  |j                  dj                  |j                  «      |j                   |j"                  |j$                  t        |j&                  «      g‘Œƒ c}g d¢¬«      «       |j(                  �rdt        d|j                  › d�«       t        «       }t        |j                  d„ ¬«      D �cg c]  }|j                  |j                  v r|‘Œ }}|rèt        d«       t        t        |D �cg c].  }|j                  |j                  t        |j&                  «      g‘Œ0 c}g d¢¬«      «       t+        d«      }|rt|D ]c  }t        d|j                  › d�«       t        |j,                  d„ ¬«      D ]-  }|j/                  |j0                  «      }|j3                  «        Œ/ Œe t        d«       y t        d«       y t        d|j                  › d�«       y y c c}w c c}w c c}w ) NzMLX Model Cache.)Údescriptionz--scanÚ
store_truez'Scan Hugging Face cache for mlx models.)ÚactionÚhelpz--deletez)Delete models matching the given pattern.z	--patternz Model repos contain the pattern.Úmlx)Útyper4   Údefaultz5Scanning Hugging Face cache for models with pattern "z".c                 ó   — | j                   S r   ©Ú	repo_path©Úrepos    r   Ú<lambda>zmain.<locals>.<lambda>K   s   € ¸d¿nºnr/   )Úkeyz{:>12})úREPO IDz	REPO TYPEzSIZE ON DISKzNB FILESÚLAST_ACCESSEDÚLAST_MODIFIEDú
LOCAL PATH)r   r   z"Deleting models matching pattern "Ú"c                 ó   — | j                   S r   r9   r;   s    r   r=   zmain.<locals>.<lambda>a   s   € ÀTÇ^Â^r/   z
Found the following models:)r?   ÚSIZErB   z.
Are you sure you want to delete these models?z

Deleting z...c                 ó   — | j                   S r   )Úcommit_hash)Úrevisions    r   r=   zmain.<locals>.<lambda>   s
   € À8×CWÒCWr/   z
Model(s) deleted successfully.z&
Deletion cancelled - no changes made.z"No models found matching pattern ")ÚargparseÚArgumentParserÚadd_argumentr   Ú
parse_argsÚscanr+   Úpatternr   r   ÚsortedÚreposÚrepo_idÚ	repo_typer   Úsize_on_disk_strÚnb_filesÚlast_accessed_strÚlast_modified_strr:   Údeleter.   Ú	revisionsÚdelete_revisionsrG   Úexecute)	ÚparserÚargsÚhf_cache_infor<   rP   Ú	confirmedÚ
model_inforH   Ústrategys	            r   Úmainra   &   sÁ  € Ü×$Ñ$Ð1CÔD€FØ
×ÑØØØ6ð ô ð
 ×ÑØØØ8ð ô ð
 ×ÑØÜØ/Øð	 ô ð ×ÑÓ€Dà‡y‚yÜÐEÀdÇlÁlÀ^ÐSUÐVÔWÜ&Ó(ˆÜÜô !'Ø%×+Ñ+Ñ1Lõ!óñ!˜ð —|‘| t§|¡|Ñ3ð Ÿ™ØŸ™Ø Ÿ™¨×(=Ñ(=Ó>ØŸ™Ø×.Ñ.Ø×.Ñ.Ü˜DŸN™NÓ+òð!ñòô!ô	
ð: ‡{ƒ{ÜÐ2°4·<±<°.ÀÐBÔCÜ&Ó(ˆô ˜}×2Ñ2Ñ8SÕTó
áT�Ø�|‰|˜tŸ|™|Ñ+ò ØTð 	ð 
ñ
 ÜÐ1Ô2ÜÜñ %*óñ %*˜Dð	 !ŸL™LØ ×1Ñ1Ü §¡Ó/òð
 %*ñòôôô$ -ØAóˆIñ Û"'�JÜ˜K¨
×(:Ñ(:Ð';¸3Ð?Ô@Ü$*Ø"×,Ñ,Ñ2W÷%˜ð $1×#AÑ#AÀ(×BVÑBVÓ#W˜Ø ×(Ñ(Õ*ñ	%ð #(ô Ð8Õ9äÐ?Õ@äÐ6°t·|±|°nÀAÐFÕGðY ùò7ùò>
ùòs   Â;BKÆ!KÇ3KÚ__main__z}Calling `python -m mlx_lm.manage...` directly is deprecated. Use `mlx_lm.manage...` or `python -m mlx_lm manage ...` instead.)rI   Útypingr   r   Úhuggingface_hubr   r   Úintr   Úboolr.   ra   Ú__name__r+   © r/   r   Ú<module>ri      s€   ðÛ ß å *ð�4˜˜U 3¨ 8™_Ñ-Ñ.ð ¸¸c¹ð Àsó ð L #ð L¨$ó LòaHðH ˆzÒÙ	ð	Lôñ 	…Fð r/   