§
    �Štjõ5  ã                  óÐ   — 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
Z
d dlmZmZmZmZ e	rd dlmZ  ed	¬
¦  «         G d„ d¦  «        ¦   «         Zdd„Zdd„Zdd„Zdd„ZdS )é    )Úannotations)Údefaultdict)ÚIterable)Ú	dataclass)ÚTYPE_CHECKINGN)Úmerge_debug_infoÚmerge_operator_dictsÚSelectiveBuildOperatorÚstrip_operator_overload_name)ÚNativeFunctionT)Úfrozenc                  ó  — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   d
ed<   ded<   ed-d„¦   «         Zed.d„¦   «         Zed/d„¦   «         Zed0d„¦   «         Zed1d„¦   «         Z	d2d„Z
d3d „Zd2d!„Zd3d"„Zd2d#„Zd4d&„Zd5d*„Zd6d+„Zd,S )7ÚSelectiveBuilderÚboolÚinclude_all_operatorsztuple[str, ...] | NoneÚ_debug_infoz!dict[str, SelectiveBuildOperator]Ú	operatorsúdict[str, list[str]]Úkernel_metadataÚet_kernel_metadataúset[str]Úcustom_classesÚbuild_featuresÚinclude_all_non_op_selectivesÚreturnc                 ó:   — t                                ddi¦  «        S )Nr   T©r   Úfrom_yaml_dict© ó    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torchgen/selective_build/selector.pyÚget_nop_selectorz!SelectiveBuilder.get_nop_selectorF   s   € å×.Ò.Ð0GÈÐ/NÑOÔOÐOr    Údataúdict[str, object]c           
     óê  — h d£}t          |                      ¦   «         ¦  «        }t          ||z
  ¦  «        dk    r8t          d                     d                     ||z
  ¦  «        ¦  «        ¦  «        ‚|                      dd¦  «        }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚d }d| v rU| d         }t          |t          ¦  «        st          d	t          |¦  «        › �¦  «        ‚t          d
„ |D ¦   «         ¦  «        }i }|                      di ¦  «        }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|                     ¦   «         D ]\  }}	t          j        ||	¦  «        ||<   Œi }
|                      di ¦  «        }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|                     ¦   «         D ]!\  }}	d„ |	D ¦   «         |
t#          |¦  «        <   Œ"|                      di ¦  «        }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|                      dg ¦  «        }t          |t$          ¦  «        st          dt          |¦  «        › �¦  «        ‚t          |¦  «        }|                      dg ¦  «        }t          |t$          ¦  «        st          dt          |¦  «        › �¦  «        ‚t          |¦  «        }|                      dd¦  «        }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t'          ||||
||||¦  «        S )N>   r   Ú
debug_infor   r   r   r   r   r   r   z!Got unexpected top level keys: {}ú,r   Fz1Expected 'include_all_operators' to be bool, got r&   z&Expected 'debug_info' to be list, got c              3  ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Ústr)Ú.0Úxs     r!   ú	<genexpr>z2SelectiveBuilder.from_yaml_dict.<locals>.<genexpr>k   s(   è è € Ð7Ð7¨!�s 1™vœvÐ7Ð7Ð7Ð7Ð7Ð7r    r   z%Expected 'operators' to be dict, got r   z+Expected 'kernel_metadata' to be dict, got c                ó,   — g | ]}t          |¦  «        ‘ŒS r   r*   )r,   Údtypes     r!   ú
<listcomp>z3SelectiveBuilder.from_yaml_dict.<locals>.<listcomp>   s   € Ð&AÐ&AÐ&A°e¥s¨5¡z¤zÐ&AÐ&AÐ&Ar    r   z.Expected 'et_kernel_metadata' to be dict, got r   z.Expected 'custom_classes' to be Iterable, got r   z.Expected 'build_features' to be Iterable, got r   z9Expected 'include_all_non_op_selectives' to be bool, got )ÚsetÚkeysÚlenÚ	ExceptionÚformatÚjoinÚgetÚ
isinstancer   ÚAssertionErrorÚtypeÚlistÚtupleÚdictÚitemsr
   r   r+   r   r   )r#   Úvalid_top_level_keysÚtop_level_keysr   r&   Údi_listr   Úoperators_dictÚkÚvr   Úkernel_metadata_dictr   r   r   r   s                   r!   r   zSelectiveBuilder.from_yaml_dictJ   sä  € ð	 
