
    BVhA                        d Z ddlZ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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
mZ ddl
mZ ddl
mZ  e       Z ej(                         Z ej(                         Z ej(                         Z ej(                         Z ej(                         Z ej(                         Z ej(                         Z ej(                         Z ej(                         Z ej(                         Z ej(                         Zd Z d Z!dCdZ"d Z#d Z$d Z%d Z&d Z'd Z(d Z)dDdZ*d Z+d Z,defdZ-d Z.d Z/d  Z0d! Z1d" Z2d# Z3d$ Z4d% Z5d& Z6d' Z7d( Z8d) Z9d* Z:d+ Z;d, Z<eefd-Z=d. Z>d/ Z?dDd0Z@dDd1ZAd2d3d4ZBd2d3d5ZCd6 ZDd7 ZEefd8ZFefd9ZGd: ZHd; ZId< ZJd= ZKd> ZLd? ZMeefd@ZNdA ZOePeQeReSeTeUeVeWeXeYeZe[e\fZ]e'eJeLe@eHe*e-e0eDeFe5e=eNeBdBZ^y)EzOperators corresponding to Python builtin functions.

List of built-in functions: https://docs.python.org/3/library/functions.html
    N)tensors)type_registry)constant_op)dtypes)ops)tensor_util)	array_ops)cond)control_flow_assert)gen_parsing_ops)gen_string_ops)list_ops)math_opsc                 D    	 | j                  |      S # t        $ r Y y w xY wN)lookupLookupError)regobjs     a/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/autograph/operators/py_builtins.pyregistry_lookupr   4   s*    	::c?	 			s    	c                 <    | t         v rt        | j                     S | S r   )SUPPORTED_BUILTINSBUILTIN_FUNCTIONS_MAP__name__)fs    r   overload_ofr   <   s    
 ,,	
(    c                     t        j                         }d}|<|j                  j                  | j                  d      | u r|}|rn|j
                  }|<|J d       |S )z9Locates the frame in which `caller_fn_scope` was defined.Nzdthe conversion process should ensure the caller_fn_scope is always found somewhere on the call stack)inspectcurrentframef_localsgetnamef_back)caller_fn_scope	innermost	ctx_frameresults       r   _find_originating_framer*   B   s}    ""$)& o22D9_Lf	  I 	 
	 ,+,	 
-r   c                 0    t        | d      j                  S zDExecutes the locals function in the context of a specified function.Tr'   )r*   r"   r&   s    r   locals_in_original_contextr/   W   s    	 D	A	J	JJr   c                 0    t        | d      j                  S r,   )r*   	f_globalsr.   s    r   globals_in_original_contextr2   \   s    	 D	A	K	KKr   c                     t        |d      }|d   t        |      dk  r|j                  n|d   t        |      dk  r|j                  n|d   f} | | S )zBExecutes the eval function in the context of a specified function.Tr-   r            )r*   lenr1   r"   )r   argsr&   r(   s       r   eval_in_original_contextr9   a   s]    
 &oF) 1g Y]iQIMitAw
$
 
D/r   c                     |r | | S t        |d      }|j                  d   }|j                  j                  d   }|j                  |   } | ||      S )a  Executes the super function in the context of a specified function.

  See https://docs.python.org/3/library/functions.html#super for the exact
  details

  Args:
    f: Callable, typically the super builtin
    args: List[Any], the original call arguments
    caller_fn_scope: Optional[function_wrappers.FunctionScope], the function
      scope of the converted function in which this call was originally made

  Returns:
    The result of calling `f` as if it was called in the frame indicated by
      `caller_fn_scope`.
  Fr-   	__class__r   )r*   r"   f_codeco_varnames)r   r8   r&   r(   type_argself_arg_nameself_args          r   super_in_original_contextrA   p   sc    $ 
d8O &oG): ,(""..q1-.(	
8X	r   c                     t        t        |       }| ||       S t        j                  |       rt	        |       S t        |       S r   )r   abs_registryr   
is_tf_type_tf_abs_py_abs)xabs_overrides     r   abs_rI      s@     q1,?A1:	r   c                 ,    t        j                  |       S r   )r   absrG   s    r   rE   rE      s    	ar   c                     t        |       S r   )rK   rL   s    r   rF   rF          	Q-r   c                 X    t        j                  |       rt        |       S t        |       S r   )r   rD   	_tf_float	_py_floatrL   s    r   float_rR      s$    AQ<	1r   c                     | j                   t        j                  k(  r%t        j                  | t        j
                        S t        j                  | t        j
                        S )Nout_typedtype)rW   r   stringr   string_to_numberfloat32r   castrL   s    r   rP   rP      s>    WW++AGG	q	//r   c                     t        |       S r   )floatrL   s    r   rQ   rQ      s    	q/r   c                 \    t        j                  |       rt        | |      S t        | |      S r   )r   rD   _tf_int_py_intrG   bases     r   int_rc      s*    A1d	D	r   c                    |dt         fvrt        dj                  |            | j                  t        j
                  k(  r%t        j                  | t        j                        S t        j                  | t        j                        S )N
   zbase {} not supported for intrT   rV   )UNSPECIFIEDNotImplementedErrorformatrW   r   rX   r   rY   int32r   r[   ra   s     r   r_   r_      sd    	"k""
=DDTJ
KK WW++AEE	q	--r   c                 @    |t         u rt        |       S t        | |      S r   )rf   intra   s     r   r`   r`      s    	[q6M	Qr   c                    t        t        |       }| ||       S t        j                  |       rt	        |       S t        j
                  |       rt        |       S t        j                  |       rt        |       S t        |       S r   )r   len_registryr   is_tensor_array_tf_tensor_array_lenis_tensor_list_tf_tensor_list_lenr   rD   _tf_tensor_len_py_len)slen_overrides     r   len_rv      ss     q1,?Q""a q!!a !	r   c                 "    | j                         S r   )sizert   s    r   ro   ro      s    	
