
    BVh	                         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 G d
 dej                        Z G d dej                        Zy)z3The implementation of `tf.data.Dataset.interleave`.    N)dataset_ops)
debug_mode)structured_function)dtypes)ops)gen_dataset_opsc           	          |d}|t         j                  }|t        j                  r7|%t        j                  st	        j
                  d       t        | ||||      S t        | ||||||      S )'See `Dataset.interleave()` for details.   zaThe `deterministic` argument has no effect unless the `num_parallel_calls` argument is specified.)name)deterministicr   )r   AUTOTUNEr   
DEBUG_MODEwarningswarn_InterleaveDataset_ParallelInterleaveDataset)input_datasetmap_funccycle_lengthblock_lengthnum_parallel_callsr   r   s          X/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/data/ops/interleave_op.py_interleaver      s     L''L:#8#8 )>)>mm B Cx|$H H &#     c                   B     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 interleaves the result of transformed inputs.c                 @   || _         t        j                  || j                         |      | _        t        | j                  j                  t        j                        s6t        dt        j                  | j                  j                        d      | j                  j                  j                  | _        t        j                  |t        j                   d      | _        t        j                  |t        j                   d      | _        || _        t)        j*                  |j,                  | j                  j.                  j0                  | j"                  | j$                  fd| j                  j.                  i| j2                  }t4        | m  ||       y)	r
   dataset<The `map_func` argument must return a `Dataset` object. Got .r   dtyper   r   fN)_input_datasetr   StructuredFunctionWrapper_transformation_name	_map_func
isinstanceoutput_structurer   DatasetSpec	TypeErrorget_type_element_spec
_structurer   convert_to_tensorr   int64_cycle_length_block_length_namer   interleave_dataset_variant_tensorfunctioncaptured_inputs_common_argssuper__init__)selfr   r   r   r   r   variant_tensor	__class__s          r   r;   z_InterleaveDataset.__init__>   sN    (D(BB$++-}FDNdnn55{7N7NO
H!!$.."A"ABEQHI I nn55CCDO..FLL~?D..FLL~?DDJ$77%%//	
 ..
!
! 

N 
G]N3r   c                     | j                   gS Nr(   r<   s    r   
_functionsz_InterleaveDataset._functions\       NNr   c                     | j                   S r@   r/   rB   s    r   element_specz_InterleaveDataset.element_spec_       ??r   c                      yNzDataset.interleave() rB   s    r   r'   z'_InterleaveDataset._transformation_namec       !r   r@   )
__name__
__module____qualname____doc__r;   rC   propertyrG   r'   __classcell__r>   s   @r   r   r   ;   s.    F 4<  "r   r   c                   p     e Zd ZdZej
                  ej
                  ddf fd	Zd Zed        Z	d Z
 xZS )r   zNA `Dataset` that maps a function over its input and interleaves the result.
  Nc
           	         || _         t        j                  || j                         |      | _        t        | j                  j                  t        j                        s6t        dt        j                  | j                  j                        d      | j                  j                  j                  | _        t        j                  |t        j                   d      | _        t        j                  |t        j                   d      | _        t        j                  |t        j                   d      | _        t        j                  |t        j                   d      | _        t        j                  |t        j                   d	      | _        |d}
n|rd}
nd}
|	| _        t/        j0                  |j2                  | j                  j4                  j6                  | j"                  | j$                  | j&                  | j(                  | j*                  f| j                  j4                  |
d| j8                  }t:        | y  ||       y
)r
   r   r    r!   r   r"   r   buffer_output_elementsprefetch_input_elementsr   Ndefaulttruefalse)r$   r   )r%   r   r&   r'   r(   r)   r*   r   r+   r,   r-   r.   r/   r   r0   r   r1   r2   r3   _buffer_output_elements_prefetch_input_elements_num_parallel_callsr4   r   parallel_interleave_dataset_v4r6   r7   r8   r9   r:   r;   )r<   r   r   r   r   r   rV   rW   r   r   deterministic_stringr=   r>   s               r   r;   z#_ParallelInterleaveDataset.__init__k   s    (D(BB$++-}FDNdnn55{7N7NO
H!!$.."A"ABEQHI I nn55CCDO..FLL~?D..FLL~?D#&#8#8ll%$'D  %($9$9ll&%(D!
  #44&,,5I KD&	#$DJ$CC%%//$$%%  
 ..
!
!*
 


N 
G]N3r   c                     | j                   gS r@   rA   rB   s    r   rC   z%_ParallelInterleaveDataset._functions   rD   r   c                     | j                   S r@   rF   rB   s    r   rG   z'_ParallelInterleaveDataset.element_spec   rH   r   c                      yrJ   rK   rB   s    r   r'   z/_ParallelInterleaveDataset._transformation_name   rL   r   )rM   rN   rO   rP   r   r   r;   rC   rQ   rG   r'   rR   rS   s   @r   r   r   g   sF     '2&:&:'2';';!54n  "r   r   )NNNNN)rP   r   tensorflow.python.data.opsr   r   r   tensorflow.python.frameworkr   r   tensorflow.python.opsr   r   UnaryDatasetr   r   rK   r   r   <module>rg      s]    :  2 1 : . + 1 	@)"11 )"XC"!9!9 C"r   