o
    i e	                     @   s   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	d
ZG dd dejZG dd dejZdS )z3The implementation of `tf.data.Dataset.interleave`.    N)dataset_ops)
debug_mode)structured_function)dtypes)ops)gen_dataset_opsc              	   C   sh   |du rd}|du rt j}|du stjr)|dur tjs td t| ||||dS t| ||||||dS )'See `Dataset.interleave()` for details.N   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
    r   W/var/www/myenv/lib/python3.10/site-packages/tensorflow/python/data/ops/interleave_op.py_interleave   s&   	

r   c                       s@   e Zd ZdZ	d fdd	Zdd Zedd Zd	d
 Z  Z	S )r   z>A `Dataset` that interleaves the result of transformed inputs.Nc                    s   || _ tj||  |d| _t| jjtjs#t	dt
| jjd| jjj| _tj|tjdd| _tj|tjdd| _|| _tj|j| jjj| j| jfd| jji| j}t || dS )	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__r   r   r7   >   s:   
z_InterleaveDataset.__init__c                 C      | j gS Nr$   r8   r   r   r   
_functions\      z_InterleaveDataset._functionsc                 C      | j S r=   r+   r?   r   r   r   element_spec_      z_InterleaveDataset.element_specc                 C      dS NzDataset.interleave()r   r?   r   r   r   r#   c      z'_InterleaveDataset._transformation_namer=   )
__name__
__module____qualname____doc__r7   r@   propertyrD   r#   __classcell__r   r   r:   r   r   ;   s    
r   c                       sJ   e Zd ZdZejejddf fdd	Zdd Zedd Z	d	d
 Z
  ZS )r   zNA `Dataset` that maps a function over its input and interleaves the result.
  Nc
                    s&  || _ tj||  |d| _t| jjtjs#t	dt
| jjd| jjj| _tj|tjdd| _tj|tjdd| _tj|tjdd| _tj|tjdd| _tj|tjd	d| _|d
u rbd}
n|rgd}
nd}
|	| _tj|j| jjj| j| j| j| j| jf| jj|
d| j}t || d
S )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   r,   r   r-   r.   r/   _buffer_output_elements_prefetch_input_elements_num_parallel_callsr0   r   parallel_interleave_dataset_v4r2   r3   r4   r5   r6   r7   )r8   r   r   r   r   r   rO   rP   r   r
   deterministic_stringr9   r:   r   r   r7   k   sf   

z#_ParallelInterleaveDataset.__init__c                 C   r<   r=   r>   r?   r   r   r   r@      rA   z%_ParallelInterleaveDataset._functionsc                 C   rB   r=   rC   r?   r   r   r   rD      rE   z'_ParallelInterleaveDataset.element_specc                 C   rF   rG   r   r?   r   r   r   r#      rH   z/_ParallelInterleaveDataset._transformation_name)rI   rJ   rK   rL   r   r   r7   r@   rM   rD   r#   rN   r   r   r:   r   r   g   s    	7
r   )NNNNN)rL   r   tensorflow.python.data.opsr   r   r   tensorflow.python.frameworkr   r   tensorflow.python.opsr   r   UnaryDatasetr   r   r   r   r   r   <module>   s    
 ,