/r   c                 ,    t        j                  |       S r   )r   tensor_list_lengthry   s    r   rq   rq      s    		$	$Q	''r   c                 h     j                   j                  rF j                   j                  d   j                  # j                   j                  d   j                  S t	        j                          }|j                   sJ dj                  |             |j                   d   dk(  rt        dj                  |            |j                   j                  d   j                  t	        j                          d   S t	        j                         fd}t        j                  dkD   fd|      S )z&Overload of len_ for Tensor arguments.r   zshape tensor of zero size? {}z5len requires a non-scalar tensor, got one of shape {}c                  $   t        j                  dt        j                        g      } t        j                  t        j                  d| g      g      5  t        j                  dt        j                        cd d d        S # 1 sw Y   y xY w)Nz len requires non-zero rank, got Fr   rV   )r   string_join	as_stringr   control_dependenciesr   Assertr   constantr   ri   )msgranks    r   raise_zero_rank_errorz-_tf_tensor_len.<locals>.raise_zero_rank_error  su    

$
$	+		!	!$	'	)*C 
	!	!#6#=#=ecU#K"L	M 9!!!6<<89 9 9s   %BBc                  4    t        j                         d   S )Nr   )r	   shapery   s   r   <lambda>z _tf_tensor_len.<locals>.<lambda>  s    Y__Q%7%: r   )	r   ndimsdimsvaluer	   rh   
