
    AVh                        d 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	j                  ej                        d        Zd Zej"                  ej$                  ej&                  ej(                  ej*                  ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  ej8                  gZddZd ZddZ y)z$Operator dispatch for RaggedTensors.    )logging_ops)math_ops)
string_ops)ragged_tensor)ragged_tensor_shape)dispatch)tf_decorator)	tf_export)
tf_inspectc                 n    t        j                  |      }|j                   | |j                              S )z0Unary elementwise api handler for RaggedTensors.)r   "convert_to_tensor_or_ragged_tensorwith_valuesvalues)opxs     \/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/ops/ragged/ragged_dispatch.pyragged_unary_elementwise_opr      s+     66q9!	
r!((|	$$    c                    t        j                  |      }t        j                  |      }t        j                  ||r|j                  nd      }t        j                  ||j                        }|r|rt        j                  ||      \  }}|r|sr|r7|j
                  j                  j                  |j                  j                  k  s9|r|j
                  j                  j                  |j                  j                  k  r|r|j                  j                  }n|j                  j                  }t        j                  j                  ||      }t        j                  j                  ||      }t        j                  ||      }t        j                  ||d      }t        j                  ||d      }t        j                  |      r|j
                  n|}	t        j                  |      r|j
                  n|}
 | |	|
      }t        |t              r|S t        j                  |      r|j!                  |      S |j!                  |      S )z1Binary elementwise api handler for RaggedTensors.N)preferred_dtype)dim_size_dtypeF)broadcast_inner_dimensions)r   	is_raggedr   dtypematch_row_splits_dtypesflat_valuesshapendims
row_splitsr   RaggedTensorDynamicShapefrom_tensorbroadcast_dynamic_shapebroadcast_to
isinstanceboolwith_flat_values)r   r   yx_is_raggedy_is_raggedr   shape_xshape_ybcast_shapex_valuesy_valuesmapped_valuess               r   ragged_binary_elementwise_opr0   $   s   ''*+''*+ 66[!''d=!66"! [00A6DAq {q}}**00AGGMMAq}}**00AGGMMA||))n||))n!::FF	. G *G!::FF	. G *G%==gwOK((	;5	:A((	;5	:A ,55a8Q]]a(+55a8Q]]a(Xx(-t$Qm,,m,,r   c                    t        j                  |       }t        j                  |       }|j                  }|D ]  }d||   z   dz   ||<    |j
                  Rt        dt        |j
                         dz
  d      D ]+  }||xx   dj                  |j
                  |         z  cc<   - |j                  rB|r"|j                  d|j                  z   dz          n|j                  d|j                  z          |j                  r|j                  d|j                  z          dj                  |dj                  |            S )	zBReturns a signature for the given op, marking ragged args in bold.z**   z=`{!r}`z****z* `tf.{}`({})z, )r
   get_canonical_name_for_symbolr   getfullargspecargsdefaultsrangelenformatvarargsappendvarkwjoin)r   ragged_argsragged_varargsop_nameargspec	arg_namesposs          r   _ragged_op_signaturerF   i   s+   33B7'%%b)'ll)  2cIcN*T1IcN2 !R#g..//!3R8 @n	(()9)9#)>??n@ __uw.56sW__,-]]TGMM)*			9)=	>>r   c                     |dk(  r5t        j                  t        j                  |       d         xs | t        v S |dk(  r+t        j
                  t        j                  |       d         S t        d      )Nr3      zExpected version 1 or 2.)r
   get_v1_namesr	   unwrap)_V2_OPS_THAT_ARE_DELEGATED_TO_FROM_V1_OPSget_v2_names
ValueError)r   versions     r   _op_is_in_tf_versionrO      sn    \""<#6#6r#:1#=> <;;=!|!!,"5"5b"9!"<==
/
00r   c           	      4   g }t        j                  t        j                        }|j	                         D ]  \  }}t        j                  |      j                  }t               }|D ];  }|D ]4  }|j                  t        |t              r|n|j                  |             6 = t        ||       s||j                  t        ||              |j                  t        t         j"                  g d             ddj%                  t'        |            z   dz   S )zDReturns a string listing operations that have dispathers registered.T)rA   zq

### Additional ops that support `RaggedTensor`

Arguments that accept `RaggedTensor`s are marked in **bold**.


n)r   "type_based_dispatch_signatures_forr   RaggedTensoritemsr   
getargspecr7   setaddr$   intindexrO   r=   rF   r   print_v2r?   sorted)	
tf_versionlinesapi_signaturesapi
signaturesrD   r@   	signatureargs	            r   ragged_op_listrd      s   
%>>  ".'--/ ;oc:%%c*//I%K O	 O#z#s39MNOO C,ll'[9:; ,,;//DIKN
))F5M
"#%() *r   N)F)rH   )!__doc__tensorflow.python.opsr   r   r   tensorflow.python.ops.raggedr   r   tensorflow.python.utilr   r	   r
   r   #dispatch_for_unary_elementwise_apisRaggedr   r0   
reduce_sumreduce_prod
reduce_min
reduce_maxreduce_meanreduce_variance
reduce_std
reduce_any
reduce_allstring_to_numberstring_to_hash_bucketreduce_join_v2rK   rF   rO   rd    r   r   <module>rx      s    + - * , 6 < + / , - .--m.B.BC% D%*-l $$- ) ?61*r   