
    BVh"                         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 ddlmZ ddlmZ ddlmZ ddlmZ d Zd Zd Zd ZddZdddZd Zd Zd Zd Zd Zy)z,Autograph specifc overrides for dataset_ops.    )control_flow)py_builtins)take_while_ops)dataset_ops)constant_op)dtypes)ops)	array_ops)cond)control_flow_assert)gen_string_ops)math_ops)nestc                 8    ddl m} |j                  | ||d      S )zFVariant of Dataset.scan with semantics of general-purpose computation.r   )scan_opF)use_default_device)tensorflow.python.data.opsr   _ScanDataset)ds
init_statebodyr   s       \/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/data/ops/dataset_autograph.py_general_purpose_scanr      s!     1			b*du		MM    c                 R           t        j                         s#t        j                  d      fdd }d }||cfd}	d }
d }t	        | |	      } $| j                  t        j                  |
            } | j                  |      } |       y)	z@Overload of _dataset_for_stmt with early stopping. See for_stmt.r   )z<internal dummy>c                      y N )unused_dummys    r   dummy_set_statez0_tf_ag_dataset_for_stmt.<locals>.dummy_set_stateH   s    
r   c                  .    t        j                  d      fS )Nr   )r   constantr   r   r   dummy_get_statez0_tf_ag_dataset_for_stmt.<locals>.dummy_get_stateK   s    ""1%''r   c                     | |c        	fd}
" 
       }t        j                   ||fd      }nt        j                  d      f} |       }||f}|}||fS )zMain body of the Dataset.scan.c                  \                    } t        j                  | d       | S )NF)check_shapes)r   verify_tf_loop_vars)new_loop_varsr   	get_state	init_varsiterate	loop_varsoptssymbol_namess    r   	main_pathz=_tf_ag_dataset_for_stmt.<locals>.scan_body.<locals>.main_pathU   s9    
7mkm&&




 r   c                       S r   r   )r,   s   r   <lambda>z<_tf_ag_dataset_for_stmt.<locals>.scan_body.<locals>.<lambda>d   s    	 r   T)r   r   r"   )
scan_statescan_inputsr/   
extra_condr(   scan_outputsnew_scan_stater+   r,   r   
extra_testr)   r*   r-   	set_stater.   s          @@r   	scan_bodyz*_tf_ag_dataset_for_stmt.<locals>.scan_bodyP   s{    #[Iwi
 
 <jii
I 13m  ((.0jkm *,L"N<''r   c                     |S r   r   )unused_loop_varsr4   s     r   take_while_predicatez5_tf_ag_dataset_for_stmt.<locals>.take_while_predicaten   s    r   c                     |\  }}|}|S r   r   )unused_reduce_stater5   output_loop_varsunused_extra_condnew_reduce_states        r   reduce_bodyz,_tf_ag_dataset_for_stmt.<locals>.reduce_bodyq   s    *6'''r   N)	r   verify_loop_init_varsr   r"   r   applyr   
take_whilereduce)r   r7   r   r)   r8   r.   r-   r    r#   r9   r<   rB   final_loop_varsr*   s    ``````      @r   _tf_ag_dataset_for_stmtrH   1   s     k)$$Y=
 
%%a(*I(L( +OIy( (<
 RI6"	.++,@A	BBIIi5/Or   c                     t        j                  | j                        }t        |      dk(  r/| j	                  t
        j                  t        j                        S | j	                  d t        j                        S )N   )num_parallel_callsc                  J    t        j                  t        j                  |       S r   )r   map_structurer   abs)es    r   r1   z$_tf_ag_dataset_abs.<locals>.<lambda>   s    ##HLL!4 r   )	r   flattenelement_speclenmapr   rN   r   AUTOTUNE)r   specss     r   _tf_ag_dataset_absrV   }   s^    
,,r
'%Z1_66(,,;3G3G6HH	4$-- 
 
/ /r   c                    | j                         }t        j                  dt        j                  |      g      }t	        j
                  t        j                  t        j                  t        j                  |t        j                        t        j                  |t        j                              |g      g      5  t        j                  |      }ddd       |S # 1 sw Y   |S xY w)z@Autograph override of the builtin len for dataset_ops.DataSetV2.z6len requires dataset with definitive cardinality, got N)cardinalityr   string_join	as_stringr	   control_dependenciesr   Assertr   logical_and	not_equalr   INFINITEUNKNOWNr
   identity)slmsgs      r   _tf_ag_dataset_lenre      s    mmo!"">q!$ 	#   


  K$8$89  K$7$78:<?5B!   	1A 
