+
    –°³j  ã                   ó2  € ^ RI HtHtHtHt ^ RIHtHt ^ RIH	t	 ^ RI
t
^ RIHt ^ RIHt ^ RIHt ]],          t]]R3,          t]! R	4      t]t]]]3,          t. ROtR
 R lt]3R R llt]3R R lltR R ltRR R lltR] 3R R llt!] 3R R llt"R# )é    )ÚCallableÚ
CollectionÚMappingÚMutableMapping)ÚcastÚTypeVar)ÚTypeIsN)ÚShardedTensor)ÚSTATE_DICT_TYPE)ÚDTensor.ÚTc                óZ   € V ^8„  d   QhR\         R\        \        P                  ,          /# ©é   ÚvalueÚreturn)ÚSTATE_DICT_ITEMr	   ÚtorchÚTensor)Úformats   "Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributed/checkpoint/_traverse.pyÚ__annotate__r      s#   € ÷ +ñ +¤/ð +´f¼U¿\¹\Õ6Jñ +ó    c                 ó6   € \        V \        P                  4      # ©N)Ú
isinstancer   r   )r   s   &r   Ú_keep_visiting_tensorsr      s   € Ü�eœUŸ\™\Ó*Ð*r   c                óŠ   € V ^8„  d   QhR\         R\        \        \        .R3,          R\        \        .\        3,          RR/# ©r   Ú
state_dictÚvisitorNÚkeep_traversingr   ©r   r   ÚOBJ_PATHr   Úbool)r   s   "r   r   r      sL   € ÷ *$ñ *$Üð*$ä”x¤Ð1°4Ð7Õ8ð*$ô œÐ/´Ð5Õ6ð*$ð 
ñ	*$r   c                ó”   aaaa€ R VV3R lloR VVV3R lloV P                  4        F  w  r4S! \        V4      3V4       K  	  >>R# )a  
Invoke ``visitor`` for each value recursively in ``state_dict``.
Mapping will be traversed and ``visitor`` will be applied to the leaf elements.
``visitor`` will only be applied to elements in a list or a tuple, if the
container contains tensors or mappings.
c                ó0   € V ^8„  d   QhR\         R\        /# r   ©r   r%   )r   s   "r   r   Ú)traverse_state_dict.<locals>.__annotate__)   ó   € ÷ ñ œOð ´ñ r   c                 ó  <€ \        V \        4      '       d   R # \        V \        4      '       d   T pMR# V FG  p\        V\        \        34      '       d   S! V4      '       g    R # Sf   K6  S! V4      '       g   KF   R # 	  R# )FT)r   r   Úlist©r   ÚvaluesÚentryÚ_is_terminalr"   s   &  €€r   r0   Ú)traverse_state_dict.<locals>._is_terminal)   sh   ø€ ä�eœW×%Ò%ÙÜ˜œt×$Ò$Ø‰FáãˆEÜ˜%¤'¬4 ×1Ò1¹,Àu×:MÒ:MÚØÔ*©¸u×/EÔ/EÚñ	 ñ
 r   c                ó4   € V ^8„  d   QhR\         R\        RR/# ©r   Úpathr   r   N©r$   r   )r   s   "r   r   r)   9   ó!   € ÷ .ñ .œHð .¬_ð .Àñ .r   c                 óR  <€ \        V\        4      '       d6   VP                  4        F  w  r#S! V \        V4      3,           V4       K!  	  R # S! V4      '       d   S! W4       R # \        V\        \
        34      '       d'   \        V4       F  w  rCS! W3,           V4       K  	  R # R # r   )r   r   ÚitemsÚstrr,   ÚtupleÚ	enumerate©r4   r   ÚkÚvÚir0   Ú_traverse_objr!   s   &&   €€€r   r@   Ú*traverse_state_dict.<locals>._traverse_obj9   s   ø€ Ü�eœW×%Ò%ØŸ™ž‘�Ù˜d¤c¨!£f YÕ.°Ö2ó &á˜%× Ò Ù�DÖ Ü˜¤¤e˜}×-Ò-Ü! %Ö(‘�Ù˜d T�k¨1Ö-ó )ñ .r   N©r8   r9   ©r    r!   r"   Úkeyr   r0   r@   s   &ff  @@r   Útraverse_state_dictrE      sE   û€ ÷ñ ÷ .ò .ð !×&Ñ&Ö(‰
