Skip to content

Commit

Permalink
fix: dir(proto.Message) does not raise (#302)
Browse files Browse the repository at this point in the history
dir(proto.Message) defaults to dir(type)
  • Loading branch information
software-dov authored Feb 17, 2022
1 parent 71591e1 commit 80dcce9
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 17 deletions.
37 changes: 20 additions & 17 deletions proto/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,25 +274,28 @@ def meta(cls):
return cls._meta

def __dir__(self):
names = set(dir(type))
names.update(
(
"meta",
"pb",
"wrap",
"serialize",
"deserialize",
"to_json",
"from_json",
"to_dict",
"copy_from",
try:
names = set(dir(type))
names.update(
(
"meta",
"pb",
"wrap",
"serialize",
"deserialize",
"to_json",
"from_json",
"to_dict",
"copy_from",
)
)
)
desc = self.pb().DESCRIPTOR
names.update(t.name for t in desc.nested_types)
names.update(e.name for e in desc.enum_types)
desc = self.pb().DESCRIPTOR
names.update(t.name for t in desc.nested_types)
names.update(e.name for e in desc.enum_types)

return names
return names
except AttributeError:
return dir(type)

def pb(cls, obj=None, *, coerce: bool = False):
"""Return the underlying protobuf Message class or instance.
Expand Down
4 changes: 4 additions & 0 deletions tests/test_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,3 +415,7 @@ class Arm(proto.Message):

actual = set(dir(Mollusc))
assert actual == expected


def test_dir_message_base():
assert set(dir(proto.Message)) == set(dir(type))

0 comments on commit 80dcce9

Please sign in to comment.