Ë
    ÿÍ:j&  ã            	       óª  — 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mZm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 d dl m!Z!m"Z" dZ#erd dl$m%Z%  G d„ d«      Z& G d„ dejN                  «      Z(de!defd„Z)dedefd„Z*	 d de+e,ef   de+e,eee"f   f   dee-e,      ddfd„Z.dede+e,ef   fd„Z/y)!é    N)ÚOrderedDict)ÚSequence)Úpartial)ÚBytesIO)ÚPath)ÚIOÚTYPE_CHECKINGÚAnyÚCallableÚOptionalÚUnion)Úapply_to_collection)ÚTensor)Ú_TensorMeta)Ú	Parameter)Úoverride)Ú_TORCH_GREATER_EQUAL_2_3)Ú_PATHÚ	_Statefulzmeta.pt©ÚTypedStoragec                   ód  — e Zd Zdedddededdf
d„Zedd	œd
ededede	de
d   defd„«       Zedd	œdededede
d   deed f   f
d„«       Ze	 d"dddededededede
e   dddd fd„«       Zdefd„Ze	 	 d#d
ededee   de
e	   def
d„«       Zedej0                  fd„«       Zdedefd „Zdefd!„Zy)$Ú_NotYetLoadedTensorÚ
metatensorÚarchiveinfoÚ_LazyLoadingUnpicklerÚstorageinfoÚrebuild_argsÚreturnNc                 ó<   — || _         || _        || _        || _        y ©N)r   r   r   r   )Úselfr   r   r   r   s        út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/lightning_fabric/utilities/load.pyÚ__init__z_NotYetLoadedTensor.__init__*   s#   € ð %ˆŒØ&ˆÔØ&ˆÔØ(ˆÕó    ©r   ÚfuncÚnew_typeÚargsÚstatec                ó¼   ‡‡‡—  ||Ž }t        |t        «      r#|j                  Šdt        fˆˆˆfd„}||_        |S t        j
                  j                  |‰|‰«      S )Nr   c                  ó^   •‡ —  ‰«       Š t         j                  j                  ˆ fd„‰d‰«      S )Nc                  ó   •— ‰ S r!   © ©Úts   €r#   ú<lambda>zP_NotYetLoadedTensor.rebuild_from_type_v2.<locals>._load_tensor.<locals>.<lambda>F   s   ø€ À1€ r%   r.   )ÚtorchÚ_tensorÚ_rebuild_from_type_v2)r0   r(   Úold_ltr*   s   @€€€r#   Ú_load_tensorz>_NotYetLoadedTensor.rebuild_from_type_v2.<locals>._load_tensorD   s'   ù€ Ù“H�Ü—}‘}×:Ñ:»9ÀhÐPRÐTYÓZÐZr%   )Ú
isinstancer   r6   r
   r2   r3   r4   )	Úclsr'   r(   r)   r*   r   Úretr6   r5   s	     ` `   @r#   Úrebuild_from_type_v2z(_NotYetLoadedTensor.rebuild_from_type_v26   s\   ú€ ñ �DˆkˆÜ�cÔ.Ô/Ø×%Ñ%ˆFð[¤#÷ [ð  ,ˆCÔØˆJÜ�}‰}×2Ñ2°4¸À4ÈÓOÐOr%   ÚdataÚrequires_gradÚbackward_hooksc                ó°   ‡‡‡— t        |t        «      r#|j                  Šdt        fˆˆˆfd„}||_        |S t        j
                  j                  |‰‰«      S )Nr   c                  óT   •—  ‰«       } t         j                  j                  | ‰‰«      S r!   )r2   Ú_utilsÚ_rebuild_parameter)r0   r=   r5   r<   s    €€€r#   r6   z;_NotYetLoadedTensor.rebuild_parameter.<locals>._load_tensorX   s#   ø€ Ù“H�Ü—|‘|×6Ñ6°q¸-ÈÓXÐXr%   )r7   r   r6   r   r2   r@   rA   )r8   r;   r<   r=   r   r6   r5   s     ``  @r#   Úrebuild_parameterz%_NotYetLoadedTensor.rebuild_parameterL   sQ   ú€ ô �dÔ/Ô0Ø×&Ñ&ˆFðY¤)÷ Yð !-ˆDÔØˆKÜ�|‰|×.Ñ.¨t°]ÀNÓSÐSr%   Ústorager   Ústorage_offsetÚsizeÚstrideÚmetadatac          	      ó�   — ||||||f}	t         j                  j                  |||||||«      }
