o
    i ek                     @   sR   d 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 G dd dZd	S )
z*Utility classes for testing checkpointing.    )context)dtypes)ops)gen_lookup_ops)saverc                   @   sn   e Zd ZdZdddZedd Zedd Zd	d
 Zdd Z	dd Z
dd Zdd ZG dd dejjZdS )CheckpointedOpzOp with a custom checkpointing implementation.

  Defined as part of the test because the MutableHashTable Python code is
  currently in contrib.
  Nc                 C   s\   |d u rt jtjtj|d| _n|| _|| _t s,t	
| || _ttjj| j d S d S )N)	key_dtypevalue_dtypename)r   mutable_hash_table_v2r   stringfloat32	table_ref_namer   executing_eagerlyr   CustomSaveable	_saveableops_libadd_to_collection	GraphKeysSAVEABLE_OBJECTS)selfr
   r    r   Z/var/www/myenv/lib/python3.10/site-packages/tensorflow/python/training/saver_test_utils.py__init__    s   


zCheckpointedOp.__init__c                 C   s   | j S N)r   r   r   r   r   r
   ,   s   zCheckpointedOp.namec                 C   s   t  rt| | jS | jS r   )r   r   r   r   r
   r   r   r   r   r   saveable0   s   zCheckpointedOp.saveablec                 C      t | j||S r   )r   lookup_table_insert_v2r   )r   keysvaluesr   r   r   insert7      zCheckpointedOp.insertc                 C   r   r   )r   lookup_table_find_v2r   )r   r    defaultr   r   r   lookup:   r#   zCheckpointedOp.lookupc                 C      |   d S )Nr   _exportr   r   r   r   r    =      zCheckpointedOp.keysc                 C   r'   )N   r(   r   r   r   r   r!   @   r*   zCheckpointedOp.valuesc                 C   s   t | jtjtjS r   )r   lookup_table_export_v2r   r   r   r   r   r   r   r   r)   C   s   zCheckpointedOp._exportc                       s(   e Zd ZdZ fddZdd Z  ZS )zCheckpointedOp.CustomSaveablez%A custom saveable for CheckpointedOp.c                    sR   |  }tj|d d|d tj|d d|d g}ttj| ||| d S )Nr    z-keysr+   z-values)r)   saver_moduleBaseSaverBuilderSaveSpecsuperr   r   r   )r   tabler
   tensorsspecs	__class__r   r   r   J   s   z&CheckpointedOp.CustomSaveable.__init__c                 C   s   t | jj|d |d S )Nr   r+   )r   lookup_table_import_v2opr   )r   restore_tensorsshapesr   r   r   restoreT   s   z%CheckpointedOp.CustomSaveable.restore)__name__
__module____qualname____doc__r   r;   __classcell__r   r   r5   r   r   G   s    
r   r   )r<   r=   r>   r?   r   propertyr
   r   r"   r&   r    r!   r)   r.   r/   SaveableObjectr   r   r   r   r   r      s    


r   N)r?   tensorflow.python.eagerr   tensorflow.python.frameworkr   r   r   tensorflow.python.opsr   tensorflow.python.trainingr   r.   r   r   r   r   r   <module>   s   