From e6258a4193a0e8d0c3cf48de15b926bebfa289f3 Mon Sep 17 00:00:00 2001 From: kernelport <30635575+kernelport@users.noreply.github.com> Date: Thu, 13 Jan 2022 14:57:42 -0800 Subject: [PATCH] feat(api): return result from `SaveMixin.save()` Return the new object data when calling `SaveMixin.save()`. Also remove check for `None` value when calling `self.manager.update()` as that method only returns a dictionary. Closes: #1081 --- gitlab/mixins.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gitlab/mixins.py b/gitlab/mixins.py index b79c29ed8..0d22b78e4 100644 --- a/gitlab/mixins.py +++ b/gitlab/mixins.py @@ -525,7 +525,7 @@ def _get_updated_data(self) -> Dict[str, Any]: return updated_data - def save(self, **kwargs: Any) -> None: + def save(self, **kwargs: Any) -> Optional[Dict[str, Any]]: """Save the changes made to the object to the server. The object is updated to match what the server returns. @@ -533,6 +533,9 @@ def save(self, **kwargs: Any) -> None: Args: **kwargs: Extra options to send to the server (e.g. sudo) + Returns: + The new object data (*not* a RESTObject) + Raise: GitlabAuthenticationError: If authentication is not correct GitlabUpdateError: If the server cannot perform the request @@ -540,15 +543,15 @@ def save(self, **kwargs: Any) -> None: updated_data = self._get_updated_data() # Nothing to update. Server fails if sent an empty dict. if not updated_data: - return + return None # call the manager obj_id = self.encoded_id if TYPE_CHECKING: assert isinstance(self.manager, UpdateMixin) server_data = self.manager.update(obj_id, updated_data, **kwargs) - if server_data is not None: - self._update_attrs(server_data) + self._update_attrs(server_data) + return server_data class ObjectDeleteMixin(_RestObjectBase):
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: