o
    ?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)Z	key_dtypeZvalue_dtypename)r   Zmutable_hash_table_v2r   stringfloat32	table_ref_namer   executing_eagerlyr   CustomSaveable	_saveableops_libZadd_to_collectionZ	GraphKeysZSAVEABLE_OBJECTS)selfr   r    r   l/home/www/facesmatcher.com/pyenv/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   Zlookup_table_insert_v2r   )r   keysvaluesr   r   r   insert7      zCheckpointedOp.insertc                 C   r   r   )r   Z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   Z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BaseSaverBuilderZSaveSpecsuperr   r   r   )r   tabler   Ztensorsspecs	__class__r   r   r   J   s   z&CheckpointedOp.CustomSaveable.__init__c                 C   s   t | jj|d |d S )Nr   r#   )r   Zlookup_table_import_v2opr   )r   Zrestore_tensorsZshapesr   r   r   restoreT   s   z%CheckpointedOp.CustomSaveable.restore)__name__
__module____qualname____doc__r   r-   __classcell__r   r   r*   r   r   G   s    
r   r   )r.   r/   r0   r1   r   propertyr   r   r   r   r   r   r!   r%   r&   ZSaveableObjectr   r   r   r   r   r      s    


r   N)r1   Ztensorflow.python.eagerr   Ztensorflow.python.frameworkr   r   r   Ztensorflow.python.opsr   Ztensorflow.python.trainingr   r%   r   r   r   r   r   <module>   s   