More attribute ops (on master).
This branch mirrors !1442 (merged) (which was on the release branch only). Separate MRs are required since there was a merge conflict preventing the usual backport mechanism from working.
This branch mirrors !1442 (merged) (which was on the release branch only). Separate MRs are required since there was a merge conflict preventing the usual backport mechanism from working.