o
    ?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   Z
DEBUG_MODEwarningswarn_InterleaveDataset_ParallelInterleaveDataset)input_datasetmap_funccycle_lengthblock_lengthnum_parallel_callsr   r
    r   i/home/www/facesmatcher.com/pyenv/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   Zdataset<The `map_func` argument must return a `Dataset` object. Got .r   Z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   Zinterleave_dataset_variant_tensorfunctioncaptured_inputs_common_argssuper__init__)selfr   r   r   r   r
   variant_tensor	__class__r   r   r3   >   s:   
z_InterleaveDataset.__init__c                 C      | j gS Nr!   r4   r   r   r   
_functions\      z_InterleaveDataset._functionsc                 C      | j S r9   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_namer9   )
__name__
__module____qualname____doc__r3   r<   propertyr@   r    __classcell__r   r   r6   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,   Z_buffer_output_elementsZ_prefetch_input_elementsZ_num_parallel_callsr-   r   Zparallel_interleave_dataset_v4r.   r/   r0   r1   r2   r3   )r4   r   r   r   r   r   rK   rL   r   r
   Zdeterministic_stringr5   r6   r   r   r3   k   sf   

z#_ParallelInterleaveDataset.__init__c                 C   r8   r9   r:   r;   r   r   r   r<      r=   z%_ParallelInterleaveDataset._functionsc                 C   r>   r9   r?   r;   r   r   r   r@      rA   z'_ParallelInterleaveDataset.element_specc                 C   rB   rC   r   r;   r   r   r   r       rD   z/_ParallelInterleaveDataset._transformation_name)rE   rF   rG   rH   r   r   r3   r<   rI   r@   r    rJ   r   r   r6   r   r   g   s    	7
r   )NNNNN)rH   r   Ztensorflow.python.data.opsr   r   r   Ztensorflow.python.frameworkr   r   Ztensorflow.python.opsr   r   ZUnaryDatasetr   r   r   r   r   r   <module>   s    
 ,