§
    ÎÐj©%  ã                  ó  — d dl mZ d dlmZ d dlZd dlmZmZmZ d dl	m
Z
mZmZmZ ddgZead(d„Zd)d„Zd*d„Zd+d„Zd)d„Zd)d„Zd„ Zd„ Z ed¬¦  «        d,d„¦   «         Zd-d„Zd.d„Zd„ Zd„ Zd/d „Zd0d!„Zd/d"„Zd1d#„Z d.d$„Z!d2d&„Z"d3d'„Z#dS )4é    )Úannotations)Ú	lru_cacheN)ÚPathÚPurePosixPathÚPureWindowsPath)ÚIterableÚListÚOptionalÚUnionÚckptsú.ÚvalueÚstrÚreturnÚboolc                óh   — dt          | ¦  «        v p!t          | ¦  «                             d¦  «        S )Nz://)zmailto:zurn:)r   Ú
startswith)r   s    úBC:\Users\johnn\OneDrive\Documents\AI\shared\utils\files_locator.pyÚ_is_probable_urlr      s-   € Ø•C˜‘J”JÐÐL¥# e¡*¤*×"7Ò"7Ð8KÑ"LÔ"LÐLó    ÚpathúUnion[str, os.PathLike]c           	     óØ   — t           j                             t           j                             t           j                             t          j        | ¦  «        ¦  «        ¦  «        ¦  «        S ©N)Úosr   ÚabspathÚnormpathÚ
expanduserÚfspath©r   s    r   Ú_absolute_normalized_pathr!      s>   € ÝŒ7�?Š?�2œ7×+Ò+­B¬G×,>Ò,>½r¼yÈ¹¼Ñ,OÔ,OÑPÔPÑQÔQÐQr   ú	list[str]c                 óÜ   — g } t          ¦   «         }t          D ]S}t          |¦  «        }|                     ¦   «         }||vr*|                      |¦  «         |                     |¦  «         ŒT| S r   )ÚsetÚ_checkpoints_pathsr!   ÚcasefoldÚappendÚadd)ÚrootsÚseenÚrootÚ
normalizedÚkeys        r   Ú_checkpoint_rootsr.      sm   € Ø€EÝ‰5Œ5€DÝ"ð ð ˆÝ.¨tÑ4Ô4ˆ
Ø×!Ò!Ñ#Ô#ˆØ�dˆ?ˆ?Ø�LŠL˜Ñ$Ô$Ð$Ø�HŠH�S‰MŒMˆMøØ€Lr   r+   c                ó¸   — 	 t           j                             | |g¦  «                             ¦   «         |                     ¦   «         k    S # t          $ r Y dS w xY w)NF)r   r   Ú
commonpathr&   Ú
ValueError)r   r+   s     r   Ú_is_under_rootr2   !   s\   € ðÝŒw×!Ò! 4¨ ,Ñ/Ô/×8Ò8Ñ:Ô:¸d¿mºm¹o¼oÒMÐMøÝð ð ð Øˆuˆuðøøøs   ‚AA Á
AÁAc                óœ  — | €dS t          j        | ¦  «                             ¦   «         }|r$t          |¦  «        s|                     d¦  «        r|S t           j                             |¦  «        sTt           j                             |¦  «        }t          |¦  «        r| 	                    dd¦  «        S t          |¦  «        }nt          |¦  «        }t          t          ¦   «         t          d¬¦  «        D ]S}t          ||¦  «        sŒt           j                             ||¦  «        }|r|dk    r| 	                    dd¦  «        c S ŒT|S )	zDStore checkpoint-root paths as relative paths; leave URLs unchanged.NÚ ú=ú\ú/T)r-   Úreverser   )r   r   Ústripr   r   r   Úisabsr   Úis_relative_down_pathÚreplacer!   Úsortedr.   Úlenr2   Úrelpath)r   r   Únormalized_relativer,   r+   Úrelatives         r   Úcompress_pathrB   (   sH  € à€|ØˆrÝŒI�d‰OŒO×!Ò!Ñ#Ô#€EØð Õ$ UÑ+Ô+ð ¨u×/?Ò/?ÀÑ/DÔ/Dð ØˆÝŒ7�=Š=˜ÑÔð 6Ý œg×.Ò.¨uÑ5Ô5ÐÝ Ð!4Ñ5Ô5ð 	:Ø&×.Ò.¨t°SÑ9Ô9Ð9Ý.¨uÑ5Ô5ˆ
ˆ
å.¨uÑ5Ô5ˆ
ÝÕ(Ñ*Ô*µ¸TÐBÑBÔBð /ð /ˆÝ˜j¨$Ñ/Ô/ð 	ØÝ”7—?’? :¨tÑ4Ô4ˆØð 	/˜ Cš˜Ø×#Ò# D¨#Ñ.Ô.Ð.Ð.Ð.øØÐr   c                ó  — | €dS t          j        | ¦  «                             ¦   «         }|r$t          |¦  «        s|                     d¦  «        r|S t           j                             |¦  «        rt          |¦  «        S t          |¦  «        st          |¦  «        S t          |d¬¦  «        }|�t          |¦  «        S t          ¦   «         }t          t           j                             |r|d         nd|¦  «        ¦  «        S )zSReturn an absolute local path for checkpoint-relative values; leave URLs unchanged.Nr4   r5   F©Úerror_if_noner   r   )r   r   r9   r   r   r   r:   r!   r;   Úlocate_filer.   Újoin)r   r   Úlocatedr)   s       r   Úuncompress_pathrI   ?   sõ   € à€|ØˆrÝŒI�d‰OŒO×!Ò!Ñ#Ô#€EØð Õ$ UÑ+Ô+ð ¨u×/?Ò/?ÀÑ/DÔ/Dð ØˆÝ	„w‡}‚}�UÑÔð 0Ý(¨Ñ/Ô/Ð/Ý  Ñ'Ô'ð 0Ý(¨Ñ/Ô/Ð/Ý˜%¨uÐ5Ñ5Ô5€GØÐÝ(¨Ñ1Ô1Ð1ÝÑÔ€EÝ$¥R¤W§\¢\¸eÐ2L°%¸´(°(ÈÈeÑ%TÔ%TÑUÔUÐUr   c                óp   — t          | t          t          f¦  «        rd„ | D ¦   «         S t          | ¦  «        S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS © )rB   ©Ú.0r   s     r   ú
<listcomp>z"compress_paths.<locals>.<listcomp>S   s    € Ð6Ð6Ð6¨•˜dÑ#Ô#Ð6Ð6Ð6r   )Ú
isinstanceÚlistÚtuplerB   ©Úpathss    r   Úcompress_pathsrU   Q   s:   € Ý�%�$¥˜Ñ'Ô'ð 7Ø6Ð6°Ð6Ñ6Ô6Ð6Ý˜ÑÔÐr   c                óp   — t          | t          t          f¦  «        rd„ | D ¦   «         S t          | ¦  «        S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS rL   )rI   rM   s     r   rO   z$uncompress_paths.<locals>.<listcomp>Y   s    € Ð8Ð8Ð8¨$• Ñ%Ô%Ð8Ð8Ð8r   )rP   rQ   rR   rI   rS   s    r   Úuncompress_pathsrX   W   s:   € Ý�%�$¥˜Ñ'Ô'ð 9Ø8Ð8°%Ð8Ñ8Ô8Ð8Ý˜5Ñ!Ô!Ð!r   i   )Úmaxsizec                óF  — t          | ¦  «        dk    sd| v rdS t          | ¦  «        }t          | ¦  «        }|j        s|j        s|j        rdS d|j        v s	d|j        v rdS t          d„ |                      dd¦  «                             d¦  «        D ¦   «         ¦  «        S )Nr   ú Fz..c              3  ó   K  — | ]}|d vV — Œ	dS )©r4   r   NrL   )rN   Úparts     r   ú	<genexpr>z0_is_relative_down_path_cached.<locals>.<genexpr>f   s'   è è € ÐTÐT¨ˆt˜9Ð$ÐTÐTÐTÐTÐTÐTr   r6   r7   )	r>   r   r   Údriver+   ÚpartsÚanyr<   Úsplit)r   Úwindows_pathÚ
posix_paths      r   Ú_is_relative_down_path_cachedrf   \   s´   € å
ˆ4�y„y�A‚~€~˜ 4˜˜ØˆuÝ" 4Ñ(Ô(€LÝ˜tÑ$Ô$€JØÔð ˜\Ô.ð °*´/ð ØˆuØˆ|Ô!Ð!Ð! T¨ZÔ-=Ð%=Ð%=ØˆuÝÐTÐT°·²¸dÀCÑ1HÔ1H×1NÒ1NÈsÑ1SÔ1SÐTÑTÔTÑTÔTÐTr   c                óÀ   — 	 t          j        | ¦  «                             ¦   «         } n# t          $ r Y dS w xY wt	          | t
          ¦  «        sdS t          | ¦  «        S )z@Return True for relative paths that cannot escape a base folder.F)r   r   r9   Ú	TypeErrorrP   r   rf   r    s    r   r;   r;   h   si   € ðÝŒy˜‰Œ×$Ò$Ñ&Ô&ˆˆøÝð ð ð Øˆuˆuðøøøå�d�CÑ Ô ð ØˆuÝ(¨Ñ.Ô.Ð.s   ‚&) ©
7¶7Tc                óf   — | dk    s| €| S t          | ¦  «        r| S |sdS t          d| › d�¦  «        ‚)Nr4   zUnsafe relative path found : 'ú')r;   Ú	Exception)r   Útrigger_errors     r   Úclean_relative_pathrm   r   sI   € ØˆR‚x€x�4�<¨ Ý˜TÑ"Ô"Ð/¨4 KØÐ#  Ý
Ð<°TÐ<Ð<Ð<Ñ
=Ô
=Ð=r   c                óV   — d„ | D ¦   «         a t          | ¦  «        dk    r	t          a d S d S )Nc                ó€   — g | ];}t          |                     ¦   «         ¦  «        d k    ¯'|                     ¦   «         ‘Œ<S )r   )r>   r9   rM   s     r   rO   z)set_checkpoints_paths.<locals>.<listcomp>z   s;   € Ð_Ð_Ð_¨4ÍÈDÏJÊJÉLÌLÑHYÔHYÐ\]ÒH]ÐH]˜$Ÿ*š*™,œ,ÐH]ÐH]ÐH]r   r   )r%   r>   Údefault_checkpoints_paths)Úcheckpoints_pathss    r   Úset_checkpoints_pathsrr   x   s?   € à_Ð_Ð3DÐ_Ñ_Ô_ÐÝ
ÐÑÔ Ò"Ð"Ý6ÐÐÐð #Ð"r   c                ó*  — | �,t          | t          ¦  «        rt          | ¦  «        r| d         } | €d S t          j        | ¦  «                             ¦   «         } t          | ¦  «        dk    rd S t          j                             | ¦  «        }|dv rd n|S )Nr   r]   )rP   rQ   r>   r   r   r9   r   r   )Ú
force_pathr,   s     r   Ú_normalize_force_pathru   ~   s�   € ØÐ¥*¨Z½Ñ">Ô">ÐÅ3ÀzÁ?Ä?ÐØ ”]ˆ
ØÐØˆtÝ”˜:Ñ&Ô&×,Ò,Ñ.Ô.€JÝ
ˆ:�„˜!ÒÐØˆtÝ”×!Ò! *Ñ-Ô-€JØ Ð*Ð*ˆ4ˆ4°
Ð:r   c                óð  — |                       d¦  «        sd| v rd| › d�‚| S |                      d¦  «        }t          j                             |d         ¦  «        }t          |¦  «        dk    r|S t          |¦  «        dk    rd| › �‚t          |d         ¦  «        }|d	k    r4|€t          d
| › d�¦  «        ‚t          j                             |¦  «        }t          j         	                    ||¦  «        S )NÚhttpú|zlocal path z can't contain a '|'r   é   é   zInvalid path z	%lora_dirzUnable to compute %lora_dir in z, no lora_dir was provided)
r   rc   r   r   Úbasenamer>   rm   rk   r   rG   )ÚurlÚlora_dirÚ
path_partsÚnew_urlÚalternate_paths        r   Úextract_alternate_pathr�   ‰   sö   € Ø�>Š>˜&Ñ!Ô!ð Ø�#ˆ:ˆ:Ø9 Ð9Ð9Ð9Ð9Øˆ
à—’˜3‘”€JÝŒg×Ò˜z¨!œ}Ñ-Ô-€GÝ
ˆ:�„˜!ÒÐ G˜^Ý
ˆ:�„˜!ÒÐÐ#8°3Ð#8Ð#8Ð8Ý(¨°A¬Ñ7Ô7€NØ˜Ò$Ð$ØÐÝÐ]¸cÐ]Ð]Ð]Ñ^Ô^Ð^ÝœŸš¨Ñ2Ô2ˆÝŒ7�<Š<˜¨Ñ0Ô0Ð0r   c                óî  — | �1t          | |¦  «        } t          j                             | ¦  «        r| S |�,t	          |t
          ¦  «        rt          |¦  «        r|d         }| �Y|€+t          j                             t          d         | ¦  «        S t          j                             t          d         || ¦  «        S |€t          d         S t          j                             t          d         |¦  «        S ©Nr   )	r�   r   r   r:   rP   rQ   r>   rG   r%   )Ú	file_namert   r}   s      r   Úget_download_locationr…   š   sÏ   € ØÐÝ*¨9°hÑ?Ô?ˆ	ÝŒ7�=Š=˜Ñ#Ô#Ð5¨IÐ%5ØÐ¥*¨Z½Ñ">Ô">ÐÅ3ÀzÁ?Ä?ÐÐakÐlmÔanÐT^ØÐØÐÝ”7—<’<Õ 2°1Ô 5°yÑAÔAÐAå”7—<’<Õ 2°1Ô 5°zÀ9ÑMÔMÐMàÐÝ% aÔ(Ð(å”7—<’<Õ 2°1Ô 5°zÑCÔCÐCr   c                ó4  — t          | ¦  «        } | €t          d         S t          j                             | ¦  «        r| S t          D ]E}t          j                             || ¦  «        }t          j                             |¦  «        r|c S ŒFt          d         S rƒ   )ru   r%   r   r   r:   rG   Úisdir)rt   ÚfolderÚ	candidates      r   Úget_smart_download_rootrŠ   ª   s�   € Ý& zÑ2Ô2€JØÐÝ! !Ô$Ð$Ý	„w‡}‚}�ZÑ Ô ð ØÐÝ$ð ð ˆÝ”G—L’L ¨Ñ4Ô4ˆ	ÝŒ7�=Š=˜Ñ#Ô#ð 	ØˆMˆMˆMð	å˜aÔ Ð r   c                óÒ  — | �0t          | ¦  «        } t          j                             | ¦  «        r| S t	          |¦  «        }|€t          | ¦  «        S t          j                             |¦  «        r$| €|nt          j                             || ¦  «        S t          |¦  «        }t          j                             ||¦  «        }| €|nt          j                             || ¦  «        S r   )r�   r   r   r:   ru   r…   rG   rŠ   )r„   rt   r+   Ú	base_paths       r   Úget_smart_download_locationr�   ¶   sÉ   € ØÐÝ*¨9Ñ5Ô5ˆ	ÝŒ7�=Š=˜Ñ#Ô#ð 	ØÐÝ& zÑ2Ô2€JØÐÝ$ YÑ/Ô/Ð/Ý	„w‡}‚}�ZÑ Ô ð XØ&Ð.ˆzˆzµB´G·L²LÀÈYÑ4WÔ4WÐWÝ" :Ñ.Ô.€DÝ”—’˜T :Ñ.Ô.€IØ!Ð)ˆ9ˆ9­r¬w¯|ª|¸IÀyÑ/QÔ/QÐQr   c                óâ  — g }t           j                             | ¦  «        r7t           j                             | ¦  «        r| S |                     | ¦  «         nt
          D ]w}t           j                             || ¦  «        }t           j                             |¦  «        r|c S |                     t           j                             |¦  «        ¦  «         Œx|rt          d| › d|› �¦  «        ‚d S )NzUnable to locate folder 'ú	', tried )	r   r   r:   r‡   r'   r%   rG   r   rk   )Úfolder_namerE   Úsearched_locationsrˆ   r   s        r   Úlocate_folderr’   Ä   sà   € ØÐÝ	„w‡}‚}�[Ñ!Ô!ð =ÝŒ7�=Š=˜Ñ%Ô%Ð9¨kÐ'9Ø×!Ò! +Ñ.Ô.Ð.Ð.å(ð 	=ð 	=ˆFÝ”7—<’< ¨Ñ4Ô4ˆDÝŒw�}Š}˜TÑ"Ô"ð Ø���Ø×%Ò%¥b¤g§o¢o°dÑ&;Ô&;Ñ<Ô<Ð<Ð<ØÐm�IÐ&lÀ+Ð&lÐ&lÐXjÐ&lÐ&lÑmÔmÐmØˆ4r   Fc                óz  — |                       d¦  «        rt          j                             | ¦  «        } g }t          j                             | ¦  «        r7t          j                             | ¦  «        r| S |                     | ¦  «         n†t          |€g n|z   D ]w}t          j                             || ¦  «        }t          j                             |¦  «        r|c S |                     t          j         	                    |¦  «        ¦  «         Œx|rt          | ¦  «        S |rt          d| › d|› �¦  «        ‚d S )Nrw   zUnable to locate file 'r�   )r   r   r   r{   r:   Úisfiler'   r%   rG   r   r…   rk   )r„   Úcreate_path_if_nonerE   Úextra_pathsr‘   rˆ   r   s          r   rF   rF   Ó   s/  € Ø×Ò˜FÑ#Ô#ð 0Ý”G×$Ò$ YÑ/Ô/ˆ	ØÐÝ	„w‡}‚}�YÑÔð =ÝŒ7�>Š>˜)Ñ$Ô$Ð6¨YÐ&6Ø×!Ò! )Ñ,Ô,Ð,Ð,å(°+Ð2E¨B¨BÈ;ÑWð 	=ð 	=ˆFÝ”7—<’< ¨	Ñ2Ô2ˆDÝŒw�~Š~˜dÑ#Ô#ð Ø���Ø×%Ò%¥b¤g§o¢o°dÑ&;Ô&;Ñ<Ô<Ð<Ð<àð 0Ý$ YÑ/Ô/Ð/ØÐi�IÐ&hÀ	Ð&hÐ&hÐTfÐ&hÐ&hÑiÔiÐiØˆ4r   c                ó2  — t          | |¦  «        }|r„|�qt          j                             |¦  «        sRt	          |t
          ¦  «        s|g}|D ]7}t          t          j                             ||¦  «        d¬¦  «        }|�|c S Œ8t          |d¬¦  «        }|S )NFrD   )r�   r   r   r:   rP   rQ   rF   rG   )Úmodel_filenameÚuse_locatorr–   r}   Úlocal_model_filenamer   Úfilenames          r   Úget_local_model_filenamerœ   æ   sª   € Ý1°.À(ÑKÔKÐØð XØÐ"­2¬7¯=ª=Ð9MÑ+NÔ+NÐ"Ý˜k­4Ñ0Ô0ÐMÀÀ°+Ø#ð 9ð 9�Ý&¥r¤w§|¢|°DÐ:NÑ'OÔ'OÐ`eÐfÑfÔf�ØÐ'°¨¨¨Ð'Ý*Ð+?ÐPUÐWÑWÔWÐØÐr   )r   r   r   r   )r   r   r   r   )r   r"   )r   r   r+   r   r   r   )r   r   r   r   )r   r   r   r   )Tr   )NNN)NN)FTN)TNN)$Ú
__future__r   Ú	functoolsr   r   Úpathlibr   r   r   Útypingr   r	   r
   r   rp   r%   r   r!   r.   r2   rB   rI   rU   rX   rf   r;   rm   rr   ru   r�   r…   rŠ   r�   r’   rF   rœ   rL   r   r   ú<module>r¡      s<  ðà "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø 	€	€	€	Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à$ c˜NÐ à.Ð ðMð Mð Mð MðRð Rð Rð Rð	ð 	ð 	ð 	ðð ð ð ðð ð ð ð.Vð Vð Vð Vð$ ð  ð  ð"ð "ð "ð
 €�4ÐÑÔð	Uð 	Uð 	Uñ Ôð	Uð/ð /ð /ð /ð>ð >ð >ð >ð7ð 7ð 7ð	;ð 	;ð 	;ð1ð 1ð 1ð 1ð"Dð Dð Dð Dð 
!ð 
!ð 
!ð 
!ðRð Rð Rð Rðð ð ð ðð ð ð ð&	 ð 	 ð 	 ð 	 ð 	 ð 	 r   