-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix behavior of required + ignore_empty constraints (#97)
Brings the python library in conformance with the revised spec around `required` and `ignore_empty` constraints. See bufbuild/protovalidate#115 The two `# type: ignore` comments are required as typeshed does not currently recognize the `has_presence` property on FieldDescriptor class. I may open an upstream patch to add it in (and audit the rest of the protobuf type definitions).
- Loading branch information
Showing
16 changed files
with
639 additions
and
102 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
gen/buf/validate/conformance/cases/ignore_empty_proto2_pb2.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# Copyright 2023 Buf Technologies, Inc. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# -*- coding: utf-8 -*- | ||
# Generated by the protocol buffer compiler. DO NOT EDIT! | ||
# source: buf/validate/conformance/cases/ignore_empty_proto2.proto | ||
"""Generated protocol buffer code.""" | ||
from google.protobuf import descriptor as _descriptor | ||
from google.protobuf import descriptor_pool as _descriptor_pool | ||
from google.protobuf import symbol_database as _symbol_database | ||
from google.protobuf.internal import builder as _builder | ||
# @@protoc_insertion_point(imports) | ||
|
||
_sym_db = _symbol_database.Default() | ||
|
||
|
||
from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 | ||
|
||
|
||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n8buf/validate/conformance/cases/ignore_empty_proto2.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\"?\n\x1fIgnoreEmptyProto2ScalarOptional\x12\x1c\n\x03val\x18\x01 \x01(\x05\x42\n\xbaH\x07\x1a\x02 \x00\xd0\x01\x01R\x03val\"N\n*IgnoreEmptyProto2ScalarOptionalWithDefault\x12 \n\x03val\x18\x01 \x01(\x05:\x02\x34\x32\x42\n\xbaH\x07\x1a\x02 \x00\xd0\x01\x01R\x03val\"?\n\x1fIgnoreEmptyProto2ScalarRequired\x12\x1c\n\x03val\x18\x01 \x02(\x05\x42\n\xbaH\x07\x1a\x02 \x00\xd0\x01\x01R\x03val\"\xc7\x01\n\x18IgnoreEmptyProto2Message\x12\x91\x01\n\x03val\x18\x01 \x01(\x0b\x32<.buf.validate.conformance.cases.IgnoreEmptyProto2Message.MsgBA\xbaH>\xba\x01\x38\n\x1bignore_empty.proto2.message\x12\x06\x66oobar\x1a\x11this.val == \'foo\'\xd0\x01\x01R\x03val\x1a\x17\n\x03Msg\x12\x10\n\x03val\x18\x01 \x01(\tR\x03val\"=\n\x16IgnoreEmptyProto2Oneof\x12\x1e\n\x03val\x18\x01 \x01(\x05\x42\n\xbaH\x07\x1a\x02 \x00\xd0\x01\x01H\x00R\x03valB\x03\n\x01o\":\n\x19IgnoreEmptyProto2Repeated\x12\x1d\n\x03val\x18\x01 \x03(\x05\x42\x0b\xbaH\x08\x92\x01\x02\x08\x03\xd0\x01\x01R\x03val\"\xac\x01\n\x14IgnoreEmptyProto2Map\x12\\\n\x03val\x18\x01 \x03(\x0b\x32=.buf.validate.conformance.cases.IgnoreEmptyProto2Map.ValEntryB\x0b\xbaH\x08\x9a\x01\x02\x08\x03\xd0\x01\x01R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01') | ||
|
||
_globals = globals() | ||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) | ||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'buf.validate.conformance.cases.ignore_empty_proto2_pb2', _globals) | ||
if _descriptor._USE_C_DESCRIPTORS == False: | ||
|
||
DESCRIPTOR._options = None | ||
_IGNOREEMPTYPROTO2SCALAROPTIONAL.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO2SCALAROPTIONAL.fields_by_name['val']._serialized_options = b'\272H\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYPROTO2SCALAROPTIONALWITHDEFAULT.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO2SCALAROPTIONALWITHDEFAULT.fields_by_name['val']._serialized_options = b'\272H\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYPROTO2SCALARREQUIRED.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO2SCALARREQUIRED.fields_by_name['val']._serialized_options = b'\272H\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYPROTO2MESSAGE.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO2MESSAGE.fields_by_name['val']._serialized_options = b'\272H>\272\0018\n\033ignore_empty.proto2.message\022\006foobar\032\021this.val == \'foo\'\320\001\001' | ||
_IGNOREEMPTYPROTO2ONEOF.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO2ONEOF.fields_by_name['val']._serialized_options = b'\272H\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYPROTO2REPEATED.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO2REPEATED.fields_by_name['val']._serialized_options = b'\272H\010\222\001\002\010\003\320\001\001' | ||
_IGNOREEMPTYPROTO2MAP_VALENTRY._options = None | ||
_IGNOREEMPTYPROTO2MAP_VALENTRY._serialized_options = b'8\001' | ||
_IGNOREEMPTYPROTO2MAP.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO2MAP.fields_by_name['val']._serialized_options = b'\272H\010\232\001\002\010\003\320\001\001' | ||
_globals['_IGNOREEMPTYPROTO2SCALAROPTIONAL']._serialized_start=121 | ||
_globals['_IGNOREEMPTYPROTO2SCALAROPTIONAL']._serialized_end=184 | ||
_globals['_IGNOREEMPTYPROTO2SCALAROPTIONALWITHDEFAULT']._serialized_start=186 | ||
_globals['_IGNOREEMPTYPROTO2SCALAROPTIONALWITHDEFAULT']._serialized_end=264 | ||
_globals['_IGNOREEMPTYPROTO2SCALARREQUIRED']._serialized_start=266 | ||
_globals['_IGNOREEMPTYPROTO2SCALARREQUIRED']._serialized_end=329 | ||
_globals['_IGNOREEMPTYPROTO2MESSAGE']._serialized_start=332 | ||
_globals['_IGNOREEMPTYPROTO2MESSAGE']._serialized_end=531 | ||
_globals['_IGNOREEMPTYPROTO2MESSAGE_MSG']._serialized_start=508 | ||
_globals['_IGNOREEMPTYPROTO2MESSAGE_MSG']._serialized_end=531 | ||
_globals['_IGNOREEMPTYPROTO2ONEOF']._serialized_start=533 | ||
_globals['_IGNOREEMPTYPROTO2ONEOF']._serialized_end=594 | ||
_globals['_IGNOREEMPTYPROTO2REPEATED']._serialized_start=596 | ||
_globals['_IGNOREEMPTYPROTO2REPEATED']._serialized_end=654 | ||
_globals['_IGNOREEMPTYPROTO2MAP']._serialized_start=657 | ||
_globals['_IGNOREEMPTYPROTO2MAP']._serialized_end=829 | ||
_globals['_IGNOREEMPTYPROTO2MAP_VALENTRY']._serialized_start=775 | ||
_globals['_IGNOREEMPTYPROTO2MAP_VALENTRY']._serialized_end=829 | ||
# @@protoc_insertion_point(module_scope) |
75 changes: 75 additions & 0 deletions
75
gen/buf/validate/conformance/cases/ignore_empty_proto2_pb2.pyi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# Copyright 2023 Buf Technologies, Inc. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
from buf.validate import validate_pb2 as _validate_pb2 | ||
from google.protobuf.internal import containers as _containers | ||
from google.protobuf import descriptor as _descriptor | ||
from google.protobuf import message as _message | ||
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union | ||
|
||
DESCRIPTOR: _descriptor.FileDescriptor | ||
|
||
class IgnoreEmptyProto2ScalarOptional(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: int | ||
def __init__(self, val: _Optional[int] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto2ScalarOptionalWithDefault(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: int | ||
def __init__(self, val: _Optional[int] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto2ScalarRequired(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: int | ||
def __init__(self, val: _Optional[int] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto2Message(_message.Message): | ||
__slots__ = ["val"] | ||
class Msg(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: str | ||
def __init__(self, val: _Optional[str] = ...) -> None: ... | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: IgnoreEmptyProto2Message.Msg | ||
def __init__(self, val: _Optional[_Union[IgnoreEmptyProto2Message.Msg, _Mapping]] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto2Oneof(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: int | ||
def __init__(self, val: _Optional[int] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto2Repeated(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: _containers.RepeatedScalarFieldContainer[int] | ||
def __init__(self, val: _Optional[_Iterable[int]] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto2Map(_message.Message): | ||
__slots__ = ["val"] | ||
class ValEntry(_message.Message): | ||
__slots__ = ["key", "value"] | ||
KEY_FIELD_NUMBER: _ClassVar[int] | ||
VALUE_FIELD_NUMBER: _ClassVar[int] | ||
key: int | ||
value: int | ||
def __init__(self, key: _Optional[int] = ..., value: _Optional[int] = ...) -> None: ... | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: _containers.ScalarMap[int, int] | ||
def __init__(self, val: _Optional[_Mapping[int, int]] = ...) -> None: ... |
81 changes: 81 additions & 0 deletions
81
gen/buf/validate/conformance/cases/ignore_empty_proto3_pb2.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# Copyright 2023 Buf Technologies, Inc. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# -*- coding: utf-8 -*- | ||
# Generated by the protocol buffer compiler. DO NOT EDIT! | ||
# source: buf/validate/conformance/cases/ignore_empty_proto3.proto | ||
"""Generated protocol buffer code.""" | ||
from google.protobuf import descriptor as _descriptor | ||
from google.protobuf import descriptor_pool as _descriptor_pool | ||
from google.protobuf import symbol_database as _symbol_database | ||
from google.protobuf.internal import builder as _builder | ||
# @@protoc_insertion_point(imports) | ||
|
||
_sym_db = _symbol_database.Default() | ||
|
||
|
||
from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 | ||
|
||
|
||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n8buf/validate/conformance/cases/ignore_empty_proto3.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\"7\n\x17IgnoreEmptyProto3Scalar\x12\x1c\n\x03val\x18\x01 \x01(\x05\x42\n\xbaH\x07\x1a\x02 \x00\xd0\x01\x01R\x03val\"L\n\x1fIgnoreEmptyProto3OptionalScalar\x12!\n\x03val\x18\x01 \x01(\x05\x42\n\xbaH\x07\x1a\x02 \x00\xd0\x01\x01H\x00R\x03val\x88\x01\x01\x42\x06\n\x04_val\"\xd4\x01\n\x18IgnoreEmptyProto3Message\x12\x96\x01\n\x03val\x18\x01 \x01(\x0b\x32<.buf.validate.conformance.cases.IgnoreEmptyProto3Message.MsgBA\xbaH>\xba\x01\x38\n\x1bignore_empty.proto3.message\x12\x06\x66oobar\x1a\x11this.val == \'foo\'\xd0\x01\x01H\x00R\x03val\x88\x01\x01\x1a\x17\n\x03Msg\x12\x10\n\x03val\x18\x01 \x01(\tR\x03valB\x06\n\x04_val\"=\n\x16IgnoreEmptyProto3Oneof\x12\x1e\n\x03val\x18\x01 \x01(\x05\x42\n\xbaH\x07\x1a\x02 \x00\xd0\x01\x01H\x00R\x03valB\x03\n\x01o\":\n\x19IgnoreEmptyProto3Repeated\x12\x1d\n\x03val\x18\x01 \x03(\x05\x42\x0b\xbaH\x08\x92\x01\x02\x08\x03\xd0\x01\x01R\x03val\"\xac\x01\n\x14IgnoreEmptyProto3Map\x12\\\n\x03val\x18\x01 \x03(\x0b\x32=.buf.validate.conformance.cases.IgnoreEmptyProto3Map.ValEntryB\x0b\xbaH\x08\x9a\x01\x02\x08\x03\xd0\x01\x01R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\"=\n\x18IgnoreEmptyRepeatedItems\x12!\n\x03val\x18\x01 \x03(\x05\x42\x0f\xbaH\x0c\x92\x01\t\"\x07\x1a\x02 \x00\xd0\x01\x01R\x03val\"\xb7\x01\n\x13IgnoreEmptyMapPairs\x12h\n\x03val\x18\x01 \x03(\x0b\x32<.buf.validate.conformance.cases.IgnoreEmptyMapPairs.ValEntryB\x18\xbaH\x15\x9a\x01\x12\"\x07r\x02\x10\x03\xd0\x01\x01*\x07\x1a\x02 \x00\xd0\x01\x01R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\x62\x06proto3') | ||
|
||
_globals = globals() | ||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) | ||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'buf.validate.conformance.cases.ignore_empty_proto3_pb2', _globals) | ||
if _descriptor._USE_C_DESCRIPTORS == False: | ||
|
||
DESCRIPTOR._options = None | ||
_IGNOREEMPTYPROTO3SCALAR.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO3SCALAR.fields_by_name['val']._serialized_options = b'\272H\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYPROTO3OPTIONALSCALAR.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO3OPTIONALSCALAR.fields_by_name['val']._serialized_options = b'\272H\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYPROTO3MESSAGE.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO3MESSAGE.fields_by_name['val']._serialized_options = b'\272H>\272\0018\n\033ignore_empty.proto3.message\022\006foobar\032\021this.val == \'foo\'\320\001\001' | ||
_IGNOREEMPTYPROTO3ONEOF.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO3ONEOF.fields_by_name['val']._serialized_options = b'\272H\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYPROTO3REPEATED.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO3REPEATED.fields_by_name['val']._serialized_options = b'\272H\010\222\001\002\010\003\320\001\001' | ||
_IGNOREEMPTYPROTO3MAP_VALENTRY._options = None | ||
_IGNOREEMPTYPROTO3MAP_VALENTRY._serialized_options = b'8\001' | ||
_IGNOREEMPTYPROTO3MAP.fields_by_name['val']._options = None | ||
_IGNOREEMPTYPROTO3MAP.fields_by_name['val']._serialized_options = b'\272H\010\232\001\002\010\003\320\001\001' | ||
_IGNOREEMPTYREPEATEDITEMS.fields_by_name['val']._options = None | ||
_IGNOREEMPTYREPEATEDITEMS.fields_by_name['val']._serialized_options = b'\272H\014\222\001\t\"\007\032\002 \000\320\001\001' | ||
_IGNOREEMPTYMAPPAIRS_VALENTRY._options = None | ||
_IGNOREEMPTYMAPPAIRS_VALENTRY._serialized_options = b'8\001' | ||
_IGNOREEMPTYMAPPAIRS.fields_by_name['val']._options = None | ||
_IGNOREEMPTYMAPPAIRS.fields_by_name['val']._serialized_options = b'\272H\025\232\001\022\"\007r\002\020\003\320\001\001*\007\032\002 \000\320\001\001' | ||
_globals['_IGNOREEMPTYPROTO3SCALAR']._serialized_start=121 | ||
_globals['_IGNOREEMPTYPROTO3SCALAR']._serialized_end=176 | ||
_globals['_IGNOREEMPTYPROTO3OPTIONALSCALAR']._serialized_start=178 | ||
_globals['_IGNOREEMPTYPROTO3OPTIONALSCALAR']._serialized_end=254 | ||
_globals['_IGNOREEMPTYPROTO3MESSAGE']._serialized_start=257 | ||
_globals['_IGNOREEMPTYPROTO3MESSAGE']._serialized_end=469 | ||
_globals['_IGNOREEMPTYPROTO3MESSAGE_MSG']._serialized_start=438 | ||
_globals['_IGNOREEMPTYPROTO3MESSAGE_MSG']._serialized_end=461 | ||
_globals['_IGNOREEMPTYPROTO3ONEOF']._serialized_start=471 | ||
_globals['_IGNOREEMPTYPROTO3ONEOF']._serialized_end=532 | ||
_globals['_IGNOREEMPTYPROTO3REPEATED']._serialized_start=534 | ||
_globals['_IGNOREEMPTYPROTO3REPEATED']._serialized_end=592 | ||
_globals['_IGNOREEMPTYPROTO3MAP']._serialized_start=595 | ||
_globals['_IGNOREEMPTYPROTO3MAP']._serialized_end=767 | ||
_globals['_IGNOREEMPTYPROTO3MAP_VALENTRY']._serialized_start=713 | ||
_globals['_IGNOREEMPTYPROTO3MAP_VALENTRY']._serialized_end=767 | ||
_globals['_IGNOREEMPTYREPEATEDITEMS']._serialized_start=769 | ||
_globals['_IGNOREEMPTYREPEATEDITEMS']._serialized_end=830 | ||
_globals['_IGNOREEMPTYMAPPAIRS']._serialized_start=833 | ||
_globals['_IGNOREEMPTYMAPPAIRS']._serialized_end=1016 | ||
_globals['_IGNOREEMPTYMAPPAIRS_VALENTRY']._serialized_start=962 | ||
_globals['_IGNOREEMPTYMAPPAIRS_VALENTRY']._serialized_end=1016 | ||
# @@protoc_insertion_point(module_scope) |
88 changes: 88 additions & 0 deletions
88
gen/buf/validate/conformance/cases/ignore_empty_proto3_pb2.pyi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
# Copyright 2023 Buf Technologies, Inc. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
from buf.validate import validate_pb2 as _validate_pb2 | ||
from google.protobuf.internal import containers as _containers | ||
from google.protobuf import descriptor as _descriptor | ||
from google.protobuf import message as _message | ||
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union | ||
|
||
DESCRIPTOR: _descriptor.FileDescriptor | ||
|
||
class IgnoreEmptyProto3Scalar(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: int | ||
def __init__(self, val: _Optional[int] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto3OptionalScalar(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: int | ||
def __init__(self, val: _Optional[int] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto3Message(_message.Message): | ||
__slots__ = ["val"] | ||
class Msg(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: str | ||
def __init__(self, val: _Optional[str] = ...) -> None: ... | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: IgnoreEmptyProto3Message.Msg | ||
def __init__(self, val: _Optional[_Union[IgnoreEmptyProto3Message.Msg, _Mapping]] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto3Oneof(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: int | ||
def __init__(self, val: _Optional[int] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto3Repeated(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: _containers.RepeatedScalarFieldContainer[int] | ||
def __init__(self, val: _Optional[_Iterable[int]] = ...) -> None: ... | ||
|
||
class IgnoreEmptyProto3Map(_message.Message): | ||
__slots__ = ["val"] | ||
class ValEntry(_message.Message): | ||
__slots__ = ["key", "value"] | ||
KEY_FIELD_NUMBER: _ClassVar[int] | ||
VALUE_FIELD_NUMBER: _ClassVar[int] | ||
key: int | ||
value: int | ||
def __init__(self, key: _Optional[int] = ..., value: _Optional[int] = ...) -> None: ... | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: _containers.ScalarMap[int, int] | ||
def __init__(self, val: _Optional[_Mapping[int, int]] = ...) -> None: ... | ||
|
||
class IgnoreEmptyRepeatedItems(_message.Message): | ||
__slots__ = ["val"] | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: _containers.RepeatedScalarFieldContainer[int] | ||
def __init__(self, val: _Optional[_Iterable[int]] = ...) -> None: ... | ||
|
||
class IgnoreEmptyMapPairs(_message.Message): | ||
__slots__ = ["val"] | ||
class ValEntry(_message.Message): | ||
__slots__ = ["key", "value"] | ||
KEY_FIELD_NUMBER: _ClassVar[int] | ||
VALUE_FIELD_NUMBER: _ClassVar[int] | ||
key: str | ||
value: int | ||
def __init__(self, key: _Optional[str] = ..., value: _Optional[int] = ...) -> None: ... | ||
VAL_FIELD_NUMBER: _ClassVar[int] | ||
val: _containers.ScalarMap[str, int] | ||
def __init__(self, val: _Optional[_Mapping[str, int]] = ...) -> None: ... |
Oops, something went wrong.