ð 	 
ð 	 
Ðõ ˜TŸYšY™[œ[Ñ)Ô)ˆÝˆ~Ð 4Ñ4Ñ5Ô5¸Ò9Ð9ÝØ3×:Ò:Ø—H’H˜^Ð.BÑBÑCÔCñô ñô ð ð
 !%§¢Ð)@À%Ñ HÔ HÐÝÐ/µÑ6Ô6ð 	Ý ØaÅDÐI^ÑD_ÔD_ÐaÐañô ð ð ˆ
Ø˜4ÐÐØ˜<Ô(ˆGÝ˜g¥tÑ,Ô,ð Ý$ØL½TÀ'¹]¼]ÐLÐLñô ð õ Ð7Ð7¨wÐ7Ñ7Ô7Ñ7Ô7ˆJàˆ	ØŸš +¨rÑ2Ô2ˆÝ˜.­$Ñ/Ô/ð 	Ý ØN½¸^Ñ8LÔ8LÐNÐNñô ð ð #×(Ò(Ñ*Ô*ð 	Gð 	G‰DˆAˆqÝ1Ô@ÀÀAÑFÔFˆI�a‰LˆLàˆØ#ŸxšxÐ(9¸2Ñ>Ô>ÐÝÐ.µÑ5Ô5ð 	Ý ØZ½dÐCWÑ>XÔ>XÐZÐZñô ð ð )×.Ò.Ñ0Ô0ð 	Bð 	B‰DˆAˆqØ&AÐ&A¸qÐ&AÑ&AÔ&AˆO�C ™FœFÑ#Ð#à!ŸXšXÐ&:¸BÑ?Ô?ÐÝÐ,­dÑ3Ô3ð 	Ý Ø[ÅÐFXÑAYÔAYÐ[Ð[ñô ð ð ŸšÐ"2°BÑ7Ô7ˆÝ˜.­(Ñ3Ô3ð 	Ý ØWÅÀnÑAUÔAUÐWÐWñô ð õ ˜^Ñ,Ô,ˆàŸšÐ"2°BÑ7Ô7ˆÝ˜.­(Ñ3Ô3ð 	Ý ØWÅÀnÑAUÔAUÐWÐWñô ð õ ˜^Ñ,Ô,ˆà(,¯ªÐ1PÐRWÑ(XÔ(XÐ%ÝÐ7½Ñ>Ô>ð 	Ý ð=ÝÐ9Ñ:Ô:ð=ð =ñô ð õ
  Ø!ØØØØØØØ)ñ	
