Ë
    :vžj10  ã                   óæ   — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZmZmZmZ dd
lmZmZ  G d„ dee«      Z G d„ deee«      Z G d„ dee«      Z G d„ dee«      Zy)z)
File-based Checkpoints implementations.
é    N)Úrun_sync)Úensure_dir_exists©Ú	HTTPError)ÚUnicode)Ú_tzé   )ÚAsyncCheckpointsÚAsyncGenericCheckpointsMixinÚCheckpointsÚGenericCheckpointsMixin)ÚAsyncFileManagerMixinÚFileManagerMixinc                   ón   — e Zd ZdZ eddd¬«      Z ed¬«      Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zy)ÚFileCheckpointszá
    A Checkpoints that caches checkpoints for files in adjacent
    directories.

    Only works with FileContentsManager.  Use GenericFileCheckpoints if
    you want file-based checkpoints with another ContentsManager.
    z.ipynb_checkpointsTz©The directory name in which to keep file checkpoints

        This is a path relative to the file's own directory.

        By default, it is .ipynb_checkpoints
        )ÚconfigÚhelp)r   c                 ón   — | j                   st        j                  «       S | j                   j                  S )N)ÚparentÚosÚgetcwdÚroot_dir)Úselfs    ú�/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_server/services/contents/filecheckpoints.pyÚ_root_dir_defaultz!FileCheckpoints._root_dir_default/   s%   € Ø�{Š{Ü—9‘9“;ÐØ�{‰{×#Ñ#Ð#ó    c                 ó”   — d}|j                  |«      }| j                  ||«      }| j                  ||«       | j                  ||«      S )úCreate a checkpoint.Ú
checkpoint©Ú_get_os_pathÚcheckpoint_pathÚ_copyÚcheckpoint_model©r   Úcontents_mgrÚpathÚcheckpoint_idÚsrc_pathÚ	dest_paths         r   Úcreate_checkpointz!FileCheckpoints.create_checkpoint5   sJ   € à$ˆØ×,Ñ,¨TÓ2ˆØ×(Ñ(¨¸Ó=ˆ	Ø�
‰
�8˜YÔ'Ø×$Ñ$ ]°IÓ>Ð>r   c                 ón   — | j                  ||«      }|j                  |«      }| j                  ||«       y©zRestore a checkpoint.N©r"   r!   r#   ©r   r&   r(   r'   r)   r*   s         r   Úrestore_checkpointz"FileCheckpoints.restore_checkpoint=   s2   € à×'Ñ'¨°tÓ<ˆØ ×-Ñ-¨dÓ3ˆ	Ø�
‰
�8˜YÕ'r   c                 ó<  — | j                  ||«      }| j                  ||«      }t        j                  j                  |«      rM| j                  j                  d||«       | j                  «       5  t        j                  ||«       ddd«       yy# 1 sw Y   yxY w©z.Rename a checkpoint from old_path to new_path.zRenaming checkpoint %s -> %sN)	r"   r   r'   ÚisfileÚlogÚdebugÚperm_to_403ÚshutilÚmove©r   r(   Úold_pathÚnew_pathÚold_cp_pathÚnew_cp_paths         r   Úrename_checkpointz!FileCheckpoints.rename_checkpointD   s�   € à×*Ñ*¨=¸(ÓCˆØ×*Ñ*¨=¸(ÓCˆÜ�7‰7�>‰>˜+Ô&Ø�H‰H�N‰NØ.ØØôð
 ×!Ñ!Õ#Ü—‘˜K¨Ô5÷ $Ð#ð '÷ $Ð#ús   Á1BÂBc                 óX  — |j                  d«      }| j                  ||«      }t        j                  j	                  |«      s| j                  ||«       | j                  j                  d|«       | j                  «       5  t        j                  |«       ddd«       y# 1 sw Y   yxY w©zdelete a file's checkpointÚ/zunlinking %sN)
Ústripr"   r   r'   r3   Úno_such_checkpointr4   r5   r6   Úunlink©r   r(   r'   Úcp_paths       r   Údelete_checkpointz!FileCheckpoints.delete_checkpointQ   sw   € à�z‰z˜#‹ˆØ×&Ñ& }°dÓ;ˆÜ�w‰w�~‰~˜gÔ&Ø×#Ñ# D¨-Ô8à�‰�‰�~ wÔ/Ø×ÑÕÜ�I‰I�gÔ÷  ×Ñús   ÂB Â B)c                 ó´   — |j                  d«      }d}| j                  ||«      }t        j                  j	                  |«      sg S | j                  ||«      gS )ú~list the checkpoints for a given file

        This contents manager currently only supports one checkpoint per file.
        rA   r   ©rB   r"   r   r'   r3   r$   ©r   r'   r(   Úos_paths       r   Úlist_checkpointsz FileCheckpoints.list_checkpoints\   sS   € ð
 �z‰z˜#‹ˆØ$ˆØ×&Ñ& }°dÓ;ˆÜ�w‰w�~‰~˜gÔ&ØˆIà×)Ñ)¨-¸ÓAÐBÐBr   c                 ó&  — |j                  d«      }d|z   j                  dd«      \  }}|j                  d«      }t        j                  j	                  |«      \  }}|› d|› |› �}| j                  |¬«      }t        j                  j                  || j                  «      }	t        j                  t        j                  j                  |	«      t        j                  «      s^t        j                  j                  || j                  ¬«      }
t        j                  j                  t        j                  «       d|
«      }	| j                  «       5  t!        |	«       ddd«       t        j                  j                  |	|«      }|S # 1 sw Y   Œ+xY w)zfind the path to a checkpointrA   r	   Ú-)r'   )ÚstartÚjupyter_checkpointsN)rB   Úrsplitr   r'   Úsplitextr!   ÚjoinÚcheckpoint_dirÚaccessÚdirnameÚW_OKÚrelpathr   ÚtempfileÚ
gettempdirr6   r   )r   r(   r'   r   ÚnameÚbasenameÚextÚfilenamerL   Úcp_dirÚrelrF   s               r   r"   zFileCheckpoints.checkpoint_pathj   s%  € à�z‰z˜#‹ˆØ˜d™
×*Ñ*¨3°Ó2‰ˆ�Ø—‘˜cÓ"ˆÜŸ™×(Ñ(¨Ó.‰ˆ�#Ø�Z˜q  °¨uÐ5ˆØ×#Ñ#¨Ð#Ó0ˆÜ—‘—‘˜g t×':Ñ':Ó;ˆä�y‰yœŸ™Ÿ™¨Ó0´"·'±'Ô:Ü—'‘'—/‘/ '°·±�/Ó?ˆCÜ—W‘W—\‘\¤(×"5Ñ"5Ó"7Ð9NÐPSÓTˆFØ×ÑÕÜ˜fÔ%÷  ä—'‘'—,‘,˜v xÓ0ˆØˆ÷  Ðús   ÅFÆFc                 óx   — t        j                  |«      }t        j                  |j                  «      }||dœ}|S )ú.construct the info dict for a given checkpoint©ÚidÚlast_modified)r   ÚstatÚtzÚutcfromtimestampÚst_mtime©r   r(   rL   Ústatsrf   Úinfos         r   r$   z FileCheckpoints.checkpoint_model|   s8   € ä—‘˜Ó ˆÜ×+Ñ+¨E¯N©NÓ;ˆàØ*ñ
ˆð ˆr   c                 ó&   — t        dd|› d|› �«      ‚)Ni”  zCheckpoint does not exist: Ú@r   )r   r'   r(   s      r   rC   z"FileCheckpoints.no_such_checkpoint‡   s   € Ü˜Ð:¸4¸&ÀÀ-ÀÐQÓRÐRr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rU   r   r   r+   r0   r>   rG   rM   r"   r$   rC   © r   r   r   r      sY   „ ññ ØØðô	€Nñ ˜dÔ#€Hò$ò?ò(ò6ò	òCòò$óSr   r   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚAsyncFileCheckpointsc              ƒ   óÄ   K  — d}|j                  |«      }| j                  ||«      }| j                  ||«      ƒ d{  –—†  | j                  ||«      ƒ d{  –—† S 7 Œ7 Œ­w)r   r   Nr    r%   s         r   r+   z&AsyncFileCheckpoints.create_checkpointŒ   s`   è ø€ à$ˆØ×,Ñ,¨TÓ2ˆØ×(Ñ(¨¸Ó=ˆ	Ø�j‰j˜ 9Ó-×-Ð-Ø×*Ñ*¨=¸)ÓD×DÐDð 	.øØDús!   ‚;A ½A¾A ÁAÁA ÁA c              ƒ   óŠ   K  — | j                  ||«      }|j                  |«      }| j                  ||«      ƒ d{  –—†  y7 Œ­wr-   r.   r/   s         r   r0   z'AsyncFileCheckpoints.restore_checkpoint”   s<   è ø€ à×'Ñ'¨°tÓ<ˆØ ×-Ñ-¨dÓ3ˆ	Ø�j‰j˜ 9Ó-×-Ò-ús   ‚9A»A¼Ac              ƒ   óž   K  — t        t        j                  |«      ƒ d{  –—† }t        j                  |j
                  «      }||dœ}|S 7 Œ*­w)rc   Nrd   )r   r   rg   rh   ri   rj   rk   s         r   r$   z%AsyncFileCheckpoints.checkpoint_modelš   sF   è ø€ äœrŸw™w¨Ó0×0ˆÜ×+Ñ+¨E¯N©NÓ;ˆàØ*ñ
