
    BVhD                         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	Z	 	 	 	 dd
Z	 	 	 ddZ G d dej                        Z G d dej                        Zy)z,The implementation of `tf.data.Dataset.map`.    N)dataset_ops)
debug_mode)structured_function)dtypes)ops)gen_dataset_opsc           	          |t         j                  rA|%t         j                  st        j                  d       t	        | |d|d|      S ||      S |rt        d|      t        | |||d||      S ) See `Dataset.map()` for details.aThe `deterministic` argument has no effect unless the `num_parallel_calls` argument is specified.TF)preserve_cardinalityforce_synchronousname^`synchronous` is not supported with `num_parallel_calls`, but `num_parallel_calls` was set to )num_parallel_callsdeterministicr   use_unbounded_threadpoolr   )r   
DEBUG_MODEwarningswarn_MapDataset
ValueError_ParallelMapDataset)input_datasetmap_funcr   r   synchronousr   r   s          Q/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/data/ops/map_op.py_map_v2r      s     :#8#8 )>)>mm8 !#.#6%  =H  .
 
 -#!!9     c           
          |t         j                  r/t        j                  t	        | |d|d            S |            S |rt        d|      t        j                  t        | |||dd            S )r
   F)r   r   r   )r   r   )r   r   r   DatasetV1Adapterr   r   r   )r   r   r   r   r   r   s         r   _map_v1r!   C   s     :#8#8''!&'2':e		
 
 AL		
  .
 
 ''!&%*	,- -r   c                     |:|t        j                  d       t        j                  t	        | ||dd            S |rt        d|      t        j                  t        | |||ddd            S )r
   r   FT)r   r   use_legacy_functionr   )r   r#   r   )r   r   r   r    r   r   r   )r   r   r   r   r   s        r   _map_v1_with_legacy_functionr$   f   s      mm B C'')!& $	
  .
 
 ''!& $%*	,- -r   c                   J     e Zd ZdZ	 	 	 	 	 d fd	Zd Zed        Zd Z xZ	S )r   z<A `Dataset` that maps a function over elements in its input.c                    || _         || _        || _        t        j                  || j                         ||      | _        || _        || _        t        j                  |j                  | j                  j                  j                  f| j                  j                  | j                  | j                  | j                  d| j                  }t        	| A  ||       y )Ndatasetr#   )fuse_inter_op_parallelismr   r   )_input_dataset_use_inter_op_parallelism_preserve_cardinalityr   StructuredFunctionWrapper_transformation_name	_map_func_force_synchronous_namer   map_dataset_variant_tensorfunctioncaptured_inputs_common_argssuper__init__)
selfr   r   r   r*   r   r#   r   variant_tensor	__class__s
            r   r9   z_MapDataset.__init__   s     (D%=D"!5D(BB!!#/	1DN
 0DDJ$00%%// ..
!
!!%!?!?!7711 

N 
G]N3r   c                     | j                   gS Nr0   r:   s    r   
_functionsz_MapDataset._functions       NNr   c                 .    | j                   j                  S r>   r0   output_structurer@   s    r   element_specz_MapDataset.element_spec       >>***r   c                      yNzDataset.map() r@   s    r   r/   z _MapDataset._transformation_name       r   )FTTFN
__name__
__module____qualname____doc__r9   rA   propertyrF   r/   __classcell__r<   s   @r   r   r      s:    D #4> + +r   r   c                   J     e Zd ZdZ	 	 	 	 	 d fd	Zd Zed        Zd Z xZ	S )r   zHA `Dataset` that maps a function over elements in its input in parallel.c
           
      |   || _         || _        t        j                  || j	                         ||      | _        |d| _        n|rd| _        nd| _        || _        t        j                  |t        j                  d      | _        || _        |	| _        t        j                   |j"                  | j
                  j$                  j&                  f| j
                  j$                  | j                  | j                  | j                  | j                  | j                  d| j(                  }
t*        | Y  ||
       y)	r
   r'   Ndefaulttruefalser   )dtyper   )r)   r   r   r*   r   r   )r+   r,   r   r.   r/   r0   _deterministicr-   r   convert_to_tensorr   int64_num_parallel_calls_use_unbounded_threadpoolr2   r   parallel_map_dataset_v2r4   r5   r6   r7   r8   r9   )r:   r   r   r   r   r*   r   r#   r   r   r;   r<   s              r   r9   z_ParallelMapDataset.__init__   s$    (D%=D"(BB!!#/	1DN
 %d	"d#d!5D"44&,,5I KD%=D"DJ$<<%%//	 ..
!
!33))!%!?!?!77!%!?!?	 

	N 
G]N3r   c                     | j                   gS r>   r?   r@   s    r   rA   z_ParallelMapDataset._functions   rB   r   c                 .    | j                   j                  S r>   rD   r@   s    r   rF   z _ParallelMapDataset.element_spec   rG   r   c                      yrI   rJ   r@   s    r   r/   z(_ParallelMapDataset._transformation_name   rK   r   )TFFFNrL   rS   s   @r   r   r      s;    P )-$)#((-'4R + +r   r   )NNNNN)NNNN)NNF)rP   r   tensorflow.python.data.opsr   r   r   tensorflow.python.frameworkr   r   tensorflow.python.opsr   r   r!   r$   UnaryDatasetr   r   rJ   r   r   <module>rg      s    3  2 1 : . + 1 !	%V ! -L $-N*+** *Z4+22 4r   