ô 	
ð 		
r    Úconfig_contentsr+   c                ó^   — t          j        | ¦  «        }t                               |¦  «        S r)   )ÚyamlÚ	safe_loadr   r   )rG   Úcontentss     r!   Úfrom_yaml_strzSelectiveBuilder.from_yaml_str§   s%   € å”> /Ñ2Ô2ˆÝ×.Ò.¨xÑ8Ô8Ð8r    Úconfig_pathc                ó°   — t          | ¦  «        5 }t          j        |¦  «        }t                               |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r)   )ÚopenrI   rJ   r   r   )rM   ÚfrK   s      r!   Úfrom_yaml_pathzSelectiveBuilder.from_yaml_path¬   s‘   € å�+ÑÔð 	= !Ý”~ aÑ(Ô(ˆHÝ#×2Ò2°8Ñ<Ô<ð	=ð 	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s   �.AÁAÁAÚ
allow_listÚis_root_operatorÚis_used_for_trainingc                ó^   — i }| D ]}|||ddœ||<   Œt                                |ddœ¦  «        S )NT)ÚnamerS   rT   Úinclude_all_overloads)r   r   r   )rR   rS   rT   r   Úops        r!   Ú&from_legacy_op_registration_allow_listz7SelectiveBuilder.from_legacy_op_registration_allow_list²   s`   € ð ˆ	Øð 	ð 	ˆBàØ$4Ø(<Ø)-ð	ð ˆI�b‰MˆMõ  ×.Ò.à&Ø15ðð ñ
ô 
ð 	
r    rV   c                ó~   — | j         rdS || j        v rdS t          |¦  «        }|| j        v o| j        |         j        S ©NT)r   r   r   rW   )ÚselfrV   s     r!   Úis_operator_selectedz%SelectiveBuilder.is_operator_selectedÅ   sM   € ØÔ%ð 	Ø�4à�4”>Ð!Ð!Ø�4Ý+¨DÑ1Ô1ˆØ�t”~Ð%ÐT¨$¬.¸Ô*>Ô*TÐTr    Úfuncr   c                óJ   — t          |¦  «        }|                      |¦  «        S r)   )Úop_name_from_native_functionr]   ©r\   r^   Úop_names      r!   Úis_native_function_selectedz,SelectiveBuilder.is_native_function_selectedÎ   s#   € Ý.¨tÑ4Ô4ˆØ×(Ò(¨Ñ1Ô1Ð1r    c                ó  — |                       |¦  «        sdS | j        rdS t          ddddd ¬¦  «        }|}|| j        v r| j        |         }t	          |¦  «        }|}|| j        v r| j        |         }|j        p|j        o|j        S )NFTÚ )rV   rS   rT   rW   r   )r]   r   r
   r   r   rT   rW   )r\   rV   Únot_training_oprX   Úbase_ops        r!   Ú!is_operator_selected_for_trainingz2SelectiveBuilder.is_operator_selected_for_trainingÒ   s¹   € Ø×(Ò(¨Ñ.Ô.ð 	Ø�5ØÔ%ð 	Ø�4å0ØØ"Ø!&Ø"'Øð
ñ 
ô 
ˆð ˆØ�4”>Ð!Ð!Ø” Ô%ˆBå+¨DÑ1Ô1ˆØ!ˆØ�4”>Ð!Ð!Ø”n TÔ*ˆGàÔ&ð 
ØÔ)ÐJ¨gÔ.Jð	
r    c                óJ   — t          |¦  «        }|                      |¦  «        S r)   )r`   rh   ra   s      r!   Ú(is_native_function_selected_for_trainingz9SelectiveBuilder.is_native_function_selected_for_trainingì   s#   € Ý.¨tÑ4Ô4ˆØ×5Ò5°gÑ>Ô>Ð>r    c                óæ   — |                       |¦  «        sdS | j        rdS || j        v r| j        |         }|j        S t	          |¦  «        }|| j        vrdS | j        |         }|j        o|j        S )NFT)r]   r   r   rS   r   rW   )r\   rV   rX   rg   s       r!   rS   z!SelectiveBuilder.is_root_operatorð   s‹   € Ø×(Ò(¨Ñ.Ô.ð 	Ø�5ØÔ%ð 	Ø�4à�4”>Ð!Ð!Ø)-¬¸Ô)=ˆBØÔ&Ð&Ý+¨DÑ1Ô1ˆØ�t”~Ð%Ð%Ø�5Ø*.¬.¸Ô*>ˆØÔ,ÐI°Ô1IÐIr    Ú
kernel_tagr0   c                óR   — | j         s| j        rdS || j        v o|| j        |         v S r[   )r   r   r   )r\   rl   r0   s      r!   Úis_kernel_dtype_selectedz)SelectiveBuilder.is_kernel_dtype_selectedÿ   sC   € ØÔ%ð 	¨Ô)Kð 	Ø�4ð ˜$Ô.Ð.ð :Ø˜Ô-¨jÔ9Ð9ð	
r    rb   Ú
kernel_keyú	list[str]c                ó”  — || j         vr| j        r|ng S t          ¦   «         }| j         |         D ]Š}d}|D ]Y}|dk    rQ|                     d¦  «        d         |                     d¦  «        d         k    r|                     |¦  «         d} nŒZ|s(d|vrt          d¦  «        ‚|                     d¦  «         Œ‹t          |¦  «        S )zF
        Return a list of kernel keys that cover the used ops
        FÚdefaultú/é   TzMissing kernel for the model)r   r   r2   ÚsplitÚaddr5   r<   )r\   rb   ro   Ú
result_setÚmodel_kernel_keysÚ	key_foundÚkeys          r!   Úet_get_selected_kernelsz(SelectiveBuilder.et_get_selected_kernels  sö   € ð
 ˜$Ô1Ð1Ð1Ø!%Ô!;ÐC�:�:ÀÐCõ ‘U”Uˆ
à!%Ô!8¸Ô!Að 	.ð 	.ÐØˆIØ!ð ð �ð ˜9Ò$Ð$ØŸ	š	 #™œ qÔ)Ð->×-DÒ-DÀSÑ-IÔ-IÈ!Ô-LÒLÐLà—N’N 3Ñ'Ô'Ð'Ø $�IØ�EøØð .Ø JÐ.Ð.Ý#Ð$BÑCÔCÐCà—N’N 9Ñ-Ô-Ð-øå�JÑÔÐr    c                ó–  — | j         | j        dœ}i }| j                             ¦   «         D ]\  }}|                     ¦   «         ||<   Œ||d<   | j        �t          | j        ¦  «        |d<   d„ | j                             ¦   «         D ¦   «         |d<   | j        |d<   t          | j	        ¦  «        |d<   t          | j
        ¦  «        |d<   |S )	N)r   r   r   r&   c                ó4   — i | ]\  }}|t          |¦  «        “ŒS r   ©Úsorted)r,   rD   rE   s      r!   ú
