Skip to content

Commit be9a141

Browse files
author
Steve Ayers
committed
Feedback
1 parent b7e1cfa commit be9a141

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

protovalidate/internal/rules.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,30 @@ def unwrap(msg: message.Message) -> celtypes.Value:
5858
}
5959

6060

61+
class MessageType(celtypes.MapType):
62+
msg: message.Message
63+
desc: descriptor.Descriptor
64+
65+
def __init__(self, msg: message.Message):
66+
super().__init__()
67+
self.msg = msg
68+
self.desc = msg.DESCRIPTOR
69+
field: descriptor.FieldDescriptor
70+
for field in self.desc.fields:
71+
if field.containing_oneof is not None and not self.msg.HasField(field.name):
72+
continue
73+
self[field.name] = field_to_cel(self.msg, field)
74+
75+
def __getitem__(self, name):
76+
field = self.desc.fields_by_name[name]
77+
if field.has_presence and not self.msg.HasField(name):
78+
if in_has():
79+
raise KeyError()
80+
else:
81+
return _zero_value(field)
82+
return super().__getitem__(name)
83+
84+
6185
def _msg_to_cel(msg: message.Message) -> celtypes.Value:
6286
ctor = _MSG_TYPE_URL_TO_CTOR.get(msg.DESCRIPTOR.full_name)
6387
if ctor is not None:
@@ -226,30 +250,6 @@ def _set_path_element_map_key(
226250
raise CompilationError(msg)
227251

228252

229-
class MessageType(celtypes.MapType):
230-
msg: message.Message
231-
desc: descriptor.Descriptor
232-
233-
def __init__(self, msg: message.Message):
234-
super().__init__()
235-
self.msg = msg
236-
self.desc = msg.DESCRIPTOR
237-
field: descriptor.FieldDescriptor
238-
for field in self.desc.fields:
239-
if field.containing_oneof is not None and not self.msg.HasField(field.name):
240-
continue
241-
self[field.name] = field_to_cel(self.msg, field)
242-
243-
def __getitem__(self, name):
244-
field = self.desc.fields_by_name[name]
245-
if field.has_presence and not self.msg.HasField(name):
246-
if in_has():
247-
raise KeyError()
248-
else:
249-
return _zero_value(field)
250-
return super().__getitem__(name)
251-
252-
253253
class Violation:
254254
"""A singular rule violation."""
255255

0 commit comments

Comments
 (0)