ValueErrorr   r
   )rt   r   r   r   s   `  @r   rr   rr      s     WW]]qww||A,,877<<?    //!
%	C5<<UCC
[[^q
?FFuMO O [[a*??1a   
	$9 
4!8:(
* *r   c                     t        |       S r   )r7   ry   s    r   rs   rs     rN   r   c                  $   t        t        |j                               t        d      z
        }|rt        dj	                  |            t
        }| D ]  }t        t        |      }||} n |t
        u rt        d | D              rJ  || i |S )zOverload of the print builtin.)sependfileflushzinvalid keyword arguments: {}c              3   F   K   | ]  }t        j                  |        y wr   r   rD   .0rt   s     r   	<genexpr>zprint_.<locals>.<genexpr>-  s     >;))!,>   !)	tuplesetkeysr   rh   	_py_printr   print_registryany)objectskwargsunknown_kwargsprint_fnrG   print_overrides         r   print_r     s     	&++-3>??A.
4;;NK
LL( a$^Q7N!h	 >g>>>>	7	%f	%%r   c                      t        | i | y r   )print)r   r   s     r   r   r   2  s    Fr   c                  R    t        d | D              rt        | i |S t        | i |S )Nc              3   F   K   | ]  }t        j                  |        y wr   r   r   s     r   r   zmin_.<locals>.<genexpr>7       1q			"1r   )r   _tf_min_py_minr8   r   s     r   min_r   6  0    1D11D#F##	$	!&	!!r   c                      t        |      r<t        t        |j                                     }t	        dj                  |            t        |       dk(  rW| d   j                  j                  }|dk(  r| d   S |dk(  rt        j                  | ddiS t	        dj                  |            | D ]7  }|j                  j                  }|dk7  st	        dj                  |             t        j                  | d      S )N7These keyword arguments are currently not supported: {}r5   r   axiszQmin(arg) currently support only tensor with rank 1, but got a tensor with rank {}z[min(arg1, arg2, *args) currently support only scalar tensor, but got a tensor with shape {}r   )
r7   r   r   r   r   rh   r   r   r   
reduce_minr8   r   kwargs_tupler   args        r   r   r   <      [V[[]+,L
 3396,3GI IY!^7==Dqy!Wnqy  $/Q//
 55;VD\C C 5c99>>Dqy ''-vd|5 55 
		T	**r   c                      t        | i |S r   )minr   s     r   r   r   R      	d	f	r   c                  R    t        d | D              rt        | i |S t        | i |S )Nc              3   F   K   | ]  }t        j                  |        y wr   r   r   s     r   r   zmax_.<locals>.<genexpr>W  r   r   )r   _tf_max_py_maxr   s     r   max_r   V  r   r   c                      t        |      r<t        t        |j                                     }t	        dj                  |            t        |       dk(  rW| d   j                  j                  }|dk(  r| d   S |dk(  rt        j                  | ddiS t	        dj                  |            | D ]7  }|j                  j                  }|dk7  st	        dj                  |             t        j                  | d      S )Nr   r5   r   r   zQmax(arg) currently support only tensor with rank 1, but got a tensor with rank {}z[max(arg1, arg2, *args) currently support only scalar tensor, but got a tensor with shape {}r   )
r7   r   r   r   r   rh   r   r   r   
reduce_maxr   s        r   r   r   \  r   r   c                      t        | i |S r   )maxr   s     r   r   r   r  r   r   c                 `    t        d | ||fD              rt        | ||      S t        | ||      S )Nc              3   F   K   | ]  }t        j                  |        y wr   r   r   s     r   r   zrange_.<locals>.<genexpr>w  s     Hq			"Hr   )r   	_tf_range	_py_rangestart_or_stopstopsteps      r   range_r   v  s5    H]D$,GHH]D$//	=$	--r   c                     |t         urt        j                  | ||      S |t         ur,t        j                  | |      }t        j                  | |      S t        j                  | d      } t        j                  |       S )z4Overload of range_ that generates a TF range tensor.r   )rf   r   rangemaximumr   s      r   r   r   |  sk     
>>-t44	M40D>>-..""=!4-		&&r   c                 j    |t         urt        | ||      S |t         urt        | |      S t        |       S r   )rf   r   r   s      r   r   r     s9    	d++	%%	}	r   c                 P    t        t        |       }|	 || |      S t        | |      S r   )r   enumerate_registry_py_enumerate)rt   startenumerate_overrides      r   
enumerate_r     s0    &'91=#a''	q%	  r   c                     t        | |      S r   )	enumerate)rt   r   s     r   r   r     s    	1e	r   F)strictc                     t         }|D ],  }t        t        |      }||t         k7  r||k7  rt         } n|}.  ||d| iS )Nr   )_py_zipr   zip_registry)r   	iterableszip_fnrG   zip_overrides        r   zip_r     sU    & a"<3L' 1lf6LfF 
	*6	**r   c                 ,    | rt        |ddiS t        | S )Nr   T)zip)r   r   s     r   r   r     s!    	'$'' 	?r   c                     t         }|D ],  }t        t        |      }||t         k7  r||k7  rt         } n|}.  || g| S r   )_py_mapr   map_registry)fnr   map_fnrG   map_overrides        r   map_r     sU    & a"<3L' 1lf6LfF 
	Y	r   c                     t        | g| S r   )map)r   r   s     r   r   r     s    	R	)	r   c                 P    t        t        |       }|	 || |      S t        | |      S r   )r   next_registrynext_py)iteratordefaultnext_overrides      r   next_r     s.    !-:-7++	7	##r   c                 @    |t         u rt        |       S t        | |      S r   )rf   next)r   r   s     r   r   r     s!    >	h	  r   c                 P    t        t        |      }|	 || |      S t        | |      S r   )r   filter_registry
_py_filter)functioniterablefilter_overrides      r   filter_r     s.    #OX>/ 8X..	Hh	''r   c                     t        | |      S r   )filter)r   r   s     r   r   r     s    	(	##r   c                 L    t        t        |       }| ||       S t        |       S r   )r   any_registry_py_any)r   any_overrides     r   any_r    *     x8,!!		r   c                     t        |       S r   )r   r   s    r   r   r         	Xr   c                 L    t        t        |       }| ||       S t        |       S r   )r   all_registry_py_all)r   all_overrides     r   all_r    r  r   c                     t        |       S r   )allr  s    r   r	  r	    r  r   c                 T    t        t        |       }|
 || ||      S t        | ||      S r   )r   sorted_registry
_py_sorted)r   keyreversesorted_overrides       r   sorted_r    s2    #OX>/ 8S'22	Hc7	++r   c                     |t         ur|t         u rt        | |      S |t         u r|t         urt        | |      S |t         ur|t         urt        | ||      S t        |       S )N)r  )r  )r  r  )rf   sorted)r   r  r  s      r   r  r    sc    ; 6($$KG;6(G,,{ :(W55		r   )rK   r   r  r   r   r]   rk   r7   r   r   r   r   r  r   )T)r   )___doc__r    !tensorflow.python.autograph.utilsr   r   tensorflow.python.frameworkr   r   r   r   tensorflow.python.opsr	   r
   r   r   r   r   r   objectrf   TypeRegistryrC   rm   r   r   r   r   r   r   r  r  r   r   r   r*   r/   r2   r9   rA   rI   rE   rF   rR   rP   rQ   rc   r_   r`   rv   ro   rq   rr   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r	  r  r  rK   r]   rk   r7   r   r   r   r   r   r   r   r  r  r   r    r   r   <module>r     sg  
  5 ; 3 . + 3 + & 5 1 0 * * h)}))+)}))++++-/]//1 )}))+)}))+,-,,.)}))+)}))+,-,,.***,*K
L
7t0 ; .
(*B&,"+,"+,  + .'"! " 	+  % 	  ( $ * !($ &{ , 5#sE5)S#c30   r   