
    2Vh                     p    d dl Zd dlmZ  G d dej                  j                  j
                        Zd Zy)    N)trackingc                   "     e Zd ZdZ fdZ xZS )KerasAutoTrackablezManages dependencies on other objects with Keras tracking.

    Similar to TF AutoTrackable, but disabling tracking is based
    on tracking within Keras.

    This serves as an interface between Keras tracking and TF tracking.
    c                     	 t        | |      |u ry	 t        | dd      rt        | ||      }t        |   ||       y# t        $ r Y 7w xY w)z$Support self.foo = trackable syntax.N_self_setattr_trackingT)	trackablevaluename)getattrAttributeErrorsticky_attribute_assignmentsuper__setattr__)selfr
   r	   	__class__s      V/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/backend/tensorflow/trackable.pyr   zKerasAutoTrackable.__setattr__   sd    	tT"e+ , 4148/e$E 	D%(  		s   ? 	A
A)__name__
__module____qualname____doc__r   __classcell__)r   s   @r   r   r      s    ) )    r   c                 v   t        |t        j                  t        j                  t        j                  f      r't        | d      r| j                  j                  |       t        j                         s|S t        |t        j                  j                  j                        r| j                  ||d       |S )aq  Adds dependencies, called from __setattr__.

    Args:
        trackable: The object to add dependencies to (generally the one having
        an attribute assigned).
        name: The attribute name being assigned.
        value: The value being assigned. Not necessarily a trackable object.

    Returns:
        The value which should be stored in the attribute.
    _trackedT)r
   	overwrite)
isinstancer   TrackedListTrackedDict
TrackedSethasattrr   appendis_tracking_enabledtf__internal__	Trackable_track_trackable)r   r
   r	   s      r   r   r      s     $$h&:&:H<O<OP
)Z
(!!$''')%11;;<""  	# 	
 Lr   )
tensorflowr#   keras.src.utilsr   r$   AutoTrackabler   r    r   r   <module>r+      s,     $)11?? )2r   