|j                  }t	        |
|||	«      S r!   )r2   r@   Ú_rebuild_tensor_v2r   r   )r8   rC   rD   rE   rF   r<   r=   rG   r   r   r   r   s               r#   Úrebuild_tensor_v2z%_NotYetLoadedTensor.rebuild_tensor_v2`   sY   € ð '¨¨f°mÀ^ÐU]Ð^ˆÜ—\‘\×4Ñ4Ø�^ T¨6°=À.ÐRZó
ˆ
ð ×)Ñ)ˆÜ" :¨{¸KÈÓVÐVr%   c                 ó  — ddl m}m} | j                  \  }}}}}| j                  j
                  }| j                  j                  j                  d|› �|t        j                  j                  |«      z  |«      }|j                  «       j                  }t        j                  «       5  t        j                   d«        |||d¬«      }d d d «       t        j                  j"                  |g| j$                  ¢­Ž S # 1 sw Y   Œ3xY w)Nr   )r   ÚUntypedStoragezdata/ÚignoreT)Úwrap_storageÚdtypeÚ	_internal)Útorch.storager   rL   r   r   rO   r   Úfile_readerÚget_storage_from_recordr2   r@   Ú_element_sizeÚ_typed_storageÚ_untyped_storageÚwarningsÚcatch_warningsÚsimplefilterrI   r   )	r"   r   rL   Ú_ÚfnrE   rO   rC   Úutss	            r#   r6   z _NotYetLoadedTensor._load_tensort   sà   € ß>à ×,Ñ,Ñˆˆ1ˆb�!�TØ—‘×%Ñ%ˆà×"Ñ"×.Ñ.×FÑFØ�B�4ˆL˜$¤§¡×!;Ñ!;¸EÓ!BÑBÀNó
ˆð ×$Ñ$Ó&×7Ñ7ˆä×$Ñ$Ó&ñ 	Rä×!Ñ! (Ô+Ù"°¸5ÈDÔQˆG÷	Rô �|‰|×.Ñ.¨wÐK¸×9JÑ9JÒKÐK÷		Rð 	Rús   Â)!C<Ã<DÚtypesÚkwargsc                 ó†   — |xs i }|D �cg c]$  }t        |t        «      r|j                  «       n|‘Œ& }} ||i |¤ŽS c c}w r!   )r7   r   r6   )r8   r'   r]   r)   r^   ÚargÚloaded_argss          r#   Ú__torch_function__z&_NotYetLoadedTensor.__torch_function__…   sP   € ð ’˜2ˆØhlÖmÐad¬j¸Ô>QÔ.R˜×(Ñ(Ô*ÐX[Ñ[ÐmˆÐmÙ�[Ð+ FÑ+Ð+ùò ns   ‹)>c                 óF   — t        j                  | j                  d   «      S )Né   )r2   Údevicer   ©r"   s    r#   re   z_NotYetLoadedTensor.device‘   s   € ä�|‰|˜D×,Ñ,¨QÑ/Ó0Ð0r%   Únamec                 ó¼   — |dv rt        | j                  |«      S |dv rt        | j                  «       |«      S t        dt	        | «      j
                  › d|› d�«      ‚)N>   ÚgradÚndimrE   rO   ÚnamesÚshapeÚlayoutÚgrad_fnÚis_metaÚvolatileÚ	output_nrÚretains_gradr<   >   ÚtoÚcudar;   ÚhalfÚ
