
    S j5                        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     r/root/GenerationalWealth/GenerationalWealth/venv/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  [        S[        U5       35      eS nSU ;   aC  U S   n[        U[        5      (       d  [        S	[        U5       35      e[        S
 U 5       5      n0 nU R                  S0 5      n[        U[        5      (       d  [        S[        U5       35      eUR                  5        H  u  p[        R                   " X5      Xh'   M     0 n
U R                  S0 5      n[        U[        5      (       d  [        S[        U5       35      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  [        S[        U5       35      eU R                  S/ 5      n[        U[$        5      (       d  [        S[        U5       35      e[        U5      nU R                  S/ 5      n[        U[$        5      (       d  [        S[        U5       35      e[        U5      nU R                  SS5      n[        U[        5      (       d  [        S[        U5       35      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   Fz1Expected 'include_all_operators' to be bool, got r%   z&Expected 'debug_info' to be list, got 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>k   s     7w!s1vvws   r   z%Expected 'operators' to be dict, got r   z+Expected 'kernel_metadata' to be dict, got 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   )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 CDI^D_C`a  
4<(Ggt,,$<T']OL  7w77J	+r2.$// 7^8L7MN  #((*DA1@@FIL + #xx(92>.55 =dCW>X=YZ  )..0DA?@&Aqes5zq&AOCF# 1 "XX&:B?,d33 @FXAY@Z[  "2B7.(33 @nAU@VW  ^,"2B7.(33 @nAU@VW  ^,(,1PRW(X%7>> 9:;= 
  !)	
 		
; 'Bs   -K5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(   )openrG   rH   r   r   )config_pathfrJ   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_listrU   rV   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   rW   )selfrT   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 )rT   rU   rV   rW   r   )r_   r   r
   r   r   rV   rW   )r^   rT   not_training_oprY   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(   )rb   rl   rc   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   rU   r   rW   )r^   rT   rY   rk   s       r!   rU   !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_tagrD   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   r8   )r^   re   
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   r;   to_dictr   sortedr   r   r   r   )r^   retr   re   rY   rA   rB   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   )rI   r)   r   r   )rO   r)   r   r   )rX   r   rU   r   rV   r   r   r   )rT   r)   r   r   )rd   r   r   r   )rt   r)   rD   r)   r   r   )re   r)   r}   	list[str]r   r   )r   r   )__name__
__module____qualname____firstlineno____annotations__staticmethodr"   r   rK   rQ   rZ   r_   rf   rl   ro   rU   ru   r   r   __static_attributes__r   r    r!   r   r      s       (' 10 *)
 -,
 
  $('P P Z
 Z
x 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(   )r8   r;   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.   r8   r/   updater4   r;   r   )r   r   merge_et_kernel_metadatarY   vals        r!   r   r   O  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   [  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::)	namespacerd   rT   )rP   s    r!   rb   rb   v  s!     kk]"QVV[[M**r    )r   r   r   r   r   r   )r   r   r   r   r   r   )rP   r   r   r)   )
__future__r   collectionsr   collections.abcr   dataclassesr   typingr   rG   !torchgen.selective_build.operatorr   r	   r
   r   torchgen.modelr   r   r   r   r   rb   r   r    r!   <module>r      s    " # $ !     - $_ _ _D			 	M		M		M 	M	 06+r    