
    9j)                        d dl mZ d dlmZ  ed       G d d             Z	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 dd	Zdd
Zy)    )annotations)	dataclassT)frozenc                      e Zd ZU ded<   ded<   ded<   ded<   ded<   e	 	 	 	 	 	 dd	       Ze	 	 	 	 dd
       ZddZy)SelectiveBuildOperatorstrnameboolis_root_operatoris_used_for_traininginclude_all_overloadstuple[str, ...] | None_debug_infoc           
        h d}t        t        |j                               |z
        dkD  rCt        dj	                  dj                  t        |j                               |z
                    d|v r| |d   k7  rt        d|  d|d          |j                  dd	      }t        |t              st        d
t        |             |j                  dd	      }t        |t              st        dt        |             |j                  dd	      }t        |t              st        dt        |             d }d|v r>|d   }t        |t              st        dt        |             t        d |D              }t        | ||||      S )N>   r	   
debug_infor   r   r   r   z!Got unexpected top level keys: {},r	   zop_name mismatch: z != r   Tz,Expected 'is_root_operator' to be bool, got r   z0Expected 'is_used_for_training' to be bool, got r   z1Expected 'include_all_overloads' to be bool, got r   z&Expected 'debug_info' to be list, got c              3  2   K   | ]  }t        |        y wN)r   ).0xs     a/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torchgen/selective_build/operator.py	<genexpr>z8SelectiveBuildOperator.from_yaml_dict.<locals>.<genexpr>f   s     7!s1v7s   r	   r   r   r   r   )lensetkeys	ExceptionformatjoinAssertionErrorget
isinstancer
   typelisttupler   )op_nameop_infoallowed_keysr   r   r   r   di_lists           r   from_yaml_dictz%SelectiveBuildOperator.from_yaml_dict4   s   
 s7<<>"\12Q63::HHS0<?@  W'&/)$(	gfo5FG  #;;'94@*D1 >tDT?U>VW   '{{+A4H.5 B4H\C]B^_  !(,CT J/6 CDI^D_C`a  .2
7"l+Ggt,$<T']OL  7w77J%-!5"7"
 	
    c                "    t        | dddd       S )NTr   )r   )r	   s    r   *from_legacy_operator_name_without_overloadzASelectiveBuildOperator.from_legacy_operator_name_without_overloadp   s      &!!%"&
 	
r+   c                    | j                   | j                  | j                  d}| j                  | j                  |d<   |S )N)r   r   r   r   )r   r   r   r   )selfrets     r   to_dictzSelectiveBuildOperator.to_dict|   sG     $ 5 5$($=$=%)%?%?"

 ' $ 0 0C
r+   N)r&   r   r'   dict[str, object]returnr   )r	   r   r3   r   )r3   r2   )__name__
__module____qualname____annotations__staticmethodr*   r-   r1    r+   r   r   r      s}     I     ('9
9
09
	9
 9
v 	
	
		
 	
	r+   r   c                J    | |y t        t        | xs d|xs dz               S )Nr9   )r%   r   lhsrhss     r   merge_debug_infor>      s-    
 {s{ciRCI2./00r+   c           
        t        | j                        t        |j                        k7  r8t        dt        | j                         dt        |j                         d      t        | j                  | j                  xs |j                  | j
                  xs |j
                  | j                  xs |j                  t        | j                  |j                              S )Nz8Expected both arguments to have the same name, but got 'z' and 'z	' insteadr   )	r   r	   r   r   r   r   r   r>   r   r;   s     r   combine_operatorsr@      s     388}CHH%Fs388}oU\]`adaiai]j\kktu
 	
 "XX --E1E1E !55Q9Q9Q!77T3;T;T$S__cooF r+   c                    i }t        | j                               t        |j                               z   D ]  \  }}|}||v rt        ||   |      }|||<   ! |S r   )r$   itemsr@   )r<   r=   	operatorsr&   opnew_ops         r   merge_operator_dictsrF      sg     46ICIIK(4		+<< $i&y'92>F#	'$ r+   c                .    | j                  dd      d   S )N.   )maxsplitr   )split)r&   s    r   strip_operator_overload_namerL      s    ==q=)!,,r+   N)r<   r   r=   r   r3   r   )r<   r   r=   r   r3   r   )r<   !dict[str, SelectiveBuildOperator]r=   rM   r3   rM   )r&   r   r3   r   )	
__future__r   dataclassesr   r   r>   r@   rF   rL   r9   r+   r   <module>rP      s    " ! $x x xv1	1	1 1	&<.	*	* '-r+   