<dictcomp>z,SelectiveBuilder.to_dict.<locals>.<dictcomp>3  s1   € ð "
ð "
ð "
Ù#˜a ˆA�v�a‰yŒyð"
ð "
ð "
r    r   r   r   r   )r   r   r   r?   Úto_dictr   r   r   r   r   r   )r\   Úretr   rb   rX   s        r!   r�   zSelectiveBuilder.to_dict&  só   € à-1Ô-OØ%)Ô%?ð"
ð "
ˆð ˆ	Øœ>×/Ò/Ñ1Ô1ð 	.ð 	.‰KˆG�RØ!#§¢¡¤ˆI�gÑÐØ$ˆˆKÑàÔÐ'Ý & tÔ'7Ñ 8Ô 8ˆC�Ñð"
ð "
Ø'+Ô';×'AÒ'AÑ'CÔ'Cð"
ñ "
ô "
ˆÐÑð %)Ô$;ˆÐ Ñ!å & tÔ':Ñ ;Ô ;ˆÐÑå & tÔ':Ñ ;Ô ;ˆÐÑàˆ
r    N)r   r   )r#   r$   r   r   )rG   r+   r   r   )rM   r+   r   r   )rR   r   rS   r   rT   r   r   r   )rV   r+   r   r   )r^   r   r   r   )rl   r+   r0   r+   r   r   )rb   r+   ro   rp   r   rp   )r   r$   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Ústaticmethodr"   r   rL   rQ   rY   r]   rc   rh   rj   rS   rn   r{   r�   r   r    r!   r   r      sÕ  € € € € € € ð  ÐÐÑð (Ð'Ð'Ñ'ð 1Ð0Ð0Ñ0ð *Ð)Ð)Ñ)ð
 -Ð,Ð,Ñ,ð
 ÐÐÑð
 ÐÐÑð (Ð'Ð'Ñ'àðPð Pð Pñ „\ðPð ðZ
ð Z
ð Z
ñ „\ðZ
ðx ð9ð 9ð 9ñ „\ð9ð ð=ð =ð =ñ „\ð=ð
 ð
ð 
ð 
ñ „\ð
ð$Uð Uð Uð Uð2ð 2ð 2ð 2ð
ð 
ð 
ð 
ð4?ð ?ð ?ð ?ðJð Jð Jð Jð
ð 
ð 
ð 
ð ð  ð  ð  ð<ð ð ð ð ð r    r   Úlhsr   Úrhsr   c                ó  — i }t          |                      ¦   «         ¦  «        t          |                     ¦   «         ¦  «        z   D ]B\  }}t          |¦  «        }||v r|t          ||         ¦  «        z  }t          |¦  «        ||<   ŒC|S r)   )r<   r?   r2   )rˆ   r‰   r   Útag_nameÚdtypesÚdtypes_copys         r!   Úmerge_kernel_metadatarŽ   @  sŠ   € ð -/€OÝ  §¢¡¤Ñ-Ô-µ°S·Y²Y±[´[Ñ0AÔ0AÑAð 6ð 6Ñˆ�&Ý˜&‘k”kˆØ�Ð&Ð&Ø�3˜¨xÔ8Ñ9Ô9Ñ9ˆKå$(¨Ñ$5Ô$5ˆ˜Ñ!Ð!àÐr    c                ó®  — t          t          ¦  «        }t          |                      ¦   «         ¦  «        t          |                     ¦   «         ¦  «        z   D ]`}||                              |                      |g ¦  «        ¦  «         ||                              |                     |g ¦  «        ¦  «         Œad„ |                     ¦   «         D ¦   «         S )Nc                ó4   — i | ]\  }}|t          |¦  «        “ŒS r   r~   )r,   rX   Úvals      r!   r€   z,merge_et_kernel_metadata.<locals>.<dictcomp>X  s$   € ÐLÐLÐL¡  CˆB•�s‘”ÐLÐLÐLr    )r   r2   r<   r3   Úupdater8   r?   )rˆ   r‰   Úmerge_et_kernel_metadatarX   s       r!   r“   r“   O  sµ   € õ 5@ÅÑ4DÔ4DÐÝ�3—8’8‘:”:ÑÔ¥ c§h¢h¡j¤jÑ!1Ô!1Ñ1ð =ð =ˆØ  Ô$×+Ò+¨C¯GªG°B¸©O¬OÑ<Ô<Ð<Ø  Ô$×+Ò+¨C¯GªG°B¸©O¬OÑ<Ô<Ð<Ð<àLÐLÐ+C×+IÒ+IÑ+KÔ+KÐLÑLÔLÐLr    c           
     ó²  — | j         p|j         }t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }| j	        p|j	        }| j
                             |j
        ¦  «        }| j                             |j        ¦  «        }	t          |||||||	|¦  «        S r)   )r   r   r   r	   r   rŽ   r   r“   r   r   r   Úunionr   r   )
rˆ   r‰   r   r&   r   r   r   r   r   r   s
             r!   Úcombine_selective_buildersr–   [  sÞ   € ð  Ô5ÐR¸Ô9RÐÝ! #¤/°3´?ÑCÔC€JÝ$ S¤]°C´MÑBÔB€IÝ+¨CÔ,?ÀÔATÑUÔU€OÝ1ØÔ Ô 6ñô Ðð 	Ô)ÐN¨SÔ-Nð "ð Ô'×-Ò-¨cÔ.@ÑAÔA€NØÔ'×-Ò-¨cÔ.@ÑAÔA€NÝØØØØØØØØ%ñ	ô 	ð 	r    rP   r   r+   c                ó.   — | j         › d| j        j        › �S )Nz::)Ú	namespacer^   rV   )rP   s    r!   r`   r`   v  s   € ð ŒkÐ*Ð*˜QœVœ[Ð*Ð*Ð*r    )rˆ   r   r‰   r   r   r   )rˆ   r   r‰   r   r   r   )rP   r   r   r+   )Ú
__future__r   Úcollectionsr   Úcollections.abcr   Údataclassesr   Útypingr   rI   Ú!torchgen.selective_build.operatorr   r	   r
   r   Útorchgen.modelr   r   rŽ   r“   r–   r`   r   r    r!   ú<module>r       si  ðØ "Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð .Ø-Ð-Ð-Ð-Ð-Ð-ð €�$ÐÑÔð_ð _ð _ð _ð _ñ _ô _ñ Ôð_ðD	ð ð ð ð	Mð 	Mð 	Mð 	Mðð ð ð ð6+ð +ð +ð +ð +ð +r    