def sticky_attribute_assignment(trackable, name, value):
    """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.
    """
    if isinstance(
        value, (tracking.TrackedList, tracking.TrackedDict, tracking.TrackedSet)
    ) and hasattr(trackable, "_tracked"):
        trackable._tracked.append(name)
    if not tracking.is_tracking_enabled():
        return value
    if isinstance(value, tf.__internal__.tracking.Trackable):
        trackable._track_trackable(  # pylint: disable=protected-access
            value,
            name=name,
            # Allow the user to switch the Trackable which is tracked by this
            # name, since assigning a new variable to an attribute has
            # historically been fine (e.g. Adam did this).
            overwrite=True,
        )
    return value
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.
    
keras/src/backend/tensorflow/trackable.py