The current Python client implementation has some extra stuff that I think maybe leftover from earlier experiments and should be removed so we don't cause confusion about conformity.
Found when reviewing the sdk-rfc:
cb.lookup_in(docid, SD.get_fulldoc(), SD.get('my.xattr', xattr=True))
cb.mutate_in(docid, SD.upsert_fulldoc(docid), SD.upsert('my.xattr', xattr=True))
Looking around, I don't see any indication that the get_fulldoc or upsert_fulldoc exist elsewhere.
Will confirm and then remove if needed.