ˆÙ”s˜3“x�k 5Ö)ñ )ð 	’|r   c                óŠ   € V ^8„  d   QhR\         R\        \        \        .R3,          R\        \        .\        3,          RR/# r   r#   )r   s   "r   r   r   J   sL   € ÷ +$ñ +$Üð+$ä”x¤Ð1°4Ð7Õ8ð+$ô œÐ/´Ð5Õ6ð+$ð 
ñ	+$r   c                ó”   aaaa€ R VV3R lloR VVV3R lloV P                  4        F  w  r4S! \        V4      3V4       K  	  >>R# )a$  
Traversal is short-circuited when it finds a collection for which ``keep_visiting_tensors`` evaluates
to false for all elements.
By default, all collections with at least one ``torch.Tensor`` element are traversed.
Visitor takes a path argument that is a tuple of the keys used to reach it.
c                ó0   € V ^8„  d   QhR\         R\        /# r   r(   )r   s   "r   r   Ú/traverse_state_dict_v_2_3.<locals>.__annotate__W   r*   r   c                 ó&  <€ \        V \        4      '       d   V P                  4       pM\        V \        4      '       d   T pMR # V FG  p\        V\        \        34      '       d   S! V4      '       g    R# Sf   K6  S! V4      '       g   KF   R# 	  R # )TF)r   r   r.   r,   r-   s   &  €€r   r0   Ú/traverse_state_dict_v_2_3.<locals>._is_terminalW   sp   ø€ ä�eœW×%Ò%Ø—\‘\“^‰FÜ˜œt×$Ò$Ø‰FáãˆEÜ˜%¤'¬4 ×1Ò1¹,Àu×:MÒ:MÚØÔ*©¸u×/EÔ/EÚñ	 ñ
 r   c                ó4   € V ^8„  d   QhR\         R\        RR/# r3   r5   )r   s   "r   r   rI   g   r6   r   c                 óF  <€ S! V4      '       d   S! W4       R # \        V\        4      '       d6   VP                  4        F  w  r#S! V \        V4      3,           V4       K!  	  R # \        V\        4      '       d'   \        V4       F  w  rCS! W3,           V4       K  	  R # R # r   )r   r   r8   r9   r,   r;   r<   s   &&   €€€r   r@   Ú0traverse_state_dict_v_2_3.<locals>._traverse_objg   s{   ø€ Ù˜×ÒÙ�DÖ Ü˜œw×'Ò'ØŸ™ž‘�Ù˜d¤c¨!£f YÕ.°Ö2ó &ä˜œt×$Ò$Ü! %Ö(‘�Ù˜d T�k¨1Ö-ó )ñ %r   NrB   rC   s   &ff  @@r   Útraverse_state_dict_v_2_3rO   J   sE   û€ ÷ñ ÷ .ò .ð !×&Ñ&Ö(‰
ˆÙ”s˜3“x�k 5Ö)ñ )ð 	’|r   c                ó@   € V ^8„  d   QhR\         R\        R\        RR/# )r   Ú	root_dictr4   r   r   N)r   r$   r   )r   s   "r   r   r   x   s,   € ÷ ñ ÜðÜ&.ðÜ7Fðà	ñr   c                ó  € \        \        V 4      pR R lp\        ^\        V4      4       F”  pW^,
          ,          pW,          p\        \        \        V4      \        J d   / M. 4      p\        V\        4      '       d"   \        \        VP                  Wh4      4      pKv  V! W64       W6,          f   WƒV&   W6,          pK–  	  VR,          p\        V4      \        J d#   V! \        \        \        ,          V4      V4       W#V&   R# )z>Set ``value`` in ``root_dict`` along the ``path`` object path.c                óJ   € V ^8„  d   QhR\         \        ,          R\        RR/# )r   ÚlstÚidxr   N)r,   r   Úint)r   s   "r   r   Ú!set_element.<locals>.__annotate__~   s&   € ÷ ñ œœoÕ.ð ´Sð ¸Tñ r   c                 óL   € \        V 4      V8:  d   V P                  R 4       K#  R # r   )ÚlenÚappend)rT   rU   s   &&r   Úextend_listÚ set_element.<locals>.extend_list~   s   € Ü�#‹h˜#ŒoØ�J‰J�tÖñ r   Néÿÿÿÿ)r   ÚCONTAINER_TYPEÚrangerY   r   Útyper9   r   r   Ú
