o
    ?ec                     @   sp   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	d
ZG dd dejZdS )z1The implementation of `tf.data.Dataset.snapshot`.    N)dataset_ops)structured_function)dtypes)tensor_spec)gen_experimental_dataset_opsAUTOc           	      C   s\   d}|du r| j |d} dd }dd }n|}t| |||||d}|dur,|j||d}|S )z%See `Dataset.snapshot()` for details.N)namec                 S   s   | t   S N)multiprocessing	cpu_count)index_ r   g/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/tensorflow/python/data/ops/snapshot_op.py<lambda>)   s    z_snapshot.<locals>.<lambda>c                 S   s   |S r	   r   )r   elemr   r   r   r   *       )input_datasetpathcompressionreader_func
shard_funcr   )	enumerate_SnapshotDatasetmap)	r   r   r   r   r   r   Zproject_funcZlocal_shard_funcdatasetr   r   r   	_snapshot   s"   
	r   c                       s<   e Zd ZdZ					d
 fdd	Zdd Zdd	 Z  ZS )r   zBA dataset that allows saving and re-use of already processed data.NFc	           
         s   |d u rdd }|| _ || _|| _tj||  d tt|j|d| _	tj||  d ||d| _
| j
jtg tjsV| j
jtg tjsVtd| j
j d|| _tj|j|| j	jj| j
jjf|| j	j| j
jd	| j}	t ||	 d S )
Nc                 S   s   | j dd t tjdS )Nc                 S   s   | S r	   r   )xr   r   r   r   J   r   z=_SnapshotDataset.__init__.<locals>.<lambda>.<locals>.<lambda>)Zcycle_lengthZnum_parallel_calls)
interleaver
   r   r   ZAUTOTUNE)Zdatasetsr   r   r   r   I   s
    z+_SnapshotDataset.__init__.<locals>.<lambda>z.reader_func)Zinput_structureuse_legacy_functionz.shard_func)r   r   z_Invalid `shard_func`. `shard_func` must return `tf.int64` scalar tensor but its return type is .)r   r   r   )Z_input_dataset_path_compressionr   ZStructuredFunctionWrapper_transformation_namer   ZDatasetSpecZelement_spec_reader_func_shard_funcZoutput_structureZis_compatible_withr   Z
TensorSpecr   Zint32Zint64	TypeError_nameged_opsZsnapshot_dataset_v2Z_variant_tensorfunctionZcaptured_inputsZ_common_argssuper__init__)
selfr   r   r   r   r   Zpending_snapshot_expiry_secondsr   r   Zvariant_tensor	__class__r   r   r+   >   sV   




	z_SnapshotDataset.__init__c                 C   s   | j | jgS r	   )r$   r%   r,   r   r   r   
_functionss   s   z_SnapshotDataset._functionsc                 C   s   dS )NzDataset.snapshot()r   r/   r   r   r   r#   v   s   z%_SnapshotDataset._transformation_name)NNNFN)__name__
__module____qualname____doc__r+   r0   r#   __classcell__r   r   r-   r   r   ;   s    5r   )r   NNN)r4   r
   Ztensorflow.python.data.opsr   r   Ztensorflow.python.frameworkr   r   Ztensorflow.python.opsr   r(   r   ZUnaryUnchangedStructureDatasetr   r   r   r   r   <module>   s   
!