
    BVhk                     X    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      Zy	)
z*Utility classes for testing checkpointing.    )context)dtypes)ops)gen_lookup_ops)saverc                       e Zd ZdZddZed        Zed        Zd Zd Z	d Z
d	 Zd
 Z G d dej                  j                        Zy)CheckpointedOpzOp with a custom checkpointing implementation.

  Defined as part of the test because the MutableHashTable Python code is
  currently in contrib.
  Nc                 h   |:t        j                  t        j                  t        j                  |      | _        n|| _        || _        t        j                         sTt        j                  | |      | _        t        j                  t        j                  j                  | j                         y y )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   s      [/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/training/saver_test_utils.py__init__zCheckpointedOp.__init__    s    %;;MMv~~DJdn !dnDJ$$&%44T4@dn 1 1 B B $0 '    c                     | j                   S N)r   r   s    r   r   zCheckpointedOp.name,   s    ::r   c                     t        j                         r t        j                  | | j                        S | j
                  S r   )r   r   r	   r   r   r   r    s    r   saveablezCheckpointedOp.saveable0   s/      "**4;;^^r   c                 D    t        j                  | j                  ||      S r   )r   lookup_table_insert_v2r   )r   keysvaluess      r   insertzCheckpointedOp.insert7   s    00vNNr   c                 D    t        j                  | j                  ||      S r   )r   lookup_table_find_v2r   )r   r%   defaults      r   lookupzCheckpointedOp.lookup:   s    ..t~~tWMMr   c                 (    | j                         d   S )Nr   _exportr    s    r   r%   zCheckpointedOp.keys=       <<>!r   c                 (    | j                         d   S )N   r-   r    s    r   r&   zCheckpointedOp.values@   r/   r   c                 |    t        j                  | j                  t        j                  t        j
                        S r   )r   lookup_table_export_v2r   r   r   r   r    s    r   r.   zCheckpointedOp._exportC   s*    0017A Ar   c                   (     e Zd ZdZ fdZd Z xZS )CheckpointedOp.CustomSaveablez%A custom saveable for CheckpointedOp.c                     |j                         }t        j                  j                  |d   d|dz         t        j                  j                  |d   d|dz         g}t        t
        j                  |   |||       y )Nr    z-keysr1   z-values)r.   saver_moduleBaseSaverBuilderSaveSpecsuperr	   r   r   )r   tabler   tensorsspecs	__class__s        r   r   z&CheckpointedOp.CustomSaveable.__init__J   sy    g

'
'
0
0R15A

'
'
0
0R15	1ACe N))49%Mr   c                 d    t        j                  | j                  j                  |d   |d         S )Nr   r1   )r   lookup_table_import_v2opr   )r   restore_tensorsshapess      r   restorez%CheckpointedOp.CustomSaveable.restoreT   s2    22
''

_Q/1CE Er   )__name__
__module____qualname____doc__r   rE   __classcell__)r?   s   @r   r   r5   G   s    /NEr   r   r   )rF   rG   rH   rI   r   propertyr   r"   r'   r+   r%   r&   r.   r8   r9   SaveableObjectr    r   r   r	   r	      sj    
0    ONAE|44CC Er   r	   N)rI   tensorflow.python.eagerr   tensorflow.python.frameworkr   r   r   tensorflow.python.opsr   tensorflow.python.trainingr   r8   r	   rM   r   r   <module>rR      s%    1 + . 6 0 <>E >Er   