§
    Ì²ÅjÚ2  ã                  óÐ   — 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© ó    úRC:\Projects\Historical\venv\Lib\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J ‚d }d| v r8| d         }t          |t          ¦  «        sJ ‚t          d„ |D ¦   «         ¦  «        }i }|                      d	i ¦  «        }t          |t          ¦  «        sJ ‚|                     ¦   «         D ]\  }}	t          j        ||	¦  «        ||<   Œi }
|                      d
i ¦  «        }t          |t          ¦  «        sJ ‚|                     ¦   «         D ]!\  }}	d„ |	D ¦   «         |
t          |¦  «        <   Œ"|                      di ¦  «        }t          |t          ¦  «        sJ ‚|                      dg ¦  «        }t          |t           ¦  «        sJ ‚t          |¦  «        }|                      dg ¦  «        }t          |t           ¦  «        sJ ‚t          |¦  «        }|                      dd¦  «        }t          |t          ¦  «        sJ ‚t#          ||||
||||¦  «        S )N>   r   Ú
debug_infor   r   r   r   r   r   r   z!Got unexpected top level keys: {}ú,r   Fr&   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Ústr)Ú.0Úxs     r!   ú	<genexpr>z2SelectiveBuilder.from_yaml_dict.<locals>.<genexpr>e   s(   è è € Ð7Ð7¨!�s 1™vœvÐ7Ð7Ð7Ð7Ð7Ð7r    r   r   c                ó,   — g | ]}t          |¦  «        ‘ŒS r   r*   )r,   Údtypes     r!   ú
<listcomp>z3SelectiveBuilder.from_yaml_dict.<locals>.<listcomp>s   s   € Ð&AÐ&AÐ&A°e¥s¨5¡z¤zÐ&AÐ&AÐ&Ar    r   r   r   r   )ÚsetÚkeysÚlenÚ	ExceptionÚformatÚjoinÚgetÚ
isinstancer   Ú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Ð6Ð6Ð6àˆ
Ø˜4ÐÐØ˜<Ô(ˆGÝ˜g¥tÑ,Ô,Ð,Ð,Ð,åÐ7Ð7¨wÐ7Ñ7Ô7Ñ7Ô7ˆJàˆ	ØŸš +¨rÑ2Ô2ˆÝ˜.­$Ñ/Ô/Ð/Ð/Ð/à"×(Ò(Ñ*Ô*ð 	Gð 	G‰DˆAˆqÝ1Ô@ÀÀAÑFÔFˆI�a‰LˆLàˆØ#ŸxšxÐ(9¸2Ñ>Ô>ÐÝÐ.µÑ5Ô5Ð5Ð5Ð5à(×.Ò.Ñ0Ô0ð 	Bð 	B‰DˆAˆqØ&AÐ&A¸qÐ&AÑ&AÔ&AˆO�C ™FœFÑ#Ð#à!ŸXšXÐ&:¸BÑ?Ô?ÐÝÐ,­dÑ3Ô3Ð3Ð3Ð3àŸšÐ"2°BÑ7Ô7ˆÝ˜.­(Ñ3Ô3Ð3Ð3Ð3Ý˜^Ñ,Ô,ˆàŸšÐ"2°BÑ7Ô7ˆÝ˜.­(Ñ3Ô3Ð3Ð3Ð3Ý˜^Ñ,Ô,ˆà(,¯ªÐ1PÐRWÑ(XÔ(XÐ%ÝÐ7½Ñ>Ô>Ð>Ð>Ð>åØ!ØØØØØØØ)ñ	
ô 	
ð 		
r    Úconfig_contentsr+   c                ó^   — t          j        | ¦  «        }t                               |¦  «        S r)   )ÚyamlÚ	safe_loadr   r   )rE   Ú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)   )ÚopenrG   rH   r   r   )rK   ÚfrI   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)ÚnamerQ   rR   Úinclude_all_overloads)r   r   r   )rP   rQ   rR   r   Úops        r!   Ú&from_legacy_op_registration_allow_listz7SelectiveBuilder.from_legacy_op_registration_allow_list™   s`   € ð ˆ	Øð 	ð 	ˆBàØ$4Ø(<Ø)-ð	ð ˆI�b‰MˆMõ  ×.Ò.à&Ø15ðð ñ
ô 
ð 	
r    rT   c                ó~   — | j         rdS || j        v rdS t          |¦  «        }|| j        v o| j        |         j        S ©NT)r   r   r   rU   )ÚselfrT   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[   ©rZ   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Ú )rT   rQ   rR   rU   r   )r[   r   r
   r   r   rR   rU   )rZ   rT   Únot_training_oprV   Ú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^   rf   r_   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   rQ   r   rU   )rZ   rT   rV   re   s       r!   rQ   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 rY   )r   r   r   )rZ   rj   r0   s      r!   Úis_kernel_dtype_selectedz)SelectiveBuilder.is_kernel_dtype_selectedæ   sC   € ØÔ%ð 	¨Ô)Kð 	Ø�4ð ˜$Ô.Ð.ð :Ø˜Ô-¨jÔ9Ð9ð	
r    r`   Ú
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:   )rZ   r`   rm   Ú
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,   rB   rC   s      r!   ú
<dictcomp>z,SelectiveBuilder.to_dict.<locals>.<dictcomp>  s1   € ð "
ð "
ð "
Ù#˜a ˆA�v�a‰yŒyð"
ð "
ð "
r    r   r   r   r   )r   r   r   r=   Úto_dictr   r}   r   r   r   r   )rZ   Úretr   r`   rV   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   )rE   r+   r   r   )rK   r+   r   r   )rP   r   rQ   r   rR   r   r   r   )rT   r+   r   r   )r\   r   r   r   )rj   r+   r0   r+   r   r   )r`   r+   rm   rn   r   rn   )r   r$   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Ústaticmethodr"   r   rJ   rO   rW   r[   ra   rf   rh   rQ   rl   ry   r   r   r    r!   r   r      sÕ  € € € € € € ð  ÐÐÑð (Ð'Ð'Ñ'ð 1Ð0Ð0Ñ0ð *Ð)Ð)Ñ)ð
 -Ð,Ð,Ñ,ð
 ÐÐÑð
 ÐÐÑð (Ð'Ð'Ñ'àðPð Pð Pñ „\ðPð ðA
ð A
ð A
ñ „\ðA
ðF ð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,   rV   Úvals      r!   r~   z,merge_et_kernel_metadata.<locals>.<dictcomp>?  s$   € ÐLÐLÐL¡  CˆB•�s‘”ÐLÐLÐLr    )r   r2   r:   r3   Úupdater8   r=   )r†   r‡   Úmerge_et_kernel_metadatarV   s       r!   r‘   r‘   6  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”   B  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    rN   r   r+   c                ó.   — | j         › d| j        j        › �S )Nz::)Ú	namespacer\   rT   )rN   s    r!   r^   r^   ]  s   € ð ŒkÐ*Ð*˜QœVœ[Ð*Ð*Ð*r    )r†   r   r‡   r   r   r   )r†   r   r‡   r   r   r   )rN   r   r   r+   )Ú
__future__r   Úcollectionsr   Úcollections.abcr   Údataclassesr   Útypingr   rG   Ú!torchgen.selective_build.operatorr   r	   r
   r   Útorchgen.modelr   r   rŒ   r‘   r”   r^   r   r    r!   ú<module>rž      si  ðØ "Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð .Ø-Ð-Ð-Ð-Ð-Ð-ð €�$ÐÑÔðFð Fð Fð Fð Fñ Fô Fñ ÔðFðRð ð ð ð	Mð 	Mð 	Mð 	Mðð ð ð ð6+ð +ð +ð +ð +ð +r    