contiguousú'z' object has no attribute ')Úgetattrr   r6   ÚAttributeErrorÚtypeÚ__name__)r"   rg   s     r#   Ú__getattr__z_NotYetLoadedTensor.__getattr__•   sl   € àð 
ñ 
ô ˜4Ÿ?™?¨DÓ1Ð1ð Ð?Ñ?Ü˜4×,Ñ,Ó.°Ó5Ð5ä˜q¤ d£×!4Ñ!4Ð 5Ð5PÐQUÐPVÐVWÐXÓYÐYr%   c                 ó`   — | j                   j                  › dt        | j                  «      › d�S )Nú(ú))Ú	__class__r{   Úreprr   rf   s    r#   Ú__repr__z_NotYetLoadedTensor.__repr__®   s*   € Ø—.‘.×)Ñ)Ð*¨!¬D°·±Ó,AÐ+BÀ!ÐDÐDr%   r!   )r.   N)r{   Ú
__module__Ú__qualname__r   Útupler$   Úclassmethodr   r   Údictr   r
   r:   Úboolr   r   rB   ÚintrJ   r6   r   rb   Úpropertyr2   re   Ústrr|   r‚   r.   r%   r#   r   r   )   s  „ ð
)àð
)ð -ð
)ð ð	
)ð
 ð
)ð 
ó
)ð ð :>òPàðPð ðPð ð	Pð
 ðPð Ð5Ñ6ðPð 
òPó ðPð* ð :>òTàðTð ðTð $ð	Tð Ð5Ñ6ðTð 
ˆvÐ,Ð,Ñ	-òTó ðTð& ð #'ñWàðWð ðWð ð	Wð
 ðWð ðWð $ðWð ˜3‘-ðWð -ðWð 
òWó ðWð&L˜fó Lð" ð
 !Ø!%ñ	,àð	,ð ð	,ð �s‰mð		,ð
 ˜‘ð	,ð 
ò	,ó ð	,ð ð1˜Ÿ™ò 1ó ð1ðZ ð Z¨ó Zð2E˜#ô Er%   r   c                   ó|   ‡ — e Zd Zdedej
                  ddfˆ fd„Zededede	fˆ fd„«       Z
ed	edd
fd„«       Zˆ xZS )r   ÚfilerR   r   Nc                 ó2   •— t         ‰| �  |«       || _        y r!   )Úsuperr$   rR   )r"   r�   rR   r€   s      €r#   r$   z_LazyLoadingUnpickler.__init__´   s   ø€ Ü‰Ñ˜ÔØ&ˆÕr%   Úmodulerg   c                 ó  •— |dk(  r |dk(  rt        t        j                  | ¬«      S |dk(  r |dk(  rt        t        j                  | ¬«      S |dk(  r |dk(  rt        t        j                  | ¬«      S t
        ‰| �  ||«      S )Nztorch._utilsrI   r&   ztorch._tensorr4   rA   )r   r   rJ   r:   rB   r�   Ú
find_class)r"   r�   rg   r€   s      €r#   r’   z _LazyLoadingUnpickler.find_class¸   s‚   ø€ à�^Ò#¨Ð0DÒ(DÜÔ.×@Ñ@ÈdÔSÐSØ�_Ò$¨Ð1HÒ)HÜÔ.×CÑCÐQUÔVÐVØ�^Ò#¨Ð0DÒ(DÜÔ.×@Ñ@ÈdÔSÐSÜ‰wÑ! &¨$Ó/Ð/r%   Úpidr   c                 óÞ   — ddl m} |\  }}}}}t        j                  «       5  t        j                  d«        | |«       j
                  d¬«      }d d d «       |_        |S # 1 sw Y   ŒxY w)Nr   r   rM   Úmeta)rO   re   )rQ   r   rW   rX   rY   rO   r   )r"   r“   r   rZ   r8   rC   s         r#   Úpersistent_loadz%_LazyLoadingUnpickler.persistent_loadÂ   sh   € å.à‰ˆˆ3��1�aÜ×$Ñ$Ó&ñ 	Eä×!Ñ! (Ô+Ù"©«¯©¸VÔDˆG÷	Eð "ˆÔØˆ÷	Eð 	Eús   £/A#Á#A,)r{   rƒ   r„   r   r2   ÚPyTorchFileReaderr$   r   r‹   r
   r’   r…   r–   Ú__classcell__)r€   s   @r#   r   r   ³   sn   ø„ ð'˜Rð '¨e×.EÑ.Eð 'È$õ 'ð ð0 ð 0¨Cð 0°Cô 0ó ð0ð ð	 5ð 	¨^ò 	ó ô	r%   r   Úfilenamer   c                 óD  — t         j                  j                  | «      st        dt	        | «      ›d�«      ‚t        j                  t	        | «      «      }t        |j                  d«      «      5 }t        ||«      }|j                  «       cd d d «       S # 1 sw Y   y xY w)NzPath z! does not exist or is not a file.zdata.pkl)ÚosÚpathÚisfileÚFileNotFoundErrorr‹   r2   r—   r   Ú
get_recordr   Úload)r™   rR   ÚpklÚmups       r#   Ú
_lazy_loadr£   Ï   s   € Ü�7‰7�>‰>˜(Ô#Ü %¬¨H«Ð'8Ð8YÐ ZÓ[Ð[Ü×)Ñ)¬#¨h«-Ó8€KÜ	�×'Ñ'¨
Ó3Ó	4ð ¸Ü# C¨Ó5ˆØ�x‰x‹z÷÷ ò ús   Á0BÂBÚ
collectionc                 óF   — dt         dt        fd„}t        | t         |¬«      S )Nr0   r   c                 ó"   — | j                  «       S r!   )r6   r/   s    r#   r6   z*_materialize_tensors.<locals>._load_tensorÙ   s   € Ø�~‰~ÓÐr%   )rO   Úfunction)r   r   r   )r¤   r6   s     r#   Ú_materialize_tensorsr¨   Ø   s(   € ð Ô+ð  ´ó  ô ˜zÔ1DÈ|Ô\Ð\r%   ÚsourceÚdestinationÚkeysc                 óÌ   — |€t        | «      n|t        | «      z  }|D ]D  }| j                  |«      }||v r(t        ||   t        «      r||   j	                  |«       Œ@|||<   ŒF y)zÖTakes the state from the source destination and moves it into the destination dictionary.

    If an object in the destination follows the stateful protocol, it loads the source state via ``load_state_dict``.

    N)ÚsetÚpopr7   r   Úload_state_dict)r©   rª   r«   Úkeyr*   s        r#   Ú_move_state_intor±   ß   sk   € ð ˜,Œ3ˆvŒ;¨D´3°v³;Ñ,>€DØò %ˆØ—
‘
˜3“ˆØ�+Ñ¤*¨[¸Ñ-=¼yÔ"IØ˜Ñ×,Ñ,¨UÕ3à$ˆK˜Òñ%r%   Úcheckpoint_folderc                 ó  — t         st        d«      ‚ddlm} ddlm} ddlm} i } || || «       |«       d¬«       | t        z  }|j                  «       rt        j                  |d¬	«      ni }|j                  |«       |S )
z½Loads a sharded checkpoint saved with the `torch.distributed.checkpoint` into a full state dict.

    The current implementation assumes that the entire checkpoint fits in CPU memory.

    z;Processing distributed checkpoints requires PyTorch >= 2.3.r   )ÚFileSystemReader)Ú_EmptyStateDictLoadPlanner)Ú_load_state_dictT)Ústorage_readerÚplannerÚno_distÚcpu)Úmap_location)r   ÚImportErrorÚtorch.distributed.checkpointr´   Ú)torch.distributed.checkpoint.format_utilsrµ   Ú.torch.distributed.checkpoint.state_dict_loaderr¶   Ú_METADATA_FILENAMEÚis_filer2   r    Úupdate)r²   r´   rµ   r¶   Ú
checkpointÚ
extra_fileÚextras          r#   Ú_load_distributed_checkpointrÆ   ð   s}   € õ $ÜÐWÓXÐXå=ÝTÝOà!#€JÙØÙ'Ð(9Ó:Ù*Ó,Øõ	ð #Ô%7Ñ7€JØ:D×:LÑ:LÔ:NŒE�J‰J�z°Õ6ÐTV€EØ×Ñ�eÔàÐr%   r!   )0r›   ÚpicklerW   Úcollectionsr   Úcollections.abcr   Ú	functoolsr   Úior   Úpathlibr   Útypingr   r	   r
   r   r   r   r2   Ú#lightning_utilities.core.apply_funcr   r   Útorch._Cr   Útorch.nnr   Útyping_extensionsr   Ú"lightning_fabric.utilities.importsr   Ú lightning_fabric.utilities.typesr   r   rÀ   rQ   r   r   Ú	Unpicklerr   r£   r¨   r‡   r‹   r­   r±   rÆ   r.   r%   r#   ú<module>rÕ      s  ðó 
Û Û Ý #Ý $Ý Ý Ý ß D× Dã Ý CÝ Ý  Ý Ý &å Gß =àÐ ñ Ý*÷FEñ FEôT˜F×,Ñ,ô ð8˜ð  3ó ð] Sð ]¨Só ]ð gkñ%Ø��c�‰Nð%Ø)-¨c°5¸¸i¸Ñ3HÐ.HÑ)Ið%ØQYÐZ]Ð^aÑZbÑQcð%à	ó%ð"°Dð ¸TÀ#ÀsÀ(¹^ô r%   