Skip to main content

Protocol Buffer Validation for Python

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

protovalidate-1.1.1.tar.gz (226.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

protovalidate-1.1.1-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

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

Hashes for protovalidate-1.1.1.tar.gz
Algorithm Hash digest
SHA256 41bc38482bccd75b88294532d44f5b74e6b576359d1302bcadfc231f7622bd23
MD5 da1af5a65c5f02446c8e113d8500e271
BLAKE2b-256 b27555b0e85e8c4247e754015a65a291990f23ae738a5d20992a251637f1cdf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for protovalidate-1.1.1.tar.gz:

Publisher: release.yaml on bufbuild/protovalidate-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for protovalidate-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1c9daee765824011071ece81924df07a325931790075a3a00c04de7ed7ea9d13
MD5 565b018afa05b77d454f5956659bc33f
BLAKE2b-256 9b5036201b523b6f3eba276b8918f081c698317a62da1da9269f6417b4abd216

See more details on using hashes here.

Provenance

The following attestation bundles were made for protovalidate-1.1.1-py3-none-any.whl:

Publisher: release.yaml on bufbuild/protovalidate-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page