Protocol Buffer Validation for Python
Project description
protovalidate-python
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";
package acme.user.v1;
import "buf/validate/validate.proto";
message User {
string id = 1 [(buf.validate.field).string.uuid = true];
uint32 age = 2 [(buf.validate.field).uint32.lte = 150]; // We can only hope.
string email = 3 [(buf.validate.field).string.email = true];
string first_name = 4 [(buf.validate.field).string.max_len = 64];
string last_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 to your project, validation is idiomatic Python:
try:
protovalidate.validate(message)
except protovalidate.ValidationError as e:
# Handle failure.
Installation
[!TIP] The easiest way to get started with Protovalidate for RPC APIs are the quickstarts in Buf's documentation. There's one available for Python and gRPC.
To install the package, use pip:
pip install protovalidate
Documentation
Comprehensive documentation for Protovalidate is available at protovalidate.com.
Highlights for Python developers include:
- The developer quickstart
- A comprehensive RPC quickstart for Python and gRPC
- A migration guide for protoc-gen-validate users
Additional languages and repositories
Protovalidate isn't just for Python! You might be interested in sibling repositories for other languages:
protovalidate-go(Go)protovalidate-java(Java)protovalidate-cc(C++)protovalidate-es(TypeScript and JavaScript)
Additionally, protovalidate's core repository provides:
- Protovalidate's Protobuf API
- Conformance testing utilities for acceptance testing of
protovalidateimplementations
Contributing
We genuinely appreciate any help! If you'd like to contribute, check out these resources:
- Contributing Guidelines: Guidelines to make your contribution process straightforward and meaningful
- Conformance testing utilities: Utilities providing acceptance testing of
protovalidateimplementations
Legal
Offered under the Apache 2 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file protovalidate-1.1.1.tar.gz.
File metadata
- Download URL: protovalidate-1.1.1.tar.gz
- Upload date:
- Size: 226.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41bc38482bccd75b88294532d44f5b74e6b576359d1302bcadfc231f7622bd23
|
|
| MD5 |
da1af5a65c5f02446c8e113d8500e271
|
|
| BLAKE2b-256 |
b27555b0e85e8c4247e754015a65a291990f23ae738a5d20992a251637f1cdf8
|
Provenance
The following attestation bundles were made for protovalidate-1.1.1.tar.gz:
Publisher:
release.yaml on bufbuild/protovalidate-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
protovalidate-1.1.1.tar.gz -
Subject digest:
41bc38482bccd75b88294532d44f5b74e6b576359d1302bcadfc231f7622bd23 - Sigstore transparency entry: 903947166
- Sigstore integration time:
-
Permalink:
bufbuild/protovalidate-python@4d3c769aa5eb1af24c05fb4162c6fd0ac23d509a -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/bufbuild
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@4d3c769aa5eb1af24c05fb4162c6fd0ac23d509a -
Trigger Event:
release
-
Statement type:
File details
Details for the file protovalidate-1.1.1-py3-none-any.whl.
File metadata
- Download URL: protovalidate-1.1.1-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c9daee765824011071ece81924df07a325931790075a3a00c04de7ed7ea9d13
|
|
| MD5 |
565b018afa05b77d454f5956659bc33f
|
|
| BLAKE2b-256 |
9b5036201b523b6f3eba276b8918f081c698317a62da1da9269f6417b4abd216
|
Provenance
The following attestation bundles were made for protovalidate-1.1.1-py3-none-any.whl:
Publisher:
release.yaml on bufbuild/protovalidate-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
protovalidate-1.1.1-py3-none-any.whl -
Subject digest:
1c9daee765824011071ece81924df07a325931790075a3a00c04de7ed7ea9d13 - Sigstore transparency entry: 903947230
- Sigstore integration time:
-
Permalink:
bufbuild/protovalidate-python@4d3c769aa5eb1af24c05fb4162c6fd0ac23d509a -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/bufbuild
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@4d3c769aa5eb1af24c05fb4162c6fd0ac23d509a -
Trigger Event:
release
-
Statement type: