Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ ADD_LICENSE_HEADER := $(BIN)/license-header \
--copyright-holder "Buf Technologies, Inc." \
--year-range "2023-2025"
# This version should be kept in sync with the version in buf.yaml
PROTOVALIDATE_VERSION ?= v0.13.1
PROTOVALIDATE_VERSION ?= v0.13.3
# Version of the cel-spec that this implementation is conformant with
# This should be kept in sync with the version in format_test.py
CEL_SPEC_VERSION ?= v0.24.0
Expand Down
8 changes: 4 additions & 4 deletions buf.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
version: v2
deps:
- name: buf.build/bufbuild/protovalidate
commit: c6451e2c05a64a659a0835011a72516c
digest: b5:826b8be86c1bc691afb751fb33c513cb90a9b9d03699b366a7812737e72fe06132d13ca4b2f5fdb9c5784594b0f65b20b850003349a556e8f020b84ce6787bd1
commit: 9f2d3c737feb481a83375159c0733275
digest: b5:19d3b83f7df2d284ff5935f4622d7f27e7464a93c210edb536e92a52bcc69b2a18da1312e96b5461601eba7b3764d5e90321bd62e6966870e7dbc2e4dedd98d6
- name: buf.build/bufbuild/protovalidate-testing
commit: 33dd956ff33d4a4085b2fa05cd7a14b8
digest: b5:d142307939a7b8486fe7698e7d244c7e9c4a9c7ef812c97b46e8a7cc362f9c666f94f84dd66ad72fdb272ec23ed0cc415deed365318efdc9b24b92ef4e9ec415
commit: 64cb206b26e840bcaacabae7b19bdf33
digest: b5:f0abbad11668a70061ec8870c8c6b71f56e033ff97e0c22264648504e9a9c9f636304a01e27485eeacf7256f9bf25abc48503836948609f537a0fbc136be839b
4 changes: 2 additions & 2 deletions buf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ version: v2
modules:
- path: proto
deps:
- buf.build/bufbuild/protovalidate:v0.13.1
- buf.build/bufbuild/protovalidate-testing:v0.13.1
- buf.build/bufbuild/protovalidate:v0.13.3
- buf.build/bufbuild/protovalidate-testing:v0.13.3
lint:
use:
- STANDARD
Expand Down
20 changes: 19 additions & 1 deletion gen/buf/validate/conformance/cases/messages_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 24 additions & 0 deletions gen/buf/validate/conformance/cases/messages_pb2.pyi

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions protovalidate/internal/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -1047,10 +1047,13 @@ def _new_field_rule(
def _new_rules(self, desc: descriptor.Descriptor) -> list[Rules]:
result: list[Rules] = []
rule: typing.Optional[Rules] = None
all_msg_oneof_fields = set()
if validate_pb2.message in desc.GetOptions().Extensions:
message_level = desc.GetOptions().Extensions[validate_pb2.message]
if message_level.disabled:
return []
for oneof in message_level.oneof:
all_msg_oneof_fields.update(oneof.fields)
if rule := self._new_message_rule(message_level, desc):
result.append(rule)

Expand All @@ -1062,6 +1065,11 @@ def _new_rules(self, desc: descriptor.Descriptor) -> list[Rules]:
for field in desc.fields:
if validate_pb2.field in field.GetOptions().Extensions:
field_level = field.GetOptions().Extensions[validate_pb2.field]
if not field_level.HasField("ignore") and field.name in all_msg_oneof_fields:
field_level_override = validate_pb2.FieldRules()
field_level_override.CopyFrom(field_level)
field_level_override.ignore = validate_pb2.IGNORE_IF_UNPOPULATED
field_level = field_level_override
if field_level.ignore == validate_pb2.IGNORE_ALWAYS:
continue
result.append(self._new_field_rule(field, field_level))
Expand Down
Loading