And the alternative behavior for some hypothetical dataclasses alternative would be that `F."y"` is instead the `field()` instance?
Right. That's what SQLAlchemy is expecting.
I don't see any reason why a reader would not assume this behavior to be covered by the "assumed to behave like stdlib dataclass" clause in the PEP
I was thinking that readers might believe that the class attribute behavior is specific to Field objects and therefore custom field specifiers would not be required to behave the same way.
That is, accessing the class attribute should return the default value, but the details of how this is done are unspecified
That's clever and seems reasonable. However, I believe that SQLAlchemy relies on accesses to the class attribute returning the actual descriptor. I've reached out to them to confirm. -Erik