Support deprecated message and fields (#126)
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							beafc812ff
						
					
				
				
					commit
					0cd9510b54
				
			| @@ -33,6 +33,7 @@ import re | ||||
| from dataclasses import dataclass | ||||
| from dataclasses import field | ||||
| from typing import ( | ||||
|     Iterator, | ||||
|     Union, | ||||
|     Type, | ||||
|     List, | ||||
| @@ -249,6 +250,13 @@ class OutputTemplate: | ||||
|         """ | ||||
|         return [f.name for f in self.input_files] | ||||
|  | ||||
|     @property | ||||
|     def python_module_imports(self) -> Set[str]: | ||||
|         imports = set() | ||||
|         if any(x for x in self.messages if any(x.deprecated_fields)): | ||||
|             imports.add("warnings") | ||||
|         return imports | ||||
|  | ||||
|  | ||||
| @dataclass | ||||
| class MessageCompiler(ProtoContentBase): | ||||
| @@ -261,6 +269,7 @@ class MessageCompiler(ProtoContentBase): | ||||
|     fields: List[Union["FieldCompiler", "MessageCompiler"]] = field( | ||||
|         default_factory=list | ||||
|     ) | ||||
|     deprecated: bool = field(default=False, init=False) | ||||
|  | ||||
|     def __post_init__(self): | ||||
|         # Add message to output file | ||||
| @@ -269,6 +278,7 @@ class MessageCompiler(ProtoContentBase): | ||||
|                 self.output_file.enums.append(self) | ||||
|             else: | ||||
|                 self.output_file.messages.append(self) | ||||
|         self.deprecated = self.proto_obj.options.deprecated | ||||
|         super().__post_init__() | ||||
|  | ||||
|     @property | ||||
| @@ -285,6 +295,12 @@ class MessageCompiler(ProtoContentBase): | ||||
|             return f"List[{self.py_name}]" | ||||
|         return self.py_name | ||||
|  | ||||
|     @property | ||||
|     def deprecated_fields(self) -> Iterator[str]: | ||||
|         for f in self.fields: | ||||
|             if f.deprecated: | ||||
|                 yield f.py_name | ||||
|  | ||||
|  | ||||
| def is_map( | ||||
|     proto_field_obj: FieldDescriptorProto, parent_message: DescriptorProto | ||||
|   | ||||
		Reference in New Issue
	
	Block a user