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_unofficial-1.1.0.post1.tar.gz (248.4 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file protovalidate_unofficial-1.1.0.post1.tar.gz.

File metadata

File hashes

Hashes for protovalidate_unofficial-1.1.0.post1.tar.gz
Algorithm Hash digest
SHA256 a5fd58d44aa59dad4818a36ed46b4d88042c22a0a45925c8ec0c435d2d6ff9e2
MD5 c9e12ad642a931ca1c2c427f19621c7e
BLAKE2b-256 be9ce520938cdb0d4c87bd1689736bdefd90eeebeb7f663505a59bb36e52c431

See more details on using hashes here.

File details

Details for the file protovalidate_unofficial-1.1.0.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for protovalidate_unofficial-1.1.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 9d5a14e579016f14c35166cbe1fed065273ffb1144d4dcd998756c803d447838
MD5 728414f77e48cdb91baab2c2951386c6
BLAKE2b-256 c5b986cec90a30da436e5c159b5e04b83506c9e5a781b913354a69ccacccc23a

See more details on using hashes here.

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