( 
(s   >CC(c                 $    | j                  |      S r   )	enumerate)r   starts     r   _tf_ag_dataset_enumerateri      s    	e	r   F)strictc                 Z    | rt        d      t        j                  j                  |      S )Nz#strict zip not supported by Dataset)
ValueErrorr   	DatasetV2zip)rj   	iterabless     r   _tf_ag_dataset_ziprp      s(    
:
;;				"	"9	--r   c                 ^    t         j                  j                  |      j                  |       S r   )r   rm   rn   rS   )fnro   s     r   _tf_ag_dataset_maprs      s$    				"	"9	-	1	1"	55r   c                 $    |j                  |       S r   )filter)rr   iterables     r   _tf_ag_dataset_filterrw      s    		r   c                    t        j                  | j                        }t        |      dk7  s |d   j                  t
        j                  k7  r$t        dj                  | j                              | j                  d       }|j                  d      }|j                  t        j                  dt
        j                        d       }|S )NrJ   r   zYin graph mode, the "any" builtin only supports datasets that return bool scalars; got: {}c                     | S r   r   )xs    r   r1   z$_tf_ag_dataset_any.<locals>.<lambda>   s     r   Fdtypec                     |S r   r   _ys     r   r1   z$_tf_ag_dataset_any.<locals>.<lambda>   s    a r   )r   rP   rQ   rR   r|   r   boolrl   formatru   takerF   r   r"   rv   rU   r   s      r   _tf_ag_dataset_anyr      s     ,,x,,
-%Z1_a&++5
 99?!..:01 1 {#"	wwqz"	yy%%e6;;?P"	)r   c                    t        j                  | j                        }t        |      dk7  s |d   j                  t
        j                  k7  r$t        dj                  | j                              | j                  t        j                        }|j                  d      }|j                  t        j                  dt
        j                        d       }|S )NrJ   r   zYin graph mode, the "all" builtin only supports datasets that return bool scalars; got: {}Tr{   c                     |S r   r   r~   s     r   r1   z$_tf_ag_dataset_all.<locals>.<lambda>   s    Q r   )r   rP   rQ   rR   r|   r   r   rl   r   ru   r   logical_notr   rF   r   r"   r   s      r   _tf_ag_dataset_allr      s     ,,x,,
-%Z1_a&++5
 99?!..:01 1 x++,"	wwqz"	yy%%d&++>O"	)r   c                     t         j                  j                  t        j                  t
               t        j                  j                  t        j                  t               t        j                  j                  t        j                  t               t        j                  j                  t        j                  t               t        j                  j                  t        j                  t               t        j                  j                  t        j                  t                t        j"                  j                  t        j                  t$               t        j&                  j                  t        j                  t(               t        j*                  j                  t        j                  t,               y)z;Registers the autograph specific overrides for dataset_ops.N)r   for_loop_registryregisterr   rm   rH   r   abs_registryrV   len_registryre   enumerate_registryri   zip_registryrp   map_registryrs   filter_registryrw   any_registryr   all_registryr   r   r   r   register_overridesr      s     ))4 ##K$9$9;MN##K$9$9;MN  ))5 ##K$9$9;MN##K$9$9;MN&&2 ##K$9$9;MN##K$9$9;MNr   N)r   )__doc__%tensorflow.python.autograph.operatorsr   r   'tensorflow.python.data.experimental.opsr   r   r   tensorflow.python.frameworkr   r   r	   tensorflow.python.opsr
   r   r   r   r   tensorflow.python.utilr   r   rH   rV   re   ri   rp   rs   rw   r   r   r   r   r   r   <module>r      sq    3 > = B 2 3 . + + & 5 0 * 'N$IX/* +0 .6 Or   