ˆð ˆð 1ús   ‚A A¡+Ac              ƒ   ób  K  — | j                  ||«      }| j                  ||«      }t        j                  j                  |«      rZ| j                  j                  d||«       | j                  «       5  t        t        j                  ||«      ƒ d{  –—†  ddd«       yy7 Œ# 1 sw Y   yxY w­wr2   )
r"   r   r'   r3   r4   r5   r6   r   r7   r8   r9   s         r   r>   z&AsyncFileCheckpoints.rename_checkpoint¥   s“   è ø€ à×*Ñ*¨=¸(ÓCˆØ×*Ñ*¨=¸(ÓCˆÜ�7‰7�>‰>˜+Ô&Ø�H‰H�N‰NØ.ØØôð
 ×!Ñ!Õ#ÜœvŸ{™{¨K¸ÓE×EÐE÷ $Ð#ð 'ð Fø÷ $Ð#üs0   ‚A1B/Á3B#ÂB!ÂB#Â
B/Â!B#Â#B,Â(B/c              ƒ   ó~  K  — |j                  d«      }| j                  ||«      }t        j                  j	                  |«      s| j                  ||«       | j                  j                  d|«       | j                  «       5  t        t        j                  |«      ƒ d{  –—†  ddd«       y7 Œ# 1 sw Y   yxY w­wr@   )rB   r"   r   r'   r3   rC   r4   r5   r6   r   rD   rE   s       r   rG   z&AsyncFileCheckpoints.delete_checkpoint²   s‹   è ø€ à�z‰z˜#‹ˆØ×&Ñ& }°dÓ;ˆÜ�w‰w�~‰~˜gÔ&Ø×#Ñ# D¨-Ô8à�‰�‰�~ wÔ/Ø×ÑÕÜœ2Ÿ9™9 gÓ.×.Ð.÷  ÐØ.ø÷  Ðüs0   ‚BB=ÂB1Â!B/Â"B1Â&	B=Â/B1Â1B:Â6B=c              ƒ   óÐ   K  — |j                  d«      }d}| j                  ||«      }t        j                  j	                  |«      sg S | j                  ||«      ƒ d{  –—† gS 7 Œ­w)rI   rA   r   NrJ   rK   s       r   rM   z%AsyncFileCheckpoints.list_checkpoints½   s]   è ø€ ð
 �z‰z˜#‹ˆØ$ˆØ×&Ñ& }°dÓ;ˆÜ�w‰w�~‰~˜gÔ&ØˆIà×/Ñ/°¸wÓG×GÐHÐHÐGús   ‚AA&ÁA$ÁA&N)	rp   rq   rr   r+   r0   r$   r>   rG   rM   rt   r   r   rv   rv   ‹   s#   „ òEò.òòFò	/óIr   rv   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚGenericFileCheckpointszZ
    Local filesystem Checkpoints that works with any conforming
    ContentsManager.
    c                 ó  — |j                  d«      }d}| j                  ||«      }| j                  j                  d|«       | j	                  «       5  | j                  |||¬«       ddd«       | j                  ||«      S # 1 sw Y   ŒxY w©z7Create a checkpoint from the current content of a file.rA   r   úcreating checkpoint for %s©ÚformatN©rB   r"   r4   r5   r6   Ú
