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.2.tar.gz (222.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.2-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file protovalidate-1.1.2.tar.gz.

File metadata

  • Download URL: protovalidate-1.1.2.tar.gz
  • Upload date:
  • Size: 222.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.2.tar.gz
Algorithm Hash digest
SHA256 33d13b49e56e87c2ef4c8f0cbce4776288141a3c79a1e48fb172444bf4de47bb
MD5 068d63636e803c748ce5089180c67ed3
BLAKE2b-256 ff9e38742fe4006fb6d9101fd416e9bba4213984b7aaa2ae1a99721d2f8770a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for protovalidate-1.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: protovalidate-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 29.7 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 21d4a5ad68a0d59222411af3c53c6f63d1318381e31c069143811e193f6fcf67
MD5 2377f197e015b8d3b62d90e0a6ec3685
BLAKE2b-256 356dd199a67b9580d45939419c9f2c7c9d6a898b611a908b12606d997c6ab8be

See more details on using hashes here.

Provenance

The following attestation bundles were made for protovalidate-1.1.2-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