setdefaultrV   r,   )	rQ   r4   r   Úcur_containerr[   r?   Úprev_keyrD   Údef_vals	   &&&      r   Úset_elementre   x   sÖ   € ô œ¨Ó3€Mõô �1”c˜$“iÖ ˆØ˜A�•;ˆØ�gˆÜ”¬d°3«i¼3Ó.>©ÀBÓGˆä�m¤W×-Ò-Ü Ü × 8Ñ 8¸Ó KóŠMñ
 ˜Ô0ØÕ&Ò.Ø*1˜hÑ'Ø)Õ3ŠMñ !ð  ˆr�(€CÜˆCƒy”CÓÙ”DœœoÕ.°Ó>ÀÔDà�#Ór   c          	      ód   € V ^8„  d   QhR\         R\        R\        R,          R\        R,          /# )r   rQ   r4   Údefault_valueNr   )r   r$   r   )r   s   "r   r   r   ™   s8   € ÷ %ñ %Üð%ä
ð%ô �t•8ð%ô ˆ…Xñ	%r   c                óJ  € \        \        V 4      pV Fw  p\        V4      \        J d,   \	        V\
        4      '       d   \        V4      V8  d   Vu # M \	        V\        4      '       d   WC9  d   Vu # \        \        W4,          4      pKy  	  \        \        R,          V4      # )z[Retrieve the value at ``path``from ``root_dict``, returning ``default_value`` if not found.N)	r   r^   r`   rV   r   r,   rY   r   r   )rQ   r4   rg   Ú	cur_valueÚparts   &&&  r   Úget_elementrk   ™   sƒ   € ô ”^ YÓ/€IÛˆÜ�‹:œÓÜ˜i¬×.Ò.´#°i³.À4Ô2GØ$Ò$ð 3Hä˜I¤w×/Ò/°4Ô3HØ Ò äœ¨­Ó9Š	ñ ô ”�D•˜)Ó$Ð$r   Ú c                ó\   € V ^8„  d   QhR\         R\        R\        \        .R3,          RR/# )r   r   ÚprefixÚ	print_funNr   )r   r9   r   )r   s   "r   r   r   «   s;   € ÷ 3ñ 3Üð3äð3ô œ˜˜t˜Õ$ð3ð 
ñ	3r   c                 ó&  € \        V 4      \        J dd   V! V R V P                  4        24       V P                  4        F2  p\	        VP
                  VP                  P                   R2VR7       K4  	  R# \        V 4      \        J d5   V! V RV P                  4        24       \	        V P                  VR7       R# \        V \        P                  4      '       d   V! V RV P                  4        24       R# V! V R\        V 4       24       R# )z ShardedTensor size: Ú )ro   z DistributedTensor size: z Tensor size: z Type: N)r`   r
   ÚsizeÚlocal_shardsÚ_print_nestedÚtensorÚmetadataÚshard_offsetsr   Ú_local_tensorr   r   r   )r   rn   ro   Úshards   &&& r   rt   rt   «   sã   € ô
 ˆEƒ{”mÓ#Ù�V�HÐ1°%·*±*³,°Ð@ÔAØ×'Ñ'Ö)ˆEÜØ—‘Ø—>‘>×/Ñ/Ð0°Ð2Ø#÷ó *ô 
ˆe‹œÓ	!Ù�V�HÐ5°e·j±j³l°^ÐDÔEäØ×ÑØ÷	
ô 
�Eœ5Ÿ<™<×	(Ò	(Ù�V�H˜N¨5¯:©:«<¨.Ð9Ö:á�V�H˜G¤D¨£K =Ð1Ö2r   c                ó\   € V ^8„  d   QhR\         R\        R\        \        .R3,          RR/# )r   r4   r   ro   Nr   )r$   r   r   r9   )r   s   "r   r   r   Å   sA   € ÷ @ñ @Ü
ð@äð@ô œ˜˜t˜Õ$ð@ð 
ñ	@r   c                ó4   € \        V\        V 4      VR7       R# )zÈ
Use this callback with traverse_state_dict to print its content.

By default the content is printed using the builtin ``print`` but this can
be changed by passing a different ``print_fun`` callable.
)rn   ro   N)rt   r9   )r4   r   ro   s   &&&r   Úprint_tensorr|   Å   s   € ô �%¤ D£	°Y×?r   )rE   re   rk   r|   r   )#Úcollections.abcr   r   r   r   Útypingr   r   Útyping_extensionsr	   r   Ú+torch.distributed._shard.sharded_tensor.apir
   Ú%torch.distributed.checkpoint.metadatar   Útorch.distributed.tensorr   r9   rV   Ú	PATH_ITEMr:   r$   r   Úobjectr   r^   Ú__all__r   rE   rO   re   rk   Úprintrt   r|   © r   r   Ú<module>rˆ      s¡   ð÷ JÓ Iß  Ý $ã Ý EÝ AÝ ,ð �#�I€	Ø�˜C�Õ €ÙˆCƒL€à€Ø 	¨?Ð :Õ;€â
O€õ+ð :P÷*$ð` :P÷+$õ\÷B%ð( Ø',÷3ð: (-÷@ñ @r   