§
    oF§jö  ã                   ó�   — d dl Z d dlZd dlmZ d dlmZ defd„Zdedefd„Zdd	ed
edz  defd„Z	dedefd„Z
ddeez  dz  fd„ZdS )é    N)ÚPath)Ú	safe_openÚpathc                 ó4   — |                       dd¬¦  «         d S )NT)ÚparentsÚexist_ok)Úmkdir)r   s    ú/C:\Users\johnn\Wan2GP\shared\loras_migration.pyÚ_ensure_dirr      s   € Ø‡J‚J�t d€JÑ+Ô+Ð+Ð+Ð+ó    ÚsrcÚdst_dirc                 ód  — t          |¦  «         || j        z  }|                     ¦   «         rSt          j                             | j        ¦  «        \  }}d}	 ||› d|› |› �z  }|                     ¦   «         s|}n|dz  }Œ)t          j        t          | ¦  «        t          |¦  «        ¦  «         d S )Né   TÚ_)	r   ÚnameÚexistsÚosr   ÚsplitextÚshutilÚmoveÚstr)r   r   ÚtargetÚstemÚsuffixÚidxÚ	candidates          r
   Ú_move_with_collision_handlingr      s¾   € Ý�ÑÔÐØ�s”xÑ€FØ‡}‚}�„ð Ý”w×'Ò'¨¬Ñ1Ô1‰ˆˆfØˆð	Ø TÐ"9Ð"9¨CÐ"9°Ð"9Ð"9Ñ9ˆIØ×#Ò#Ñ%Ô%ð Ø"�ØØ�1‰HˆCð	õ „K•�C‘”�#˜f™+œ+Ñ&Ô&Ð&Ð&Ð&r   Ú	file_pathÚsubfolder_hintÚreturnc                 óÂ  ‡— |dv rdS |dv rdS |dv rdS g d¢}	 t          | dd	¬
¦  «        5 }|                     ¦   «         }|s	 d d d ¦  «         dS d}|D ]v}|                     ¦   «         Št          ˆfd„|D ¦   «         ¦  «        sŒ2|                     |¦  «        }t          ||j        dk    rt          |j        ¦  «        nd¦  «        }Œw|dk    r<|                     |d         ¦  «        }|j        dk    rt          |j        ¦  «        nd}|dk    r	 d d d ¦  «         dS |dk    r	 d d d ¦  «         dS 	 d d d ¦  «         dS # 1 swxY w Y   d S # t          $ r Y dS w xY w)N>   ú1.3Búwan_1.3B>   Ú5BÚwan_5B>   Ú14BÚwan)Úto_qÚto_kÚto_vÚproj_inÚproj_outzff.netÚffnÚtransformerÚattnÚ	gate_projÚup_projÚ	down_projÚ	lora_downÚlora_upÚptÚcpu)Ú	frameworkÚdevicer   c              3   ó    •K  — | ]}|‰v V — Œ	d S ©N© )Ú.0ÚtokenÚk_lowers     €r
   ú	<genexpr>z%_classify_wan_lora.<locals>.<genexpr><   s(   øè è € ÐJÐJ°˜5 GÐ+ÐJÐJÐJÐJÐJÐJr   iˆ  i¸  )	r   ÚkeysÚlowerÚanyÚ
get_tensorÚmaxÚndimÚshapeÚ	Exception)	r   r    Úcandidate_tokensÚfrA   Úmax_dimÚkeyÚtensorr?   s	           @r
   Ú_classify_wan_lorarN      sY  ø€ Ø˜Ð!Ð!ØˆzØ˜ÐÐØˆxØ˜Ð Ð Øˆuðð ð Ðð Ý�y¨D¸Ð?Ñ?Ô?ð 	À1Ø—6’6‘8”8ˆDØð Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð ˆGàð Tð T�ØŸ)š)™+œ+�ÝÐJÐJÐJÐJÐ9IÐJÑJÔJÑJÔJð ØØŸš cÑ*Ô*�Ý˜g¸F¼KÈ!ºO¸O¥s¨6¬<Ñ'8Ô'8Ð'8ÐQRÑSÔS��Ø˜!Š|ˆ|ØŸš d¨1¤gÑ.Ô.�Ø/5¬{¸Qª¨�#˜fœlÑ+Ô+Ð+ÀA�Ø˜$ŠˆØð!	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð" ˜$ŠˆØð%	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð& ð'	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	øõ( ð ð ð ØˆuˆuðøøøsY   ™E «EÁE ÁCEÄE Ä!EÄ(E Ä5EÄ6E ÅEÅE Å
EÅE Å
EÅEÚsrc_dirc                 óÌ   — |                       ¦   «         sd S |                      ¦   «         D ]}t          ||¦  «         Œ	 |                      ¦   «          d S # t          $ r Y d S w xY wr;   )r   Úiterdirr   ÚrmdirÚOSError)rO   r   Úitems      r
   Ú_move_dir_contentsrU   L   s}   € Ø�>Š>ÑÔð ØˆØ—’Ñ!Ô!ð 5ð 5ˆÝ% d¨GÑ4Ô4Ð4Ð4ðØ�Š‰ŒˆˆˆøÝð ð ð Øˆˆðøøøs   ¿A Á