_save_filer$   ©r   Úcontentrƒ   r'   r(   Úos_checkpoint_paths         r   Úcreate_file_checkpointz-GenericFileCheckpoints.create_file_checkpointÑ   s}   € à�z‰z˜#‹ˆà$ˆØ!×1Ñ1°-ÀÓFÐØ�‰�‰Ð3°TÔ:Ø×ÑÕØ�O‰OÐ.°ÀˆOÔG÷  ð ×$Ñ$ ]Ð4FÓGÐG÷	  Ðús   ÁBÂB
c                 ó  — |j                  d«      }d}| j                  ||«      }| j                  j                  d|«       | j	                  «       5  | j                  ||«       ddd«       | j                  ||«      S # 1 sw Y   ŒxY w©z;Create a checkpoint from the current content of a notebook.rA   r   r�   N©rB   r"   r4   r5   r6   Ú_save_notebookr$   ©r   Únbr'   r(   rˆ   s        r   Úcreate_notebook_checkpointz1GenericFileCheckpoints.create_notebook_checkpointÞ   s{   € à�z‰z˜#‹ˆà$ˆØ!×1Ñ1°-ÀÓFÐØ�‰�‰Ð3°TÔ:Ø×ÑÕØ×ÑÐ 2°BÔ7÷  ð ×$Ñ$ ]Ð4FÓGÐG÷	  Ðús   ÁA?Á?Bc                 ó  — |j                  d«      }| j                  j                  d||«       | j                  ||«      }t        j
                  j                  |«      s| j                  ||«       d| j                  |d¬«      dœS )ú Get a checkpoint for a notebook.rA   úrestoring %s from checkpoint %sÚnotebooké   ©Ú
