Ë
    ÜÓ^jL'  ã            
       ót  — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
  ej                  d«      Zdedefd„Zd$d	ee   defd
„Zdeee
f   deee
f   fd„Z ej                  d«      Zdedefd„Zd„ Zd„ ZdddddddddœZd„ Zd%d„Ze G d„ d«      «       Z	 d&ded ed!ed"e j:                  dz  fd#„Zy)'é    N)ÚOrderedDictÚdefaultdict)Ú	dataclass)ÚAnyz(?<=\.)(\d+)(?=\.|$)ÚkeyÚreturnc                 ó.   — t         j                  d| «      S )zBReplace every dot-delimited integer with '*' to get the structure.Ú*)Ú	_DIGIT_RXÚsub)r   s    úl/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/utils/loading_report.pyÚ_pattern_ofr      s   € ä�=‰=˜˜cÓ"Ð"ó    Úvaluesc                 óÄ   — t        | «      dk(  rt        | d   «      S t        | «      } t        | «      |kD  r| d   › d| d   › �S dj                  t	        t        | «      «      S )zEFormat a list of ints as single number, {a, ..., b}, or first...last.é   r   z...éÿÿÿÿz, )ÚlenÚstrÚsortedÚjoinÚmap)r   Úcutoffs     r   Ú_fmt_indicesr      s`   € ä
ˆ6ƒ{�aÒÜ�6˜!‘9‹~ÐÜ�F‹^€FÜ
ˆ6ƒ{�VÒØ˜‘)�˜C  r¡
˜|Ð,Ð,Ø�9‰9”Sœ˜fÓ%Ó&Ð&r   Úmappingc           	      ó†  — d}t        | t        «      s| D �ci c]  }||“Œ } }d}t        t        «      }| j	                  «       D ]™  \  }}t
        j                  |«      }t        |«      }t        |«      D ]R  \  }}	t        ||   «      |k  r||   j                  t        «       «       ||   |   j                  t        |	«      «       ŒT ||   j                  |«       Œ› i }
|j	                  «       D ]ª  \  }}|dd |d   }}|j                  d«      }|d   }t        dt        |«      «      D ]h  }|dz
  t        |«      k  rH||dz
     r@t!        t#        ||dz
     «      «      }t        ||dz
     «      dkD  r|d|z   d	z   z  }n||z  }n|dz  }|||   z  }Œj ||
|<   Œ¬ t%        |
«      }|r|j'                  «       S |S c c}w )
z¸
    Merge keys like 'layers.0.x', 'layers.1.x' into 'layers.{0, 1}.x'
    BUT only merge together keys that have the exact same value.
    Returns a new dict {merged_key: value}.
    FTNr   r
   r   r   ú{ú})Ú
isinstanceÚdictr   ÚlistÚitemsr   Úfindallr   Ú	enumerater   ÚappendÚsetÚaddÚintÚsplitÚranger   r   r   Úkeys)r   Únot_mappingÚkÚbucketr   ÚvalÚdigsÚpattÚiÚdÚ	out_itemsr   ÚsetsÚpartsÚfinalÚinsertÚouts                    r   Úupdate_key_namer:   )   sä  € ð €KÜ�gœtÔ$Ø!(Ö)˜A�1�a‘4Ð)ˆÐ)Øˆä.9¼$Ó.?€FØ—M‘M“Oò !‰ˆˆSÜ× Ñ  Ó%ˆÜ˜3ÓˆÜ˜d“Oò 	(‰DˆAˆqÜ�6˜$‘<Ó  AÒ%Ø�t‘×#Ñ#¤C£EÔ*Ø�4‰L˜‰O×Ñ¤ A£Õ'ð	(ð 	ˆt‰×Ñ˜CÕ ð!ð €IØŸ™›ò ‰ˆˆfØ˜3˜B�K ¨¡ˆcˆØ—
‘
˜3“ˆØ�a‘ˆÜ�qœ#˜e›*Ó%ò 		ˆAØ�1‰u”s˜4“yÒ  T¨!¨a©%¢[Ü%¤f¨T°!°a±%©[Ó&9Ó:�Ü�t˜A ™E‘{Ó# aÒ'Ø˜S 6™\¨CÑ/Ñ/‘Eà˜V‘O‘Eà˜‘�Ø�U˜1‘XÑ‰Eð		ð ˆ	�%Òðô  �iÓ
 €CÙØ�x‰x‹zÐØ€JùòC *s   —
F>z\x1b\[[0-9;]*mÚsc                 ó@   — t         j                  dt        | «      «      S )NÚ )Ú_ansi_rer   r   )r;   s    r   Ú_strip_ansir?   Y   s   € Ü�<‰<˜œC ›FÓ#Ð#r   c           	      ój   — t        | «      }t        d|t        t        |«      «      z
  «      }|d|z  z   S )Nr   ú )r   Úmaxr   r?   )ÚtextÚwidthÚtÚpads       r   Ú_padrG   ]   s3   € ÜˆD‹	€AÜ
ˆa�œœ[¨›^Ó,Ñ,Ó
-€CØˆs�S‰y‰=Ðr   c           
      ó†  — | rt        t        |g| z   Ž «      n|g}|D �cg c]  }t        d„ |D «       «      ‘Œ }}dj                  d„ t        ||«      D «       «      }dj                  d„ |D «       «      }| D �cg c]$  }dj                  d„ t        ||«      D «       «      ‘Œ& }}dj                  ||g|z   «      S c c}w c c}w )Nc              3   óD   K  — | ]  }t        t        |«      «      –— Œ y ­w©N)r   r?   )Ú.0Úxs     r   ú	<genexpr>z_make_table.<locals>.<genexpr>f   s   è ø€ Ò3¨!”#”k !“n×%Ñ3ùs   ‚ z | c              3   ó:   K  — | ]  \  }}t        ||«      –— Œ y ­wrJ   ©rG   )rK   ÚhÚws      r   rM   z_make_table.<locals>.<genexpr>g   s   è ø€ ÒI©D¨A¨qœT ! QŸZÑIùó   ‚z-+-c              3   ó&   K  — | ]	  }d |z  –— Œ y­w)ú-N© )rK   rQ   s     r   rM   z_make_table.<locals>.<genexpr>h   s   è ø€ Ò2 a˜# �'Ñ2ùs   ‚c              3   ó:   K  — | ]  \  }}t        ||«      –— Œ y ­wrJ   rO   )rK   ÚcrQ   s      r   rM   z_make_table.<locals>.<genexpr>i   s   è ø€ Ò=¡d a¨”t˜A˜q—zÑ=ùrR   ú
)r!   ÚziprB   r   )	ÚrowsÚheadersÚcolsÚcolÚwidthsÚheader_lineÚsep_lineÚrÚbodys	            r   Ú_make_tablerc   c   s¸   € á-1Œ4”�w�i $Ñ&Ð(Ô)¸°y€DØ?CÖD¸ŒcÑ3¨sÔ3Õ3ÐD€FÐDØ—*‘*ÑI´C¸ÀÓ4HÔIÓI€KØ�z‰zÑ2¨6Ô2Ó2€HØGKÖLÀ!ˆE�J‰JÑ=¬c°!°V«nÔ=Õ=ÐL€DÐLØ�9‰9�k 8Ð,¨tÑ3Ó4Ð4ùò	 Eùò Ms   ŸB9Á8)B>z[0mz[31mz[33mz[38;5;208mz[35mz[1mz[3mz[2m)ÚresetÚredÚyellowÚorangeÚpurpleÚboldÚitalicÚdimc                 óŽ   — t         j                  �4t         j                  j                  «       rt        |   › | › t        d   › �S | S )zdReturn color/style-formatted input `s` if `sys.stdout` is interactive, e.g. connected to a terminal.rd   )ÚsysÚstdoutÚisattyÚPALETTE)r;   Úcolors     r   Ú_stylerr   y   s>   € ä
‡z�zÐ¤#§*¡*×"3Ñ"3Ô"5Ü˜%‘.Ð! ! ¤W¨WÑ%5Ð$6Ð7Ð7àˆr   c                 ób   — 	 t        j                  «       j                  S # t        $ r | cY S w xY wrJ   )ÚshutilÚget_terminal_sizeÚcolumnsÚ	Exception)Údefaults    r   Ú_get_terminal_widthry   �   s0   € ðÜ×'Ñ'Ó)×1Ñ1Ð1øÜò ØŠðús   ‚   .­.c                   óœ   — e Zd ZU dZee   ed<   ee   ed<   eeeee   ee   f      ed<   e	e   ed<   e
eef   ed<   d„ Zd„ Zd	ed
z  fd„Zy
)ÚLoadStateDictInfoaj  
    Mutable container for state-dict loading results and diagnostics. Each entry in this structure is mutable,
    and will usually be mutated in-place during the loading pipeline.

    Attributes:
        missing_keys (`set[str]`):
            Keys that are missing from the loaded checkpoints but expected in the model's architecture.
        unexpected_keys (`set[str]`):
            Keys that are found in the checkpoints, but not expected in the model's architecture.
        mismatched_keys (`set[tuple[str, tuple[int], tuple[int]]]`):
            Keys that are found in the checkpoints and are expected in the model's architecture, but with a different shape.
        error_msgs ( `list[str]`):
            Some potential error messages.
        conversion_errors (`dict[str, str]`):
            Errors happening during the on-the-fly weight conversion process.
    Úmissing_keysÚunexpected_keysÚmismatched_keysÚ
error_msgsÚconversion_errorsc                 ó`   — | j                   | j                  D �ch c]  }|d   ’Œ	 c}z  S c c}w )zMReturn all effective missing keys, including `missing` and `mismatched` keys.r   )r|   r~   )Úselfr-   s     r   Úmissing_and_mismatchedz(LoadStateDictInfo.missing_and_mismatched¡   s+   € à× Ñ °$×2FÑ2FÖ#G¨Q A a£DÒ#GÑGÐGùÒ#Gs   š+c                 ó`   — | j                   | j                  | j                  | j                  dœS )N©r|   r}   r~   r   r…   )r‚   s    r   Úto_dictzLoadStateDictInfo.to_dict¥   s0   € ð !×-Ñ-Ø#×3Ñ3Ø#×3Ñ3ØŸ/™/ñ	
ð 	
r   r   Nc           	      ó�  — t        «       }g }d}| j                  r[|dt        dd«      › d�t        dd«      z   z  }t        | j                  «      D ]#  }t        dd«      }|j	                  ||d	d	g«       Œ% | j
                  rZ|dt        d
d«      › d�t        dd«      z   z  }t        | j
                  «      D ]"  }t        dd«      }|j	                  ||d	g«       Œ$ | j                  r¢|dt        dd«      › d�t        dd«      z   z  }| j                  D ���ci c]  \  }}}|||f“Œ }	}}}t        |	«      j                  «       D ]B  \  }
\  }}t        dd«      }|
|dt        |«      › dt        |«      › �g}|j	                  |«       ŒD | j                  rq|dt        dd«      › d�t        dd«      z   z  }t        | j                  «      j                  «       D ]+  \  }}t        dd«      }d|› d�}|j	                  |||g«       Œ- t        |«      dk(  ryddg}|dkD  r|dgz  }n|d	d	gz  }t        ||¬«      }||z   }|S c c}}}w ) z/Generate the minimal table of a loading report.z

Notes:z
- zUNEXPECTED:rg   ú	zbcan be ignored when loading from different task/architecture; not ok if you expect identical arch.rj   Ú
UNEXPECTEDr=   zMISSING:re   zsthose params were newly initialized because missing from the checkpoint. Consider training on your downstream task.ÚMISSINGz	MISMATCH:rf   zRckpt weights were loaded, but they did not match the original empty weight shapes.ÚMISMATCHz$Reinit due to size mismatch - ckpt: z
 vs model:zCONVERSION:rh   z$originate from the conversion schemeÚ
CONVERSIONz

r   NÚKeyÚStatuséÈ   ÚDetails)r[   )ry   r}   rr   r:   r%   r|   r~   r"   r   r€   r   rc   )r‚   Úterm_wrZ   Útipsr-   ÚstatusÚaÚbrW   Úiteratorr   Ú
shape_ckptÚshape_modelÚdataÚvÚ_detailsr[   ÚtableÚreports                      r   Úcreate_loading_reportz'LoadStateDictInfo.create_loading_report®   s½  € ä$Ó&ˆàˆØˆØ×ÒØ�dœ6 -°Ó:Ð;¸2Ð>ÄØtØóBñ ñ ˆDô % T×%9Ñ%9Ó:ò 1�Ü ¨hÓ7�Ø—‘˜Q ¨¨BÐ/Õ0ð1ð ×ÒØ�dœ6 *¨eÓ4Ð5°RÐ8¼6ð FØó<ñ ñ ˆDô % T×%6Ñ%6Ó7ò -�Ü 	¨5Ó1�Ø—‘˜Q ¨˜OÕ,ð-ð ×ÒØ�dœ6 +¨xÓ8Ð9¸Ð<¼vØdÐfnó@ñ ñ ˆDð 26×1EÑ1E×FÐF¡g a¨¨A˜˜A˜q˜6™	ÐFˆHÒFÜ2AÀ(Ó2K×2QÑ2QÓ2Sò "Ñ.�Ñ.�j +Ü 
¨HÓ5�àØØ:¼3¸z»?Ð:KÈ:ÔVYÐZeÓVfÐUgÐhð�ð
 —‘˜DÕ!ð"ð ×!Ò!Ø�dœ6 -°Ó:Ð;¸2Ð>ÄØ6¸óBñ ñ ˆDô (¨×(>Ñ(>Ó?×EÑEÓGò 3‘��1Ü ¨hÓ7�Ø! !  D˜>�Ø—‘˜Q ¨Ð1Õ2ð3ô ˆt‹9˜Š>Øà˜(Ð#ˆØ�CŠ<Ø˜	�{Ñ"‰Gà˜˜B�xÑˆGÜ˜D¨'Ô2ˆØ˜‘ˆàˆùô? Gs   ÄI)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r&   r   Ú__annotations__Útupler(   r!   r    rƒ   r†   rž   rU   r   r   r{   r{   ˆ   so   … ñð" �c‘(ÓØ˜‘XÓØ˜˜s E¨#¡J°°c±
Ð:Ñ;Ñ<Ó<Ø�S‘	ÓØ˜C ˜H‘~Ó%òHò
ð; s¨T¡zô ;r   r{   Úpretrained_model_name_or_pathÚignore_mismatched_sizesÚloading_infoÚloggerc                 óò  — |€t        j                  t        «      }|j                  rIdj	                  |j                  «      }d|v r|dz  }t        d| j                  j                  › d|› �«      ‚|j                  «       }|€yt        d   › | j                  j                  › dt        d	   › d
|› d�}|j                  ||z   «       |j                  rt        d«      ‚|s|j                  rt        d«      ‚yy)zÒ
    Log a readable report about state_dict loading issues.

    This version is terminal-size aware: for very small terminals it falls back to a compact
    Key | Status view so output doesn't wrap badly.
    Nz
	zsize mismatchzb
	You may consider adding `ignore_mismatched_sizes=True` to `from_pretrained(...)` if appropriate.z#Error(s) in loading state_dict for z:
	ri   z LOAD REPORTrd   z from: rX   zˆWe encountered some issues during automatic conversion of the weights. For details look at the `CONVERSION` entries of the above report!zjYou set `ignore_mismatched_sizes` to `False`, thus raising an error. For details look at the above report!)ÚloggingÚ	getLoggerrŸ   r   r   ÚRuntimeErrorÚ	__class__rž   rp   Úwarningr€   r~   )Úmodelr¥   r¦   r§   r¨   Ú	error_msgr�   Úpreludes           r   Úlog_state_dict_reportr²   ì   s"  € ð €~Ü×"Ñ"¤8Ó,ˆð ×ÒØ—K‘K × 7Ñ 7Ó8ˆ	Ø˜iÑ'ØØvñˆIô Ð@ÀÇÁ×AYÑAYÐ@ZÐZ_Ð`iÐ_jÐkÓlÐlð ×/Ñ/Ó1€FØ€~Øä˜‘Ð! %§/¡/×":Ñ":Ð!;¸<ÌÐPWÑHXÐGYÐY`Ða~Ð`ð  @Bð  C€Gð ‡N�N�7˜VÑ#Ô$ð ×%Ò%Üð ó
ð 	
ñ # |×'CÒ'CÜØxó
ð 	
ð (DÐ"r   )é
   )éP   rJ   )rª   Úrert   rm   Úcollectionsr   r   Údataclassesr   Útypingr   Úcompiler   r   r   r!   r(   r   r    r:   r>   r?   rG   rc   rp   rr   ry   r{   ÚboolÚLoggerr²   rU   r   r   ú<module>r¼      s.  ðó Û 	Û Û 
ß 0Ý !Ý ð ˆB�J‰JÐ.Ó/€	ð#�Sð #˜Só #ñ
'˜˜c™ð '°#ó 'ð*˜T # s (™^ð *°°S¸#°X±ó *ðZ ˆ2�:‰:Ð'Ó(€ð$�3ð $˜3ó $òò5ð ØØØØØØØñ	€òóð ÷`ð `ó ð`ðP %)ñ,
à#&ð,
ð "ð,
ð $ð	,
ð
 �N‰N˜TÑ!ô,
r   