Skip to main content

The Buf logo

protovalidate-python

CI PyPI version

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:

Additional languages and repositories

Protovalidate isn't just for Python! You might be interested in sibling repositories for other languages:

Additionally, protovalidate's core repository provides:

Contributing

We genuinely appreciate any help! If you'd like to contribute, check out these resources:

Legal

Offered under the Apache 2 license.

Metadata

Release files for protovalidate-unofficial 1.1.0.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for protovalidate-unofficial 1.1.0.post1
File Size Uploaded
protovalidate_unofficial-1.1.0.post1.tar.gz 248.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for protovalidate-unofficial 1.1.0.post1
File Interpreter ABI Platform
protovalidate_unofficial-1.1.0.post1-py3-none-any.whl Python 3 none any Details

Total release size: 278.6 kB

Release files / protovalidate_unofficial-1.1.0.post1.tar.gz

Download URL protovalidate_unofficial-1.1.0.post1.tar.gz
Size 248.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a5fd58d44aa59dad4818a36ed46b4d88042c22a0a45925c8ec0c435d2d6ff9e2
BLAKE2b-256 checksum
How to use checksums
be9ce520938cdb0d4c87bd1689736bdefd90eeebeb7f663505a59bb36e52c431
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release files / protovalidate_unofficial-1.1.0.post1-py3-none-any.whl

Download URL protovalidate_unofficial-1.1.0.post1-py3-none-any.whl
Size 30.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9d5a14e579016f14c35166cbe1fed065273ffb1144d4dcd998756c803d447838
BLAKE2b-256 checksum
How to use checksums
c5b986cec90a30da436e5c159b5e04b83506c9e5a781b913354a69ccacccc23a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release history Release notifications | RSS feed

This release

1.1.0.post1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page