Skip to content

Commit a5e0ef9

Browse files
authored
Fixes for Python 3.9 (#140)
Fix issue in logic for evaluating field types affecting python 3.9
1 parent 8f7af27 commit a5e0ef9

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- uses: actions/checkout@v2
2424

2525
- name: Set up Python ${{ matrix.python-version }}
26-
uses: actions/setup-python@v1
26+
uses: actions/setup-python@v2
2727
with:
2828
python-version: ${{ matrix.python-version }}
2929

src/betterproto/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -920,9 +920,9 @@ def to_dict(
920920
"""
921921
output: Dict[str, Any] = {}
922922
field_types = self._type_hints()
923+
defaults = self._betterproto.default_gen
923924
for field_name, meta in self._betterproto.meta_by_field_name.items():
924-
field_type = field_types[field_name]
925-
field_is_repeated = type(field_type) is type(typing.List)
925+
field_is_repeated = defaults[field_name] is list
926926
value = getattr(self, field_name)
927927
cased_name = casing(field_name).rstrip("_") # type: ignore
928928
if meta.proto_type == TYPE_MESSAGE:
@@ -988,7 +988,7 @@ def to_dict(
988988
output[cased_name] = b64encode(value).decode("utf8")
989989
elif meta.proto_type == TYPE_ENUM:
990990
if field_is_repeated:
991-
enum_class: Type[Enum] = field_type.__args__[0]
991+
enum_class: Type[Enum] = field_types[field_name].__args__[0]
992992
if isinstance(value, typing.Iterable) and not isinstance(
993993
value, str
994994
):
@@ -997,7 +997,7 @@ def to_dict(
997997
# transparently upgrade single value to repeated
998998
output[cased_name] = [enum_class(value).name]
999999
else:
1000-
enum_class: Type[Enum] = field_type # noqa
1000+
enum_class: Type[Enum] = field_types[field_name] # noqa
10011001
output[cased_name] = enum_class(value).name
10021002
else:
10031003
output[cased_name] = value

0 commit comments

Comments
 (0)