
    JThz1                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
r
S SKJrJrJrJr  \	(       a  S SKJr  \" S	S
9 " S S5      5       r      SS jr      SS jr      SS jrSS jrg)    )annotations)defaultdict)Iterable)	dataclass)TYPE_CHECKINGN)merge_debug_infomerge_operator_dictsSelectiveBuildOperatorstrip_operator_overload_name)NativeFunctionT)frozenc                  *   \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   \SS j5       r\SS j5       r\S S j5       r\S!S j5       r	\        S"S j5       r
S#S jrS$S jrS#S jrS$S jrS#S jrS%S jrS&S jrS'S jrSrg)(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_selectivesc                 0    [         R                  SS05      $ )Nr   Tr   from_yaml_dict     Y/var/www/auris/envauris/lib/python3.13/site-packages/torchgen/selective_build/selector.pyget_nop_selector!SelectiveBuilder.get_nop_selectorF   s    ..0G/NOOr    c           
        1 Skn[        U R                  5       5      n[        X!-
  5      S:  a+  [        SR	                  SR                  X!-
  5      5      5      eU R                  SS5      n[        U[        5      (       d   eS nSU ;   a.  U S   n[        U[        5      (       d   e[        S U 5       5      n0 nU R                  S	0 5      n[        U[        5      (       d   eUR                  5        H  u  p[        R                  " X5      Xh'   M     0 n
U R                  S
0 5      n[        U[        5      (       d   eUR                  5        H-  u  pU	 Vs/ s H  n[        U5      PM     snU
[        U5      '   M/     U R                  S0 5      n[        U[        5      (       d   eU R                  S/ 5      n[        U[         5      (       d   e[        U5      nU R                  S/ 5      n[        U[         5      (       d   e[        U5      nU R                  SS5      n[        U[        5      (       d   e[#        UUUU
UUUU5      $ s  snf )N>   r   
debug_infor   r   r   r   r   r   r   z!Got unexpected top level keys: {},r   Fr%   c              3  8   #    U  H  n[        U5      v   M     g 7fN)str).0xs     r!   	<genexpr>2SelectiveBuilder.from_yaml_dict.<locals>.<genexpr>e   s     7w!s1vvws   r   r   r   r   r   r   )setkeyslen	Exceptionformatjoinget
isinstancer   listtupledictitemsr
   r   r)   r   r   )datavalid_top_level_keystop_level_keysr   r%   di_listr   operators_dictkvr   kernel_metadata_dictdtyper   r   r   r   s                    r!   r   SelectiveBuilder.from_yaml_dictJ   s@   	 
 TYY[)~4593::HH^BC 
 !%)@% H/6666
4<(Ggt,,,,7w77J	+r2.$////"((*DA1@@FIL + #xx(92>.5555(..0DA?@&Aqes5zq&AOCF# 1 "XX&:B?,d3333"2B7.(3333^,"2B7.(3333^,(,1PRW(X%7>>>>!)	
 		
! 'Bs   Ic                X    [         R                  " U 5      n[        R                  U5      $ r(   )yaml	safe_loadr   r   )config_contentscontentss     r!   from_yaml_strSelectiveBuilder.from_yaml_str   s!    >>/2..x88r    c                    [        U 5       n[        R                  " U5      n[        R	                  U5      sS S S 5        $ ! , (       d  f       g = fr(   )openrE   rF   r   r   )config_pathfrH   s      r!   from_yaml_pathSelectiveBuilder.from_yaml_path   s4    +!~~a(H#228< s   +A
Ac                Z    0 nU  H  nUUUSS.X4'   M     [         R                  USS.5      $ )NT)nameis_root_operatoris_used_for_traininginclude_all_overloads)r   r   r   )
allow_listrS   rT   r   ops        r!   &from_legacy_op_registration_allow_list7SelectiveBuilder.from_legacy_op_registration_allow_list   sH     	B$4(<)-	IM   ..&15
 	
r    c                    U R                   (       a  gXR                  ;   a  g[        U5      nXR                  ;   =(       a    U R                  U   R                  $ NT)r   r   r   rU   )selfrR   s     r!   is_operator_selected%SelectiveBuilder.is_operator_selected   sF    %%>>!+D1~~%T$..*>*T*TTr    c                :    [        U5      nU R                  U5      $ r(   )op_name_from_native_functionr]   r\   funcop_names      r!   is_native_function_selected,SelectiveBuilder.is_native_function_selected   s    .t4((11r    c                h   U R                  U5      (       d  gU R                  (       a  g[        SSSSS S9nUnXR                  ;   a  U R                  U   n[	        U5      nUnXR                  ;   a  U R                  U   nUR
                  =(       d    UR                  =(       a    UR
                  $ )NFT )rR   rS   rT   rU   r   )r]   r   r
   r   r   rT   rU   )r\   rR   not_training_oprW   base_ops        r!   !is_operator_selected_for_training2SelectiveBuilder.is_operator_selected_for_training   s    ((..%%0"!&"'
 >>!%B+D1!>>!nnT*G&& 
))Jg.J.J	
r    c                :    [        U5      nU R                  U5      $ r(   )r`   rj   ra   s      r!   (is_native_function_selected_for_training9SelectiveBuilder.is_native_function_selected_for_training   s    .t455g>>r    c                :   U R                  U5      (       d  gU R                  (       a  gXR                  ;   a  U R                  U   nUR                  $ [	        U5      nXR                  ;  a  gU R                  U   nUR
                  =(       a    UR                  $ )NFT)r]   r   r   rS   r   rU   )r\   rR   rW   ri   s       r!   rS   !SelectiveBuilder.is_root_operator   s    ((..%%>>!)-)=B&&&+D1~~%*...*>,,I1I1IIr    c                    U R                   (       d  U R                  (       a  gXR                  ;   =(       a    X R                  U   ;   $ r[   )r   r   r   )r\   
kernel_tagrB   s      r!   is_kernel_dtype_selected)SelectiveBuilder.is_kernel_dtype_selected   s?    %%)K)K ... :--j99	
r    c                   XR                   ;  a  U R                  (       a  U$ / $ [        5       nU R                   U    H  nSnU HJ  nUS:w  d  M  UR                  S5      S   UR                  S5      S   :X  d  M7  UR	                  U5        Sn  O   U(       a  M^  SU;  a  [        S5      eUR	                  S5        M     [        U5      $ )z6
Return a list of kernel keys that cover the used ops
Fdefault/   TzMissing kernel for the model)r   r   r.   splitaddr1   r6   )r\   rc   
kernel_key
result_setmodel_kernel_keys	key_foundkeys          r!   et_get_selected_kernels(SelectiveBuilder.et_get_selected_kernels   s    
 111!%!;!;:CC U
!%!8!8!AI! 9$		#q)->-D-DS-I!-LLNN3' $I " 9J.#$BCCNN9- "B" Jr    c                   U R                   U R                  S.n0 nU R                  R                  5        H  u  p4UR	                  5       X#'   M     X!S'   U R
                  b  [        U R
                  5      US'   U R                  R                  5        VVs0 s H  u  pVU[        U5      _M     snnUS'   U R                  US'   [        U R                  5      US'   [        U R                  5      US'   U$ s  snnf )N)r   r   r   r%   r   r   r   r   )r   r   r   r9   to_dictr   sortedr   r   r   r   )r\   retr   rc   rW   r?   r@   s          r!   r   SelectiveBuilder.to_dict  s    -1-O-O%)%?%?"
 	>>//1KG!#I 2$K' &t'7'7 8C (,';';'A'A'C"
'CVaAvayL'C"
 %)$;$; ! &t':': ; &t':': ;
"
s   C7r   N)returnr   )r:   dict[str, object]r   r   )rG   r)   r   r   )rM   r)   r   r   )rV   r   rS   r   rT   r   r   r   )rR   r)   r   r   )rb   r   r   r   )rr   r)   rB   r)   r   r   )rc   r)   r{   	list[str]r   r   )r   r   )__name__
__module____qualname____firstlineno____annotations__staticmethodr"   r   rI   rO   rX   r]   rd   rj   rm   rS   rs   r   r   __static_attributes__r   r    r!   r   r      s       (' 10 *)
 -,
 
  $('P P A
 A
F 9 9 = =
 

04
LP
	
 
$U2
4?J
 <r    r   c                    0 n[        U R                  5       5      [        UR                  5       5      -    H2  u  p4[        U5      nX2;   a  U[        X#   5      -  n[        U5      X#'   M4     U$ r(   )r6   r9   r.   )lhsrhsr   tag_namedtypesdtypes_copys         r!   merge_kernel_metadatar   '  sh     -/O -SYY[0AA&k&3899K$($5! B r    c                   [        [        5      n[        U R                  5       5      [        UR                  5       5      -    HI  nX#   R	                  U R                  U/ 5      5        X#   R	                  UR                  U/ 5      5        MK     UR                  5        VVs0 s H  u  p4U[        U5      _M     snn$ s  snnf r(   )r   r.   r6   r/   updater4   r9   r   )r   r   merge_et_kernel_metadatarW   vals        r!   r   r   6  s     5@4D388:chhj!11 $++CGGBO< $++CGGBO< 2 ,D+I+I+KL+KBsO+KLLLs   #B?c           
     6   U R                   =(       d    UR                   n[        U R                  UR                  5      n[        U R                  UR                  5      n[        U R                  UR                  5      n[        U R                  UR                  5      nU R                  =(       d    UR                  nU R                  R                  UR                  5      nU R                  R                  UR                  5      n	[        UUUUUUU	U5      $ 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5R9R9R!#//3??CJ$S]]CMMBI+C,?,?ATATUO1 6 6 	))NS-N-N " ''--c.@.@AN''--c.@.@AN%	 	r    c                L    U R                    SU R                  R                   3$ )Nz::)	namespacerb   rR   )rN   s    r!   r`   r`   ]  s!     kk]"QVV[[M**r    )r   r   r   r   r   r   )r   r   r   r   r   r   )rN   r   r   r)   )
__future__r   collectionsr   collections.abcr   dataclassesr   typingr   rE   !torchgen.selective_build.operatorr   r	   r
   r   torchgen.modelr   r   r   r   r   r`   r   r    r!   <module>r      s    " # $ !     - $F F FR		 	M		M		M 	M	 06+r    