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	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d ZdS )z(Implementation of SaveDataset in Python.    N)
checkpoint)checkpoint_management)dataset_ops)structured_function)	structure)context)dtypes)ops)gen_experimental_dataset_ops)gfile)nested_structure_coderc                 C   s   t  rL|rLt| |||}t|}d|v rtdtj|d}||d< tjdi |}|	|j
 t|D ]}	d|v rC|d jdd |jdd q5d
S t| ||\}
}}}tj|
j||j|||d	S )z:Implements the save function and checkpoint functionality.r   zV'Invalid `checkpoint_args`. `checkpoint_args` are not allowed to include 'checkpoint'.)iteratorZstep_counter   )deltaT)Zcheck_interval)pathshard_func_other_argscompression
shard_funcuse_shard_funcN )r   Zexecuting_eagerly_SaveDatasetiter
ValueErrorcheckpoint_libZ
Checkpointr   ZCheckpointManagerrestoreZlatest_checkpoint	enumerateZ
assign_addsaveset_save_dataset_attributesged_opssave_dataset_variant_tensorcaptured_inputs)Zinput_datasetr   r   r   Zcheckpoint_argsr   Zsave_iteratorr   manager_datasetr   r   r   c/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/tensorflow/python/data/ops/save_op.py_save    s6   r&   c                       s4   e Zd ZdZ fddZdd Zedd Z  ZS )r   z/"A dataset that loads previously saved dataset.c                    sb   |j | _|| _t|||\}}}}tj|j||j|||t	|j t
|j d}t || d S )N)r   r   r   r   r   Zoutput_typesZoutput_shapes)element_spec_element_spec_shard_funcr   r   Zsave_dataset_v2r    r!   r   Zget_flat_tensor_typesZget_flat_tensor_shapessuper__init__)selfr$   r   r   r   r   Zvariant_tensor	__class__r   r%   r+   G   s    


z_SaveDataset.__init__c                 C   s   | j gS N)r)   r,   r   r   r%   
_functionsX   s   z_SaveDataset._functionsc                 C   s   | j S r/   )r(   r0   r   r   r%   r'   [   s   z_SaveDataset.element_spec)	__name__
__module____qualname____doc__r+   r1   propertyr'   __classcell__r   r   r-   r%   r   D   s    r   c                 C   s   |du rd}dd }nd}t j|d| jdd}t| j}t| ttj	
|tjd}||  W d   n1 s@w   Y  tj|tjd	d
}|j}|t  |   | |||fS )z6Sets parameters for SaveDatasetOp and SaveDatasetV2Op.NFc                  W   s   d S r/   r   )xr   r   r%   <lambda>d   s    z-set_save_dataset_attributes.<locals>.<lambda>Tzsave())Zinput_structureadd_to_graphwbr   )Zdtypename)r   ZStructuredFunctionWrapperr'   r   Zencode_structurer   ZMakeDirsZGFileosr   joinr   ZDATASET_SPEC_FILENAMEwriteZSerializeToStringr	   Zconvert_to_tensorr   stringfunctionr:   Zget_default_graphZ_apply_debug_options)r$   r   r   r   Zwrapped_funcencodedfr   r   r%   r   `   s.   

r   )NNN)r5   r=   Ztensorflow.python.checkpointr   r   r   Ztensorflow.python.data.opsr   r   Ztensorflow.python.data.utilr   Ztensorflow.python.eagerr   Ztensorflow.python.frameworkr   r	   Ztensorflow.python.opsr
   r   Ztensorflow.python.platformr   Ztensorflow.python.saved_modelr   r&   ZUnaryDatasetr   r   r   r   r   r%   <module>   s&   
$