diff options
| author | John L. Villalovos <john@sodarock.com> | 2022-02-01 09:53:21 -0800 |
|---|---|---|
| committer | John L. Villalovos <john@sodarock.com> | 2022-02-01 09:53:21 -0800 |
| commit | 0841a2a686c6808e2f3f90960e529b26c26b268f (patch) | |
| tree | 8d979a04acc1ff327b6cb58f96878290d5e27f3b /gitlab | |
| parent | 7646360d6b622b1008917116dc4f64ced32f4057 (diff) | |
| download | gitlab-0841a2a686c6808e2f3f90960e529b26c26b268f.tar.gz | |
fix: remove custom `delete` method for labels
The usage of deleting was incorrect according to the current API.
Remove custom `delete()` method as not needed.
Add tests to show it works with labels needing to be encoded.
Also enable the test_group_labels() test function. Previously it was
disabled.
Add ability to do a `get()` for group labels.
Closes: #1867
Diffstat (limited to 'gitlab')
| -rw-r--r-- | gitlab/v4/objects/labels.py | 48 |
1 files changed, 7 insertions, 41 deletions
diff --git a/gitlab/v4/objects/labels.py b/gitlab/v4/objects/labels.py index f899852..165bdb9 100644 --- a/gitlab/v4/objects/labels.py +++ b/gitlab/v4/objects/labels.py @@ -1,11 +1,10 @@ -from typing import Any, cast, Dict, Optional, TYPE_CHECKING, Union +from typing import Any, cast, Dict, Optional, Union from gitlab import exceptions as exc from gitlab.base import RequiredOptional, RESTManager, RESTObject from gitlab.mixins import ( CreateMixin, DeleteMixin, - ListMixin, ObjectDeleteMixin, PromoteMixin, RetrieveMixin, @@ -47,7 +46,9 @@ class GroupLabel(SubscribableMixin, SaveMixin, ObjectDeleteMixin, RESTObject): self._update_attrs(server_data) -class GroupLabelManager(ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager): +class GroupLabelManager( + RetrieveMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): _path = "/groups/{group_id}/labels" _obj_cls = GroupLabel _from_parent_attrs = {"group_id": "id"} @@ -58,6 +59,9 @@ class GroupLabelManager(ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTMa required=("name",), optional=("new_name", "color", "description", "priority") ) + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GroupLabel: + return cast(GroupLabel, super().get(id=id, lazy=lazy, **kwargs)) + # Update without ID. # NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore # type error @@ -78,25 +82,6 @@ class GroupLabelManager(ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTMa new_data["name"] = name return super().update(id=None, new_data=new_data, **kwargs) - # Delete without ID. - @exc.on_http_error(exc.GitlabDeleteError) - # NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore - # type error - def delete(self, name: str, **kwargs: Any) -> None: # type: ignore - """Delete a Label on the server. - - Args: - name: The name of the label - **kwargs: Extra options to send to the server (e.g. sudo) - - Raises: - GitlabAuthenticationError: If authentication is not correct - GitlabDeleteError: If the server cannot perform the request - """ - if TYPE_CHECKING: - assert self.path is not None - self.gitlab.http_delete(self.path, query_data={"name": name}, **kwargs) - class ProjectLabel( PromoteMixin, SubscribableMixin, SaveMixin, ObjectDeleteMixin, RESTObject @@ -162,22 +147,3 @@ class ProjectLabelManager( if name: new_data["name"] = name return super().update(id=None, new_data=new_data, **kwargs) - - # Delete without ID. - @exc.on_http_error(exc.GitlabDeleteError) - # NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore - # type error - def delete(self, name: str, **kwargs: Any) -> None: # type: ignore - """Delete a Label on the server. - - Args: - name: The name of the label - **kwargs: Extra options to send to the server (e.g. sudo) - - Raises: - GitlabAuthenticationError: If authentication is not correct - GitlabDeleteError: If the server cannot perform the request - """ - if TYPE_CHECKING: - assert self.path is not None - self.gitlab.http_delete(self.path, query_data={"name": name}, **kwargs) |
