
    Vh[                     j   d Z ddlZddlmZmZ ddlmZ ddlm	Z	m
Z
mZ ddlZddlmZ erdd	lmZmZmZmZmZmZmZ dd
lmZ  G d de      Zd+dZd Zd Zd Zde
e	e	gef   dee	   dee	   fdZd Zd Zd Z d Z!d Z"d Z#d,dZ$d Z%d Z&d Z'd Z(d  Z)d! Z*d"e	d#efd$Z+d% Z,d& Z-d' Z.d( Z/d) Z0d* Z1y)-z'
Python polyfills for common builtins.
    N)MutableMappingSequence)repeat)AnyCallableTYPE_CHECKING   )	dict_keys   )builtins	functools	itertoolsoperatorospytreesys)BaseTorchFunctionModec                       e Zd Zd Zy)NoEnterTorchFunctionModec                      y N )selfs    P/home/dcms/DCMS/lib/python3.12/site-packages/torch/_dynamo/polyfills/__init__.py	__enter__z"NoEnterTorchFunctionMode.__enter__4   s        N)__name__
__module____qualname__r   r   r   r   r   r   3   s    r   r   c                     ddl m}  |t        |       ||      D ]  \  }}||k(  s|c S  t        | dt	        |              )Nr   )islicez is not in )r   r!   	enumerate
ValueErrortype)iteratoritemstartendr!   ielems          r   indexr+   8   sO     )H-uc: 44<H v[h(89
::r   c              #   4   K   t        |      D ]  }|   y wr   )range)r&   count_s      r   r   r   B   s     5\ 
s   c                 .    dd l }|j                  dz  | z  S )Nr   g     f@)mathpi)xr1   s     r   radiansr4   G   s    77U?Qr   c                     |y t        j                  |      }| j                  || _        y | j                  j                  |       y r   )torchclonegradadd_)r3   new_grads     r   accumulate_gradr;   M   s9    {{8$Hvv~	Hr   opleftrightc                     t        ||      D ]  \  }}||k7  s | ||      c S   | t        |      t        |            S )zemulate `(1,2,3) > (1,2)` etc)ziplen)r<   r=   r>   abs        r   list_cmprD   Y   sG     D%  16a8O
 c$iU$$r   c                     | D ]  }||v s y y)NFTr   set1set2r3   s      r   set_isdisjointrI   d   s      9 r   c                 T    t               }| D ]  }||v s|j                  |        |S r   setadd)rG   rH   intersection_setr3   s       r   set_intersectionrO   k   s6    u $9  #$ r   c                 >    | j                         }t        ||       |S r   )copy
set_update)rG   rH   	union_sets      r   	set_unionrT   s   s    		Iy$r   c                 @    |D ]  }|| vs| j                  |        | S r   )rM   rF   s      r   rR   rR   y   s*     D=HHQK Kr   c                 T    t               }| D ]  }||vs|j                  |        |S r   rK   )rG   rH   difference_setr3   s       r   set_differencerX      s5    UN "D=q!" r   c                  D    | d   }| d   }t        ||      } || dd  i |S )Nr   r   r	   )getattr)argskwargswrapper_obj	attr_namefns        r   getattr_and_tracer`      s6    q'KQI	i	(BtABx"6""r   c                 H    	 | j                  |      S # t        $ r |cY S w xY wr   )__getitem__KeyError)objkeyvalues      r   mapping_getrg      s*    s## s    !!c                n     | j                   | g|i |}t        ||       r |j                  |i | |S r   )__new__
isinstance__init__)clsr[   r\   rd   s       r   %instantiate_user_defined_class_objectrm      s@    
#++c
+D
+F
+C #sd%f%Jr   c                    | j                  |       }|r:|d   }t        |t        t        f      r|D ]
  }||   ||<    n|D ]
  \  }}|||<    |r|D ]
  }||   ||<    |S )Nr   )ri   rj   dictr   )rl   r[   r\   dstsrcre   rf   s          r   construct_dictrr      s    
++c
C1g cD.12 $s8C$
 " !
U C!  	#Cc{CH	# Jr   c                     | d   }g }d}| dd  D ]F  }t        |t        t        f      s|j                  t	        |             4d}|j                  |       H |s || dd   S g }t        | D ]  }|j                   ||         |S )Nr   Fr   T)rj   listtupleappend_repeatr@   )r[   r<   new_argsat_least_one_listargoutunpackeds          r   foreach_map_fnr}      s    	aBHABx !#e}-OOGCL) $OOC ! 48}
CN "

2x=!" Jr   c                     t        j                  ||       }t        j                  ||      }t        j                  | |      S r   )r6   _foreach_sub_foreach_mul_foreach_add_)r   r(   weightresults       r   foreach_lerp_inplacer      s;     T*F/FtV,,r   c                 T    t        j                  |D cg c]  }|  c}|      S c c}w r   )r6   _foreach_pow)scalarexpsr/   s      r   foreach_pow_scalarr      s#    t4!v4d;;4s   	%c                 0    | j                  ||z  |z        S r   )r9   )r   tensor1tensor2rf   s       r   addcmul_inplacer      s    99Ww&.//r   rd   returnc                 
    | ryy)NTFr   )rd   s    r   	predicater      s     r   c                 n    | j                  |      }|t        u r|j                  |       }|t        uxr |S r   )__eq__NotImplementedrB   rC   r   s      r   cmp_eqr      s6     XXa[F!'2F2r   c                     t        t        |       j                  t        j                        r| j                  |      S t        | |       S r   )rj   r$   __ne__typesFunctionTyper   rB   rC   s     r   cmp_ner      s7    $q'..%"4"45xx{a|r   c                 f    | j                  |      }|t        u rt        t        |        d      |S )Nz  does not support the < operator)__lt__r   	TypeErrorr$   r   s      r   cmp_ltr      s3    XXa[F47)#CDEEMr   c                     t        t        |       j                  t        j                        r| j                  |      S t        | |      xs t        | |      S r   )rj   r$   __le__r   r   r   r   r   s     r   cmp_ler     ?    $q'..%"4"45xx{!Q<'6!Q<'r   c                     t        t        |       j                  t        j                        r| j                  |      S t        ||       S r   )rj   r$   __gt__r   r   r   r   s     r   cmp_gtr   
  s4    $q'..%"4"45xx{!Q<r   c                     t        t        |       j                  t        j                        r| j                  |      S t        | |      xs t        | |      S r   )rj   r$   __ge__r   r   r   r   r   s     r   cmp_ger     r   r   )r   Nr   )2__doc__r   collections.abcr   r   r   r   rw   typingr   r   r   r6   utilsr
    r   r   r   r   r   r   torch.overridesr   r   r+   r4   r;   boolrD   rI   rO   rT   rR   rX   r`   rg   rm   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s     4 ' / /      2 4 
;
%3*d*+ %8C= %RU %#.,-<03 4 3((r   