diff --git a/.github/release-please.yml b/.github/release-please.yml index 4507ad05..466597e5 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -1 +1,2 @@ releaseType: python +handleGHRelease: true diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml new file mode 100644 index 00000000..1e9cfcd3 --- /dev/null +++ b/.github/release-trigger.yml @@ -0,0 +1,2 @@ +enabled: true + diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 282fe7fa..eb1c51d2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: [3.6, 3.7, 3.8, 3.9] + python: ['3.6', '3.7', '3.8', '3.9', '3.10'] variant: ['', cpp] steps: - name: Cancel Previous Runs diff --git a/CHANGELOG.md b/CHANGELOG.md index ba85476f..ffc8a7c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +### [1.20.2](https://github.com/googleapis/proto-plus-python/compare/v1.20.1...v1.20.2) (2022-02-17) + + +### Bug Fixes + +* dir(proto.Message) does not raise ([#302](https://github.com/googleapis/proto-plus-python/issues/302)) ([80dcce9](https://github.com/googleapis/proto-plus-python/commit/80dcce9099e630a6217792b6b3a14213add690e6)) + ### [1.20.1](https://github.com/googleapis/proto-plus-python/compare/v1.20.0...v1.20.1) (2022-02-14) diff --git a/proto/message.py b/proto/message.py index 7293fdb5..de9280da 100644 --- a/proto/message.py +++ b/proto/message.py @@ -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. diff --git a/setup.py b/setup.py index cf76c368..109d0b90 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ from setuptools import find_packages, setup -version = "1.20.1" +version = "1.20.2" PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__)) @@ -50,6 +50,7 @@ "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Libraries :: Python Modules", ], diff --git a/tests/test_message.py b/tests/test_message.py index 843fad22..3146f0bb 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -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))