From 7354abb589f7f10b4370163a4ce18b403d6c24e0 Mon Sep 17 00:00:00 2001 From: Nat Noordanus Date: Sun, 18 Oct 2020 22:47:58 +0200 Subject: [PATCH 1/2] Make plugin use betterproto generated classes internally This means the betterproto plugin no longer needs to depend durectly on protobuf. This requires a small runtime hack to monkey patch some google types to get around the fact that the compiler uses proto2, but betterproto expects proto3. Also: - regenerate google.protobuf package - fix a regex bug in the logic for determining whether to use a google wrapper type. - fix a bug causing comments to get mixed up when multiple proto files generate code into a single python module --- tests/inputs/oneof/oneof-name.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 tests/inputs/oneof/oneof-name.json diff --git a/tests/inputs/oneof/oneof-name.json b/tests/inputs/oneof/oneof-name.json new file mode 100644 index 000000000..605484b6a --- /dev/null +++ b/tests/inputs/oneof/oneof-name.json @@ -0,0 +1,3 @@ +{ + "pitier": "Mr. T" +} From c5d490a7692b50f8a4219b3fd43dc4e46d8729f1 Mon Sep 17 00:00:00 2001 From: Nat Noordanus Date: Mon, 19 Oct 2020 18:31:37 +0200 Subject: [PATCH 2/2] Sort the list of sources in generated file headers --- src/betterproto/lib/google/protobuf/__init__.py | 2 +- src/betterproto/plugin/models.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/betterproto/lib/google/protobuf/__init__.py b/src/betterproto/lib/google/protobuf/__init__.py index d1f21f947..529b9d1a1 100644 --- a/src/betterproto/lib/google/protobuf/__init__.py +++ b/src/betterproto/lib/google/protobuf/__init__.py @@ -1,5 +1,5 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! -# sources: google/protobuf/timestamp.proto, google/protobuf/field_mask.proto, google/protobuf/source_context.proto, google/protobuf/any.proto, google/protobuf/type.proto, google/protobuf/api.proto, google/protobuf/duration.proto, google/protobuf/struct.proto, google/protobuf/wrappers.proto, google/protobuf/empty.proto, google/protobuf/descriptor.proto +# sources: google/protobuf/any.proto, google/protobuf/api.proto, google/protobuf/descriptor.proto, google/protobuf/duration.proto, google/protobuf/empty.proto, google/protobuf/field_mask.proto, google/protobuf/source_context.proto, google/protobuf/struct.proto, google/protobuf/timestamp.proto, google/protobuf/type.proto, google/protobuf/wrappers.proto # plugin: python-betterproto import warnings from dataclasses import dataclass diff --git a/src/betterproto/plugin/models.py b/src/betterproto/plugin/models.py index 4a243a39e..e0c50a53a 100644 --- a/src/betterproto/plugin/models.py +++ b/src/betterproto/plugin/models.py @@ -58,7 +58,7 @@ import re import textwrap from dataclasses import dataclass, field -from typing import Dict, Iterator, List, Optional, Set, Text, Type, Union +from typing import Dict, Iterable, Iterator, List, Optional, Set, Text, Type, Union import sys from ..casing import sanitize_name @@ -251,15 +251,15 @@ def package(self) -> str: return self.package_proto_obj.package @property - def input_filenames(self) -> List[str]: + def input_filenames(self) -> Iterable[str]: """Names of the input files used to build this output. Returns ------- - List[str] + Iterable[str] Names of the input files used to build this output. """ - return [f.name for f in self.input_files] + return sorted(f.name for f in self.input_files) @property def python_module_imports(self) -> Set[str]: