@@ -286,7 +286,7 @@ def sub_context(self):
286286 return RuleContext (fail_fast = self ._fail_fast )
287287
288288
289- class RuleRules :
289+ class Rules :
290290 """The rules associated with a single 'rules' message."""
291291
292292 def validate (self , ctx : RuleContext , _ : message .Message ):
@@ -303,7 +303,7 @@ class CelRunner:
303303 rule_path : typing .Optional [validate_pb2 .FieldPath ] = None
304304
305305
306- class CelRuleRules ( RuleRules ):
306+ class CelRules ( Rules ):
307307 """A rule that has rules written in CEL."""
308308
309309 _cel : list [CelRunner ]
@@ -386,7 +386,7 @@ def add_rule(
386386 )
387387
388388
389- class MessageRuleRules ( CelRuleRules ):
389+ class MessageRules ( CelRules ):
390390 """Message-level rules."""
391391
392392 def validate (self , ctx : RuleContext , message : message .Message ):
@@ -420,7 +420,7 @@ def _zero_value(field: descriptor.FieldDescriptor):
420420 return _field_value_to_cel (field .default_value , field )
421421
422422
423- class FieldRuleRules ( CelRuleRules ):
423+ class FieldRules ( CelRules ):
424424 """Field-level rules."""
425425
426426 _ignore_empty = False
@@ -505,7 +505,7 @@ def validate(self, ctx: RuleContext, message: message.Message):
505505 _field_to_element (self ._field ),
506506 ],
507507 ),
508- rule = FieldRuleRules ._required_rule_path ,
508+ rule = FieldRules ._required_rule_path ,
509509 rule_value = self ._required ,
510510 rule_id = "required" ,
511511 message = "value is required" ,
@@ -534,7 +534,7 @@ def _validate_value(self, ctx: RuleContext, val: typing.Any, *, for_key: bool =
534534 pass
535535
536536
537- class AnyRuleRules ( FieldRuleRules ):
537+ class AnyRules ( FieldRules ):
538538 """Rules for an Any field."""
539539
540540 _in_rule_path : typing .ClassVar [validate_pb2 .FieldPath ] = validate_pb2 .FieldPath (
@@ -577,7 +577,7 @@ def _validate_value(self, ctx: RuleContext, value: any_pb2.Any, *, for_key: bool
577577 if value .type_url not in self ._in :
578578 ctx .add (
579579 Violation (
580- rule = AnyRuleRules ._in_rule_path ,
580+ rule = AnyRules ._in_rule_path ,
581581 rule_value = self ._in ,
582582 rule_id = "any.in" ,
583583 message = "type URL must be in the allow list" ,
@@ -587,7 +587,7 @@ def _validate_value(self, ctx: RuleContext, value: any_pb2.Any, *, for_key: bool
587587 if value .type_url in self ._not_in :
588588 ctx .add (
589589 Violation (
590- rule = AnyRuleRules ._not_in_rule_path ,
590+ rule = AnyRules ._not_in_rule_path ,
591591 rule_value = self ._not_in ,
592592 rule_id = "any.not_in" ,
593593 message = "type URL must not be in the block list" ,
@@ -596,7 +596,7 @@ def _validate_value(self, ctx: RuleContext, value: any_pb2.Any, *, for_key: bool
596596 )
597597
598598
599- class EnumRuleRules ( FieldRuleRules ):
599+ class EnumRules ( FieldRules ):
600600 """Rules for an enum field."""
601601
602602 _defined_only = False
@@ -639,18 +639,18 @@ def validate(self, ctx: RuleContext, message: message.Message):
639639 _field_to_element (self ._field ),
640640 ],
641641 ),
642- rule = EnumRuleRules ._defined_only_rule_path ,
642+ rule = EnumRules ._defined_only_rule_path ,
643643 rule_value = self ._defined_only ,
644644 rule_id = "enum.defined_only" ,
645645 message = "value must be one of the defined enum values" ,
646646 ),
647647 )
648648
649649
650- class RepeatedRuleRules ( FieldRuleRules ):
650+ class RepeatedRules ( FieldRules ):
651651 """Rules for a repeated field."""
652652
653- _item_rules : typing .Optional [FieldRuleRules ] = None
653+ _item_rules : typing .Optional [FieldRules ] = None
654654
655655 _items_rules_suffix : typing .ClassVar [list [validate_pb2 .FieldPathElement ]] = [
656656 _field_to_element (
@@ -667,7 +667,7 @@ def __init__(
667667 funcs : dict [str , celpy .CELFunction ],
668668 field : descriptor .FieldDescriptor ,
669669 field_level : validate_pb2 .FieldRules ,
670- item_rules : typing .Optional [FieldRuleRules ],
670+ item_rules : typing .Optional [FieldRules ],
671671 ):
672672 super ().__init__ (env , funcs , field , field_level )
673673 if item_rules is not None :
@@ -688,17 +688,17 @@ def validate(self, ctx: RuleContext, message: message.Message):
688688 element = _field_to_element (self ._field )
689689 element .index = i
690690 sub_ctx .add_field_path_element (element )
691- sub_ctx .add_rule_path_elements (RepeatedRuleRules ._items_rules_suffix )
691+ sub_ctx .add_rule_path_elements (RepeatedRules ._items_rules_suffix )
692692 ctx .add_errors (sub_ctx )
693693 if ctx .done :
694694 return
695695
696696
697- class MapRuleRules ( FieldRuleRules ):
697+ class MapRules ( FieldRules ):
698698 """Rules for a map field."""
699699
700- _key_rules : typing .Optional [FieldRuleRules ] = None
701- _value_rules : typing .Optional [FieldRuleRules ] = None
700+ _key_rules : typing .Optional [FieldRules ] = None
701+ _value_rules : typing .Optional [FieldRules ] = None
702702
703703 _key_rules_suffix : typing .ClassVar [list [validate_pb2 .FieldPathElement ]] = [
704704 _field_to_element (validate_pb2 .MapRules .DESCRIPTOR .fields_by_number [validate_pb2 .MapRules .KEYS_FIELD_NUMBER ]),
@@ -720,8 +720,8 @@ def __init__(
720720 funcs : dict [str , celpy .CELFunction ],
721721 field : descriptor .FieldDescriptor ,
722722 field_level : validate_pb2 .FieldRules ,
723- key_rules : typing .Optional [FieldRuleRules ],
724- value_rules : typing .Optional [FieldRuleRules ],
723+ key_rules : typing .Optional [FieldRules ],
724+ value_rules : typing .Optional [FieldRules ],
725725 ):
726726 super ().__init__ (env , funcs , field , field_level )
727727 if key_rules is not None :
@@ -740,13 +740,13 @@ def validate(self, ctx: RuleContext, message: message.Message):
740740 if not self ._key_rules ._ignore_empty or k :
741741 self ._key_rules .validate_item (key_ctx , k , for_key = True )
742742 if key_ctx .has_errors ():
743- key_ctx .add_rule_path_elements (MapRuleRules ._key_rules_suffix )
743+ key_ctx .add_rule_path_elements (MapRules ._key_rules_suffix )
744744 map_ctx = ctx .sub_context ()
745745 if self ._value_rules is not None :
746746 if not self ._value_rules ._ignore_empty or v :
747747 self ._value_rules .validate_item (map_ctx , v )
748748 if map_ctx .has_errors ():
749- map_ctx .add_rule_path_elements (MapRuleRules ._value_rules_suffix )
749+ map_ctx .add_rule_path_elements (MapRules ._value_rules_suffix )
750750 map_ctx .add_errors (key_ctx )
751751 if map_ctx .has_errors ():
752752 element = _field_to_element (self ._field )
@@ -757,7 +757,7 @@ def validate(self, ctx: RuleContext, message: message.Message):
757757 ctx .add_errors (map_ctx )
758758
759759
760- class OneofRuleRules ( RuleRules ):
760+ class OneofRules ( Rules ):
761761 """Rules for a oneof definition."""
762762
763763 required = True
@@ -787,14 +787,14 @@ class RuleFactory:
787787
788788 _env : celpy .Environment
789789 _funcs : dict [str , celpy .CELFunction ]
790- _cache : dict [descriptor .Descriptor , typing .Union [list [RuleRules ], Exception ]]
790+ _cache : dict [descriptor .Descriptor , typing .Union [list [Rules ], Exception ]]
791791
792792 def __init__ (self , funcs : dict [str , celpy .CELFunction ]):
793793 self ._env = celpy .Environment (runner_class = InterpretedRunner )
794794 self ._funcs = funcs
795795 self ._cache = {}
796796
797- def get (self , descriptor : descriptor .Descriptor ) -> list [RuleRules ]:
797+ def get (self , descriptor : descriptor .Descriptor ) -> list [Rules ]:
798798 if descriptor not in self ._cache :
799799 try :
800800 self ._cache [descriptor ] = self ._new_rules (descriptor )
@@ -805,8 +805,8 @@ def get(self, descriptor: descriptor.Descriptor) -> list[RuleRules]:
805805 raise result
806806 return result
807807
808- def _new_message_rule (self , rules : validate_pb2 .MessageRules ) -> MessageRuleRules :
809- result = MessageRuleRules (rules )
808+ def _new_message_rule (self , rules : validate_pb2 .MessageRules ) -> MessageRules :
809+ result = MessageRules (rules )
810810 for cel in rules .cel :
811811 result .add_rule (self ._env , self ._funcs , cel )
812812 return result
@@ -822,122 +822,122 @@ def _new_scalar_field_rule(
822822 return None
823823 type_case = field_level .WhichOneof ("type" )
824824 if type_case is None :
825- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
825+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
826826 return result
827827 elif type_case == "duration" :
828828 check_field_type (field , 0 , "google.protobuf.Duration" )
829- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
829+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
830830 return result
831831 elif type_case == "timestamp" :
832832 check_field_type (field , 0 , "google.protobuf.Timestamp" )
833- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
833+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
834834 return result
835835 elif type_case == "enum" :
836836 check_field_type (field , descriptor .FieldDescriptor .TYPE_ENUM )
837- result = EnumRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
837+ result = EnumRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
838838 return result
839839 elif type_case == "bool" :
840840 check_field_type (field , descriptor .FieldDescriptor .TYPE_BOOL , "google.protobuf.BoolValue" )
841- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
841+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
842842 return result
843843 elif type_case == "bytes" :
844844 check_field_type (
845845 field ,
846846 descriptor .FieldDescriptor .TYPE_BYTES ,
847847 "google.protobuf.BytesValue" ,
848848 )
849- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
849+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
850850 return result
851851 elif type_case == "fixed32" :
852852 check_field_type (field , descriptor .FieldDescriptor .TYPE_FIXED32 )
853- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
853+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
854854 return result
855855 elif type_case == "fixed64" :
856856 check_field_type (field , descriptor .FieldDescriptor .TYPE_FIXED64 )
857- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
857+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
858858 return result
859859 elif type_case == "float" :
860860 check_field_type (
861861 field ,
862862 descriptor .FieldDescriptor .TYPE_FLOAT ,
863863 "google.protobuf.FloatValue" ,
864864 )
865- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
865+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
866866 return result
867867 elif type_case == "double" :
868868 check_field_type (
869869 field ,
870870 descriptor .FieldDescriptor .TYPE_DOUBLE ,
871871 "google.protobuf.DoubleValue" ,
872872 )
873- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
873+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
874874 return result
875875 elif type_case == "int32" :
876876 check_field_type (
877877 field ,
878878 descriptor .FieldDescriptor .TYPE_INT32 ,
879879 "google.protobuf.Int32Value" ,
880880 )
881- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
881+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
882882 return result
883883 elif type_case == "int64" :
884884 check_field_type (
885885 field ,
886886 descriptor .FieldDescriptor .TYPE_INT64 ,
887887 "google.protobuf.Int64Value" ,
888888 )
889- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
889+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
890890 return result
891891 elif type_case == "sfixed32" :
892892 check_field_type (field , descriptor .FieldDescriptor .TYPE_SFIXED32 )
893- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
893+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
894894 return result
895895 elif type_case == "sfixed64" :
896896 check_field_type (field , descriptor .FieldDescriptor .TYPE_SFIXED64 )
897- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
897+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
898898 return result
899899 elif type_case == "sint32" :
900900 check_field_type (field , descriptor .FieldDescriptor .TYPE_SINT32 )
901- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
901+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
902902 return result
903903 elif type_case == "sint64" :
904904 check_field_type (field , descriptor .FieldDescriptor .TYPE_SINT64 )
905- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
905+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
906906 return result
907907 elif type_case == "uint32" :
908908 check_field_type (
909909 field ,
910910 descriptor .FieldDescriptor .TYPE_UINT32 ,
911911 "google.protobuf.UInt32Value" ,
912912 )
913- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
913+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
914914 return result
915915 elif type_case == "uint64" :
916916 check_field_type (
917917 field ,
918918 descriptor .FieldDescriptor .TYPE_UINT64 ,
919919 "google.protobuf.UInt64Value" ,
920920 )
921- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
921+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
922922 return result
923923 elif type_case == "string" :
924924 check_field_type (
925925 field ,
926926 descriptor .FieldDescriptor .TYPE_STRING ,
927927 "google.protobuf.StringValue" ,
928928 )
929- result = FieldRuleRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
929+ result = FieldRules (self ._env , self ._funcs , field , field_level , for_items = for_items )
930930 return result
931931 elif type_case == "any" :
932932 check_field_type (field , descriptor .FieldDescriptor .TYPE_MESSAGE , "google.protobuf.Any" )
933- result = AnyRuleRules (self ._env , self ._funcs , field , field_level )
933+ result = AnyRules (self ._env , self ._funcs , field , field_level )
934934 return result
935935
936936 def _new_field_rule (
937937 self ,
938938 field : descriptor .FieldDescriptor ,
939939 rules : validate_pb2 .FieldRules ,
940- ) -> FieldRuleRules :
940+ ) -> FieldRules :
941941 if field .label != descriptor .FieldDescriptor .LABEL_REPEATED :
942942 return self ._new_scalar_field_rule (field , rules )
943943 if field .message_type is not None and field .message_type .GetOptions ().map_entry :
@@ -949,15 +949,15 @@ def _new_field_rule(
949949 if rules .map .HasField ("values" ):
950950 value_field = field .message_type .fields_by_name ["value" ]
951951 value_rules = self ._new_scalar_field_rule (value_field , rules .map .values , for_items = True )
952- return MapRuleRules (self ._env , self ._funcs , field , rules , key_rules , value_rules )
952+ return MapRules (self ._env , self ._funcs , field , rules , key_rules , value_rules )
953953 item_rule = None
954954 if rules .repeated .HasField ("items" ):
955955 item_rule = self ._new_scalar_field_rule (field , rules .repeated .items )
956- return RepeatedRuleRules (self ._env , self ._funcs , field , rules , item_rule )
956+ return RepeatedRules (self ._env , self ._funcs , field , rules , item_rule )
957957
958- def _new_rules (self , desc : descriptor .Descriptor ) -> list [RuleRules ]:
959- result : list [RuleRules ] = []
960- rule : typing .Optional [RuleRules ] = None
958+ def _new_rules (self , desc : descriptor .Descriptor ) -> list [Rules ]:
959+ result : list [Rules ] = []
960+ rule : typing .Optional [Rules ] = None
961961 if validate_pb2 .message in desc .GetOptions ().Extensions :
962962 message_level = desc .GetOptions ().Extensions [validate_pb2 .message ]
963963 if message_level .disabled :
@@ -967,7 +967,7 @@ def _new_rules(self, desc: descriptor.Descriptor) -> list[RuleRules]:
967967
968968 for oneof in desc .oneofs :
969969 if validate_pb2 .oneof in oneof .GetOptions ().Extensions :
970- if rule := OneofRuleRules (oneof , oneof .GetOptions ().Extensions [validate_pb2 .oneof ]):
970+ if rule := OneofRules (oneof , oneof .GetOptions ().Extensions [validate_pb2 .oneof ]):
971971 result .append (rule )
972972
973973 for field in desc .fields :
@@ -993,7 +993,7 @@ def _new_rules(self, desc: descriptor.Descriptor) -> list[RuleRules]:
993993 return result
994994
995995
996- class SubMsgRule (RuleRules ):
996+ class SubMsgRule (Rules ):
997997 def __init__ (
998998 self ,
999999 factory : RuleFactory ,
@@ -1018,7 +1018,7 @@ def validate(self, ctx: RuleContext, message: message.Message):
10181018 ctx .add_errors (sub_ctx )
10191019
10201020
1021- class MapValMsgRule (RuleRules ):
1021+ class MapValMsgRule (Rules ):
10221022 def __init__ (
10231023 self ,
10241024 factory : RuleFactory ,
@@ -1049,7 +1049,7 @@ def validate(self, ctx: RuleContext, message: message.Message):
10491049 ctx .add_errors (sub_ctx )
10501050
10511051
1052- class RepeatedMsgRule (RuleRules ):
1052+ class RepeatedMsgRule (Rules ):
10531053 def __init__ (
10541054 self ,
10551055 factory : RuleFactory ,
0 commit comments