as_version©Útyper‡   ©	rB   r4   rm   r"   r   r'   r3   rC   Ú_read_notebook©r   r(   r'   rˆ   s       r   Úget_notebook_checkpointz.GenericFileCheckpoints.get_notebook_checkpointë   s€   € à�z‰z˜#‹ˆØ�‰�‰Ð7¸¸}ÔMØ!×1Ñ1°-ÀÓFÐä�w‰w�~‰~Ð0Ô1Ø×#Ñ# D¨-Ô8ð Ø×*Ñ*Ø"Øð +ó ñ
ð 	
r   c                 ó  — |j                  d«      }| j                  j                  d||«       | j                  ||«      }t        j
                  j                  |«      s| j                  ||«       | j                  |d¬«      \  }}d||dœS ©zGet a checkpoint for a file.rA   r“   Nr‚   Úfile)r™   r‡   rƒ   ©	rB   r4   rm   r"   r   r'   r3   rC   Ú
_read_file©r   r(   r'   rˆ   r‡   rƒ   s         r   Úget_file_checkpointz*GenericFileCheckpoints.get_file_checkpointü   s‚   € à�z‰z˜#‹ˆØ�‰�‰Ð7¸¸}ÔMØ!×1Ñ1°-ÀÓFÐä�w‰w�~‰~Ð0Ô1Ø×#Ñ# D¨-Ô8àŸ/™/Ð*<ÀT˜/ÓJ‰ˆ�àØØñ
ð 	
r   N©rp   rq   rr   rs   r‰   r�   r�   r¤   rt   r   r   r~   r~   Ë   s   „ ñò
HòHò
ó"
r   r~   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚAsyncGenericFileCheckpointszg
    Asynchronous Local filesystem Checkpoints that works with any conforming
    ContentsManager.
    c              ƒ   óJ  K  — |j                  d«      }d}| j                  ||«      }| j                  j                  d|«       | j	                  «       5  | j                  |||¬«      ƒ d{  –—†  ddd«       | j                  ||«      ƒ d{  –—† S 7 Œ&# 1 sw Y   Œ%xY w7 Œ­wr€   r„   r†   s         r   r‰   z2AsyncGenericFileCheckpoints.create_file_checkpoint  s—   è ø€ à�z‰z˜#‹ˆà$ˆØ!×1Ñ1°-ÀÓFÐØ�‰�‰Ð3°TÔ:Ø×ÑÕØ—/‘/Ð"4°gÀf�/ÓM×MÐM÷  ð ×*Ñ*¨=Ð:LÓM×MÐMð Nø÷  Ðúð Nús<   ‚AB#ÁBÁ,BÁ-BÁ1B#ÂB!ÂB#ÂBÂBÂB#c              ƒ   óF  K  — |j                  d«      }d}| j                  ||«      }| j                  j                  d|«       | j	                  «       5  | j                  ||«      ƒ d{  –—†  ddd«       | j                  ||«      ƒ d{  –—† S 7 Œ&# 1 sw Y   Œ%xY w7 Œ­wr‹   rŒ   rŽ   s        r   r�   z6AsyncGenericFileCheckpoints.create_notebook_checkpoint   s”   è ø€ à�z‰z˜#‹ˆà$ˆØ!×1Ñ1°-ÀÓFÐØ�‰�‰Ð3°TÔ:Ø×ÑÕØ×%Ñ%Ð&8¸"Ó=×=Ð=÷  ð ×*Ñ*¨=Ð:LÓM×MÐMð >ø÷  Ðúð Nús<   ‚AB!ÁBÁ*BÁ+BÁ/B!ÂBÂB!ÂBÂBÂB!c              ƒ   ó,  K  — |j                  d«      }| j                  j                  d||«       | j                  ||«      }t        j
                  j                  |«      s| j                  ||«       d| j                  |d¬«      ƒ d{  –—† dœS 7 Œ­w)r’   rA   r“   r”   r•   r–   Nr˜   rš   rœ   s       r   r�   z3AsyncGenericFileCheckpoints.get_notebook_checkpoint-  sŽ   è ø€ à�z‰z˜#‹ˆØ�‰�‰Ð7¸¸}ÔMØ!×1Ñ1°-ÀÓFÐä�w‰w�~‰~Ð0Ô1Ø×#Ñ# D¨-Ô8ð Ø!×0Ñ0Ø"Øð 1ó ÷ ñ
ð 	
ðús   ‚B	BÂBÂBc              ƒ   ó8  K  — |j                  d«      }| j                  j                  d||«       | j                  ||«      }t        j
                  j                  |«      s| j                  ||«       | j                  |d¬«      ƒ d{  –—† \  }}d||dœS 7 Œ­wrŸ   r¡   r£   s         r   r¤   z/AsyncGenericFileCheckpoints.get_file_checkpoint>  s�   è ø€ à�z‰z˜#‹ˆØ�‰�‰Ð7¸¸}ÔMØ!×1Ñ1°-ÀÓFÐä�w‰w�~‰~Ð0Ô1Ø×#Ñ# D¨-Ô8à $§¡Ð0BÈ4 Ó P×P‰ˆ�àØØñ
ð 	
ð Qús   ‚BBÂ
BÂBNr¥   rt   r   r   r§   r§     s   „ ñò
NòNò
ó"
r   r§   )rs   r   r7   rZ   Úanyio.to_threadr   Újupyter_core.utilsr   Útornado.webr   Ú	traitletsr   Újupyter_serverr   rh   Úcheckpointsr
   r   r   r   Úfileior   r   r   rv   r~   r§   rt   r   r   Ú<module>r³      s|   ðñó 
Û Û å $Ý 0Ý !Ý å $÷ó ÷ <ôoSÐ&¨ô oSôd=I˜?Ð,AÐCSô =Iô@?
Ð4°oô ?
ôD?
Ð">Ð@Tõ ?
r   