A#Á"A#Úroot_dirc                 óÄ  — t          | pd¦  «                             ¦   «         }|dz  }|                     ¦   «         sdS |dz  }t          |¦  «         |                     ¦   «         D ]j}|                     ¦   «         sŒ|j        dv rŒ!|j                             d¦  «        r/|j        t          d¦  «        d…         }t          |||z  ¦  «         Œkt          ||dz  ¦  «         |dz  }|d	z  }|d
z  }|dz  }	h d£}
i }d|fd|fd|ffD ]\  }}t          ||z  |¦  «         Œt          |                     ¦   «         ¦  «        D ]Ë}|                     ¦   «         r|j                             d¦  «        rŒ1|                     ¦   «         rŒF|                     ¦   «         sŒ[|j        j        }||
v }t          ||r|nd¬¦  «        }|||dœ                     ||¦  «        }t          ||¦  «         |                     d¦  «        r|s
|||j        <   ŒÌt          |                     ¦   «         ¦  «        D ]&}|                     ¦   «         rt          ||¦  «         Œ'|                     d¦  «        D ]Z}	 |                     d¬¦  «        }n# t$          $ r Y Œ&w xY w|                     ¦   «         D ]\  }}||v rt          ||¦  «          nŒŒ[||||	fD ]}t          |¦  «         ŒdS )zy
    Reorganize lora folders into a single 'loras' tree.
    Migration is skipped if root/loras_i2v is already gone.
    ú.Ú	loras_i2vNÚloras>   rZ   rY   Úloras_Úwan_i2vr(   r$   r&   >   r%   r'   r#   r'   r#   r%   )r    )r(   r$   r&   z*.lsetÚignore)Úerrors)r   Úresolver   r   rQ   Úis_dirr   Ú
startswithÚlenrU   ÚlistÚis_fileÚparentrN   Úgetr   ÚglobÚ	read_textrH   Úitems)rV   ÚrootÚmarkerÚ
loras_rootÚentryÚtarget_nameÚwan_dirÚwan_1_3b_dirÚ
wan_5b_dirÚwan_i2v_dirÚoptional_hintsÚmoved_wan_by_signatureÚlegacy_namer   rT   r    Ú	used_hintÚtarget_bucketÚ
target_dirÚ	lset_fileÚcontentÚ	lora_nameÚdest_dirÚfolders                           r
   Úmigrate_loras_layoutr~   W   s—  € õ
 ��˜CÑ Ô ×(Ò(Ñ*Ô*€DØ�KÑ€FØ�=Š=‰?Œ?ð Øˆà˜‘€JÝ�
ÑÔÐð —’‘”ð @ð @ˆØ�|Š|‰~Œ~ð 	ØØŒ:Ð/Ð/Ð/ØØŒ:× Ò  Ñ*Ô*ð 	@Øœ*¥S¨¡]¤] _ _Ô5ˆKÝ˜u j°;Ñ&>Ñ?Ô?Ð?øõ �v˜z¨IÑ5Ñ6Ô6Ð6ð ˜5Ñ €GØ 
Ñ*€LØ˜hÑ&€JØ˜yÑ(€KØ*Ð*Ð*€NØÐà	�ÐØ	�ÐØ	ˆzÐð ð =ð =Ñˆ�Võ
 	˜:¨Ñ3°VÑ<Ô<Ð<Ð<õ �Z×'Ò'Ñ)Ô)Ñ*Ô*ð ;ð ;ˆØ�;Š;‰=Œ=ð 	˜TœY×1Ò1°%Ñ8Ô8ð 	ØØ�;Š;‰=Œ=ð 	àØ�|Š|‰~Œ~ð 	ØØœÔ)ˆØ" nÐ4ˆ	Ý*¨4ÐR[Ð@eÀÀÐaeÐfÑfÔfˆØ$°,È*ÐUÐU×YÒYØ˜7ñ
ô 
ˆ
õ 	& d¨JÑ7Ô7Ð7Ø×#Ò# EÑ*Ô*ð 	;°9ð 	;Ø0:Ð" 4¤9Ñ-øõ �Z×'Ò'Ñ)Ô)Ñ*Ô*ð 9ð 9ˆØ�<Š<‰>Œ>ð 	9Ý)¨$°Ñ8Ô8Ð8øð  —_’_ XÑ.Ô.ð ð ˆ	ð	Ø×)Ò)°Ð)Ñ:Ô:ˆGˆGøÝð 	ð 	ð 	ØˆHð	øøøà#9×#?Ò#?Ñ#AÔ#Að 	ð 	ÑˆI�xØ˜GÐ#Ð#Ý-¨i¸ÑBÔBÐBØ�ð $øð ˜L¨*°kÐBð ð ˆÝ�FÑÔÐÐðð s   É0JÊ
JÊJr;   )r   r   Úpathlibr   Úsafetensorsr   r   r   r   rN   rU   r~   r<   r   r
   ú<module>r�      s  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !ð,�dð ,ð ,ð ,ð ,ð' tð '°dð 'ð 'ð 'ð 'ð.ð . $ð .¸¸d¹
ð .Ècð .ð .ð .ð .ðb ð ¨tð ð ð ð ðLð L 4¨#¡:°Ñ#4ð Lð Lð Lð Lð Lð Lr   