Early exit in Pytree._setattr for data descriptors.
When assigning to an attribute on a Pytree instance that resolves to a data descriptor (such as a @property with a setter or custom descriptors defining __set__), Pytree._setattr previously updated _pytree__nodes before invoking object.__setattr__. This caused the descriptor's attribute name to be incorrectly registered in _pytree__nodes alongside any underlying attributes set by the descriptor's setter.
This change inspects whether the attribute is a data descriptor on the class using inspect.getattr_static and hasattr(desc, '__set__'). If so, it delegates to super().__setattr__(name, value) and immediately returns without registering the descriptor name in _pytree__nodes.
PiperOrigin-RevId: 961167204