You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Protovalidate is the semantic validation library for Protobuf. It provides standard annotations to validate common rules on messages and fields, as well as the ability to use CEL to write custom rules. It's the next generation of protoc-gen-validate.
With Protovalidate, you can annotate your Protobuf messages with both standard and custom validation rules:
syntax="proto3";
packageacme.user.v1;
import"buf/validate/validate.proto";
messageUser {
stringid=1 [(buf.validate.field).string.uuid = true];
uint32age=2 [(buf.validate.field).uint32.lte = 150]; // We can only hope.stringemail=3 [(buf.validate.field).string.email = true];
stringfirst_name=4 [(buf.validate.field).string.max_len = 64];
stringlast_name=5 [(buf.validate.field).string.max_len = 64];
option(buf.validate.message).cel= {
id: "first_name_requires_last_name"message: "last_name must be present if first_name is present"expression: "!has(this.first_name) || has(this.last_name)"
};
}
Once you've added protovalidate-python to your project, validation is idiomatic Python: