|
|
|
@ -265,7 +265,7 @@ class Descriptor:
|
|
|
|
|
yield " }"
|
|
|
|
|
# fmt: on
|
|
|
|
|
|
|
|
|
|
def process_message(self, message):
|
|
|
|
|
def process_message(self, message, include_deprecated=False):
|
|
|
|
|
logging.debug("Processing message {}".format(message.name))
|
|
|
|
|
msg_id = self.message_types.get(message.name)
|
|
|
|
|
|
|
|
|
@ -273,6 +273,8 @@ class Descriptor:
|
|
|
|
|
yield self.protobuf_import + " as p"
|
|
|
|
|
|
|
|
|
|
fields = [ProtoField.from_field(self, field) for field in message.field]
|
|
|
|
|
if not include_deprecated:
|
|
|
|
|
fields = [field for field in fields if not field.orig.options.deprecated]
|
|
|
|
|
|
|
|
|
|
yield from self.process_subtype_imports(fields)
|
|
|
|
|
|
|
|
|
@ -331,9 +333,9 @@ class Descriptor:
|
|
|
|
|
self.enum_types[enum.name][value.name] = value.number
|
|
|
|
|
yield f"{name} = {value.number} # type: Literal[{value.number}]"
|
|
|
|
|
|
|
|
|
|
def process_messages(self, messages):
|
|
|
|
|
def process_messages(self, messages, include_deprecated=False):
|
|
|
|
|
for message in sorted(messages, key=lambda m: m.name):
|
|
|
|
|
self.write_to_file(message.name, self.process_message(message))
|
|
|
|
|
self.write_to_file(message.name, self.process_message(message, include_deprecated))
|
|
|
|
|
|
|
|
|
|
def process_enums(self, enums):
|
|
|
|
|
for enum in sorted(enums, key=lambda e: e.name):
|
|
|
|
@ -358,10 +360,10 @@ class Descriptor:
|
|
|
|
|
for enum in sorted(self.enums, key=lambda m: m.name):
|
|
|
|
|
init_py.write("from . import {}\n".format(enum.name))
|
|
|
|
|
|
|
|
|
|
def write_classes(self, out_dir, init_py=True):
|
|
|
|
|
def write_classes(self, out_dir, init_py=True, include_deprecated=False):
|
|
|
|
|
self.out_dir = out_dir
|
|
|
|
|
self.process_enums(self.enums)
|
|
|
|
|
self.process_messages(self.messages)
|
|
|
|
|
self.process_messages(self.messages, include_deprecated)
|
|
|
|
|
if init_py:
|
|
|
|
|
self.write_init_py()
|
|
|
|
|
|
|
|
|
@ -376,6 +378,7 @@ if __name__ == "__main__":
|
|
|
|
|
parser.add_argument("--message-type", default="MessageType", help="Name of enum with message IDs")
|
|
|
|
|
parser.add_argument("-I", "--protoc-include", action="append", help="protoc include path")
|
|
|
|
|
parser.add_argument("-v", "--verbose", action="store_true", help="Print debug messages")
|
|
|
|
|
parser.add_argument("-d", "--include-deprecated", action="store_true", help="Include deprecated fields")
|
|
|
|
|
# fmt: on
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
@ -387,7 +390,7 @@ if __name__ == "__main__":
|
|
|
|
|
descriptor = Descriptor(descriptor_proto, args.message_type, args.protobuf_module)
|
|
|
|
|
|
|
|
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
|
|
|
descriptor.write_classes(tmpdir, not args.no_init_py)
|
|
|
|
|
descriptor.write_classes(tmpdir, not args.no_init_py, args.include_deprecated)
|
|
|
|
|
|
|
|
|
|
for filename in os.listdir(args.out_dir):
|
|
|
|
|
pathname = os.path.join(args.out_dir, filename)
|
|
|
|
|