Il problema è che gli attributi keys e values sono metodi della raccolta di colonne immutabili sq_objects.c . Un'altra soluzione al problema consiste nell'utilizzare la notazione di accesso agli elementi per ottenere le colonne effettive:
func.jsonb_object_agg(
sq_objects.c["keys"],
sq_objects.c["values"]
).over(
partition_by=sq_objects.c.object_id
).label("attributes")