31
31
32
32
import builtins
33
33
import re
34
+ from collections .abc import Iterable , Iterator
34
35
from dataclasses import (
35
36
dataclass ,
36
37
field ,
37
38
)
38
39
from typing import (
39
- Dict ,
40
- Iterable ,
41
- Iterator ,
42
- List ,
43
- Set ,
44
- Type ,
45
40
Union ,
46
41
)
47
42
145
140
146
141
def get_comment (
147
142
proto_file : "FileDescriptorProto" ,
148
- path : List [int ],
143
+ path : list [int ],
149
144
) -> str :
150
145
for sci_loc in proto_file .source_code_info .location :
151
146
if list (sci_loc .path ) == path :
@@ -181,10 +176,10 @@ class ProtoContentBase:
181
176
182
177
source_file : FileDescriptorProto
183
178
typing_compiler : TypingCompiler
184
- path : List [int ]
179
+ path : list [int ]
185
180
parent : Union ["betterproto2.Message" , "OutputTemplate" ]
186
181
187
- __dataclass_fields__ : Dict [str , object ]
182
+ __dataclass_fields__ : dict [str , object ]
188
183
189
184
def __post_init__ (self ) -> None :
190
185
"""Checks that no fake default fields were left as placeholders."""
@@ -224,10 +219,10 @@ def deprecated(self) -> bool:
224
219
@dataclass
225
220
class PluginRequestCompiler :
226
221
plugin_request_obj : CodeGeneratorRequest
227
- output_packages : Dict [str , "OutputTemplate" ] = field (default_factory = dict )
222
+ output_packages : dict [str , "OutputTemplate" ] = field (default_factory = dict )
228
223
229
224
@property
230
- def all_messages (self ) -> List ["MessageCompiler" ]:
225
+ def all_messages (self ) -> list ["MessageCompiler" ]:
231
226
"""All of the messages in this request.
232
227
233
228
Returns
@@ -249,11 +244,11 @@ class OutputTemplate:
249
244
250
245
parent_request : PluginRequestCompiler
251
246
package_proto_obj : FileDescriptorProto
252
- input_files : List [str ] = field (default_factory = list )
253
- imports_end : Set [str ] = field (default_factory = set )
254
- messages : Dict [str , "MessageCompiler" ] = field (default_factory = dict )
255
- enums : Dict [str , "EnumDefinitionCompiler" ] = field (default_factory = dict )
256
- services : Dict [str , "ServiceCompiler" ] = field (default_factory = dict )
247
+ input_files : list [str ] = field (default_factory = list )
248
+ imports_end : set [str ] = field (default_factory = set )
249
+ messages : dict [str , "MessageCompiler" ] = field (default_factory = dict )
250
+ enums : dict [str , "EnumDefinitionCompiler" ] = field (default_factory = dict )
251
+ services : dict [str , "ServiceCompiler" ] = field (default_factory = dict )
257
252
pydantic_dataclasses : bool = False
258
253
output : bool = True
259
254
typing_compiler : TypingCompiler = field (default_factory = DirectImportTypingCompiler )
@@ -289,9 +284,9 @@ class MessageCompiler(ProtoContentBase):
289
284
typing_compiler : TypingCompiler
290
285
parent : Union ["MessageCompiler" , OutputTemplate ] = PLACEHOLDER
291
286
proto_obj : DescriptorProto = PLACEHOLDER
292
- path : List [int ] = PLACEHOLDER
293
- fields : List [Union ["FieldCompiler" , "MessageCompiler" ]] = field (default_factory = list )
294
- builtins_types : Set [str ] = field (default_factory = set )
287
+ path : list [int ] = PLACEHOLDER
288
+ fields : list [Union ["FieldCompiler" , "MessageCompiler" ]] = field (default_factory = list )
289
+ builtins_types : set [str ] = field (default_factory = set )
295
290
296
291
def __post_init__ (self ) -> None :
297
292
# Add message to output file
@@ -327,11 +322,9 @@ def has_oneof_fields(self) -> bool:
327
322
@property
328
323
def has_message_field (self ) -> bool :
329
324
return any (
330
- (
331
- field .proto_obj .type in PROTO_MESSAGE_TYPES
332
- for field in self .fields
333
- if isinstance (field .proto_obj , FieldDescriptorProto )
334
- )
325
+ field .proto_obj .type in PROTO_MESSAGE_TYPES
326
+ for field in self .fields
327
+ if isinstance (field .proto_obj , FieldDescriptorProto )
335
328
)
336
329
337
330
@@ -373,8 +366,8 @@ def is_oneof(proto_field_obj: FieldDescriptorProto) -> bool:
373
366
class FieldCompiler (ProtoContentBase ):
374
367
source_file : FileDescriptorProto
375
368
typing_compiler : TypingCompiler
376
- path : List [int ] = PLACEHOLDER
377
- builtins_types : Set [str ] = field (default_factory = set )
369
+ path : list [int ] = PLACEHOLDER
370
+ builtins_types : set [str ] = field (default_factory = set )
378
371
379
372
parent : MessageCompiler = PLACEHOLDER
380
373
proto_obj : FieldDescriptorProto = PLACEHOLDER
@@ -395,7 +388,7 @@ def get_field_string(self) -> str:
395
388
return f'{ name } : "{ self .annotation } " = { betterproto_field_type } '
396
389
397
390
@property
398
- def betterproto_field_args (self ) -> List [str ]:
391
+ def betterproto_field_args (self ) -> list [str ]:
399
392
args = []
400
393
if self .field_wraps :
401
394
args .append (f"wraps={ self .field_wraps } " )
@@ -499,7 +492,7 @@ def optional(self) -> bool:
499
492
return True
500
493
501
494
@property
502
- def betterproto_field_args (self ) -> List [str ]:
495
+ def betterproto_field_args (self ) -> list [str ]:
503
496
args = super ().betterproto_field_args
504
497
group = self .parent .proto_obj .oneof_decl [self .proto_obj .oneof_index ].name
505
498
args .append (f'group="{ group } "' )
@@ -508,8 +501,8 @@ def betterproto_field_args(self) -> List[str]:
508
501
509
502
@dataclass
510
503
class MapEntryCompiler (FieldCompiler ):
511
- py_k_type : Type | None = None
512
- py_v_type : Type | None = None
504
+ py_k_type : type | None = None
505
+ py_v_type : type | None = None
513
506
proto_k_type : str = ""
514
507
proto_v_type : str = ""
515
508
@@ -547,7 +540,7 @@ def ready(self) -> None:
547
540
raise ValueError ("can't find enum" )
548
541
549
542
@property
550
- def betterproto_field_args (self ) -> List [str ]:
543
+ def betterproto_field_args (self ) -> list [str ]:
551
544
return [f"betterproto2.{ self .proto_k_type } " , f"betterproto2.{ self .proto_v_type } " ]
552
545
553
546
@property
@@ -568,7 +561,7 @@ class EnumDefinitionCompiler(MessageCompiler):
568
561
"""Representation of a proto Enum definition."""
569
562
570
563
proto_obj : EnumDescriptorProto = PLACEHOLDER
571
- entries : List ["EnumDefinitionCompiler.EnumEntry" ] = PLACEHOLDER
564
+ entries : list ["EnumDefinitionCompiler.EnumEntry" ] = PLACEHOLDER
572
565
573
566
@dataclass (unsafe_hash = True )
574
567
class EnumEntry :
@@ -596,8 +589,8 @@ class ServiceCompiler(ProtoContentBase):
596
589
source_file : FileDescriptorProto
597
590
parent : OutputTemplate = PLACEHOLDER
598
591
proto_obj : DescriptorProto = PLACEHOLDER
599
- path : List [int ] = PLACEHOLDER
600
- methods : List ["ServiceMethodCompiler" ] = field (default_factory = list )
592
+ path : list [int ] = PLACEHOLDER
593
+ methods : list ["ServiceMethodCompiler" ] = field (default_factory = list )
601
594
602
595
def __post_init__ (self ) -> None :
603
596
# Add service to output file
@@ -618,7 +611,7 @@ class ServiceMethodCompiler(ProtoContentBase):
618
611
source_file : FileDescriptorProto
619
612
parent : ServiceCompiler
620
613
proto_obj : MethodDescriptorProto
621
- path : List [int ] = PLACEHOLDER
614
+ path : list [int ] = PLACEHOLDER
622
615
623
616
def __post_init__ (self ) -> None :
624
617
# Add method to service
0 commit comments