From 9abc6f48f23c87b9771dca3c96b4f6af39620a50 Mon Sep 17 00:00:00 2001 From: Dov Shlachter Date: Mon, 7 Mar 2022 16:09:34 -0800 Subject: [PATCH 1/2] feat: expose extra fields in ExtendedOperation (#351) The operation wrapped by ExtendedOperation may define other fields or methods that the user may wish to use. --- google/api_core/extended_operation.py | 3 +++ tests/unit/test_extended_operation.py | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/google/api_core/extended_operation.py b/google/api_core/extended_operation.py index 209f1213..cabae107 100644 --- a/google/api_core/extended_operation.py +++ b/google/api_core/extended_operation.py @@ -111,6 +111,9 @@ def error_code(self): def error_message(self): return self._extended_operation.error_message + def __getattr__(self, name): + return getattr(self._extended_operation, name) + def done(self, retry=polling.DEFAULT_RETRY): self._refresh_and_update(retry) return self._extended_operation.done diff --git a/tests/unit/test_extended_operation.py b/tests/unit/test_extended_operation.py index 7fcebed8..9521fde8 100644 --- a/tests/unit/test_extended_operation.py +++ b/tests/unit/test_extended_operation.py @@ -37,6 +37,7 @@ class StatusCode(enum.Enum): status: StatusCode error_code: typing.Optional[int] = None error_message: typing.Optional[str] = None + armor_class: typing.Optional[int] = None # Note: in generated clients, this property must be generated for each # extended operation message type. @@ -180,3 +181,23 @@ def test_error(): with pytest.raises(exceptions.GoogleAPICallError): ex_op.result() + + +def test_pass_through(): + responses = [ + CustomOperation( + name=TEST_OPERATION_NAME, + status=CustomOperation.StatusCode.PENDING, + armor_class=10, + ), + CustomOperation( + name=TEST_OPERATION_NAME, + status=CustomOperation.StatusCode.DONE, + armor_class=20, + ), + ] + ex_op, _, _ = make_extended_operation(responses) + + assert ex_op.armor_class == 10 + ex_op.result() + assert ex_op.armor_class == 20 From ea41551806f76c6737747f9e4864525b03746682 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 8 Mar 2022 10:15:47 -0800 Subject: [PATCH 2/2] chore(main): release 2.7.0 (#353) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ google/api_core/version.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b70b67ed..d7964273 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://pypi.org/project/google-api-core/#history +## [2.7.0](https://github.com/googleapis/python-api-core/compare/v2.6.1...v2.7.0) (2022-03-08) + + +### Features + +* expose extra fields in ExtendedOperation ([#351](https://github.com/googleapis/python-api-core/issues/351)) ([9abc6f4](https://github.com/googleapis/python-api-core/commit/9abc6f48f23c87b9771dca3c96b4f6af39620a50)) + ### [2.6.1](https://github.com/googleapis/python-api-core/compare/v2.6.0...v2.6.1) (2022-03-05) diff --git a/google/api_core/version.py b/google/api_core/version.py index 410cd066..d962613e 100644 --- a/google/api_core/version.py +++ b/google/api_core/version.py @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2.6.1" +__version__ = "2.7.0"