
    BVh                     D    d Z ddlmZ  edg        G d de             Zy)aC  A mixin class that delegates another Trackable to be used when saving.

This is intended to be used with wrapper classes that cannot directly proxy the
wrapped object (e.g. with wrapt.ObjectProxy), because there are inner attributes
that cannot be exposed.

The Wrapper class itself cannot contain any Trackable children, as only the
delegated Trackable will be saved to checkpoint and SavedModel.

This class will "disappear" and be replaced with the wrapped inner Trackable
after a cycle of SavedModel saving and loading, unless the object is registered
and loaded with Keras.
    )	tf_exportz.__internal__.tracking.DelegatingTrackableMixin)v1c                   H   e Zd ZdZd Zed        Zej                  d        Zed        Zej                  d        Zed        Z	ed        Z
ed	        Zd
 Zed        Zed        Zd Zd Zed        Zed        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)DelegatingTrackableMixinan  A mixin that delegates all Trackable methods to another trackable object.

  DO NOT USE THIS UNLESS YOU ARE THE KERAS LOSS SCALE OPTIMIZER.

  This class must be used with multiple inheritance. A class that subclasses
  Trackable can also subclass this class, which causes all Trackable methods to
  be delegated to the trackable object passed in the constructor.

  A subclass can use this mixin to appear as if it were the trackable passed to
  the constructor, from a Checkpoint's perspective. LossScaleOptimizer uses this
  mixin, so that the checkpoint format for a LossScaleOptimizer is identical to
  the checkpoint format for a normal optimizer. This allows a model to be saved
  with a normal Optimizer and restored with a LossScaleOptimizer, or vice versa.
  The only difference in checkpoint format is that the loss scale is also saved
  with a LossScaleOptimizer.
  c                     || _         y N)
_trackable)selftrackable_objs     Y/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/trackable/base_delegate.py__init__z!DelegatingTrackableMixin.__init__3   s	    #DO    c                 .    | j                   j                  S r   r	   _setattr_trackingr
   s    r   r   z*DelegatingTrackableMixin._setattr_tracking7   s    ??,,,r   c                 &    || j                   _        y r   r   r
   values     r   r   z*DelegatingTrackableMixin._setattr_tracking;   s    (-DOO%r   c                 .    | j                   j                  S r   r	   _update_uidr   s    r   r   z$DelegatingTrackableMixin._update_uid?   s    ??&&&r   c                 &    || j                   _        y r   r   r   s     r   r   z$DelegatingTrackableMixin._update_uidC   s    "'DOOr   c                 .    | j                   j                  S r   )r	   &_unconditional_checkpoint_dependenciesr   s    r   r   z?DelegatingTrackableMixin._unconditional_checkpoint_dependenciesG   s    ??AAAr   c                 .    | j                   j                  S r   )r	   _unconditional_dependency_namesr   s    r   r   z8DelegatingTrackableMixin._unconditional_dependency_namesK   s    ??:::r   c                 .    | j                   j                  S r   )r	   _name_based_restoresr   s    r   r   z-DelegatingTrackableMixin._name_based_restoresO   s    ??///r   c                 6    | j                   j                         S r   )r	   _maybe_initialize_trackabler   s    r   r!   z4DelegatingTrackableMixin._maybe_initialize_trackableS   s    ??6688r   c                 .    | j                   j                  S r   )r	   _object_identifierr   s    r   r#   z+DelegatingTrackableMixin._object_identifierV       ??---r   c                 .    | j                   j                  S r   )r	   _tracking_metadatar   s    r   r&   z+DelegatingTrackableMixin._tracking_metadataZ   r$   r   c                 :     | j                   j                  |i |S r   )r	   _no_dependencyr
   argskwargss      r   r(   z'DelegatingTrackableMixin._no_dependency^   s    )4??))4:6::r   c                 :     | j                   j                  |i |S r   )r	   _name_based_attribute_restorer)   s      r   r-   z6DelegatingTrackableMixin._name_based_attribute_restorea       84??88$I&IIr   c                 .    | j                   j                  S r   )r	   _checkpoint_dependenciesr   s    r   r0   z1DelegatingTrackableMixin._checkpoint_dependenciesd   s    ??333r   c                 .    | j                   j                  S r   )r	   _deferred_dependenciesr   s    r   r2   z/DelegatingTrackableMixin._deferred_dependenciesh   s    ??111r   c                 :     | j                   j                  |i |S r   )r	   _lookup_dependencyr)   s      r   r4   z+DelegatingTrackableMixin._lookup_dependencyl   s    -4??--t>v>>r   c                 :     | j                   j                  |i |S r   )r	    _add_variable_with_custom_getterr)   s      r   r6   z9DelegatingTrackableMixin._add_variable_with_custom_gettero       ;4??;;TLVLLr   c                 :     | j                   j                  |i |S r   )r	   _preload_simple_restorationr)   s      r   r9   z4DelegatingTrackableMixin._preload_simple_restorationr   s    64??66GGGr   c                 :     | j                   j                  |i |S r   )r	   _track_trackabler)   s      r   r;   z)DelegatingTrackableMixin._track_trackableu   s    +4??++T<V<<r   c                 :    | j                   j                  ||      S r   )r	   _handle_deferred_dependencies)r
   name	trackables      r   r=   z6DelegatingTrackableMixin._handle_deferred_dependenciesx   s    ??88yIIr   c                 :     | j                   j                  |i |S r   )r	    _gather_saveables_for_checkpointr)   s      r   rA   z9DelegatingTrackableMixin._gather_saveables_for_checkpoint{   r7   r   c                 :     | j                   j                  |i |S r   )r	   _trackable_childrenr)   s      r   rC   z,DelegatingTrackableMixin._trackable_children~   s    .4??..???r   c                 :     | j                   j                  |i |S r   )r	   _deserialization_dependenciesr)   s      r   rE   z6DelegatingTrackableMixin._deserialization_dependencies   r.   r   c                 :     | j                   j                  |i |S r   )r	   _export_to_saved_model_graphr)   s      r   rG   z5DelegatingTrackableMixin._export_to_saved_model_graph   s    74??77HHHr   c                 :     | j                   j                  |i |S r   )r	   _serialize_to_tensorsr)   s      r   rI   z.DelegatingTrackableMixin._serialize_to_tensors       04??00$A&AAr   c                 :     | j                   j                  |i |S r   )r	   _restore_from_tensorsr)   s      r   rL   z.DelegatingTrackableMixin._restore_from_tensors   rJ   r   c                 z    | j                   j                  |       | |vrt        || j                            || <   y y r   )r	   _copy_trackable_to_cpur   )r
   
object_maps     r   rN   z/DelegatingTrackableMixin._copy_trackable_to_cpu   s9    OO**:6:1*T__2MNj r   N)__name__
__module____qualname____doc__r   propertyr   setterr   r   r   r   r!   r#   r&   r(   r-   r0   r2   r4   r6   r9   r;   r=   rA   rC   rE   rG   rI   rL   rN    r   r   r   r       sL   "$ - - . . ' ' ( ( B B ; ; 0 09 . . . .;J 4 4 2 2?MH=JM@JIBBOr   r   N)rS    tensorflow.python.util.tf_exportr   objectr   rV   r   r   <module>rY      s9    7 ;CoOv oO DoOr   