diff options
| author | Nejc Habjan <nejc.habjan@siemens.com> | 2022-02-01 19:10:30 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-01 19:10:30 +0100 |
| commit | 0ab0fc13acaa495459e41546dc23bbc7cfdb3c4b (patch) | |
| tree | 8d979a04acc1ff327b6cb58f96878290d5e27f3b | |
| parent | 7646360d6b622b1008917116dc4f64ced32f4057 (diff) | |
| parent | 0841a2a686c6808e2f3f90960e529b26c26b268f (diff) | |
| download | gitlab-0ab0fc13acaa495459e41546dc23bbc7cfdb3c4b.tar.gz | |
Merge pull request #1868 from python-gitlab/jlvillal/delete_label
fix: remove custom `delete` method for labels
| -rw-r--r-- | gitlab/v4/objects/labels.py | 48 | ||||
| -rw-r--r-- | tests/functional/api/test_groups.py | 7 | ||||
| -rw-r--r-- | tests/functional/api/test_projects.py | 6 |
3 files changed, 17 insertions, 44 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) diff --git a/tests/functional/api/test_groups.py b/tests/functional/api/test_groups.py index b613055..6525a5b 100644 --- a/tests/functional/api/test_groups.py +++ b/tests/functional/api/test_groups.py @@ -104,7 +104,6 @@ def test_groups(gl): group2.members.delete(gl.user.id) -@pytest.mark.skip(reason="Commented out in legacy test") def test_group_labels(group): group.labels.create({"name": "foo", "description": "bar", "color": "#112233"}) label = group.labels.get("foo") @@ -116,6 +115,12 @@ def test_group_labels(group): assert label.description == "baz" assert len(group.labels.list()) == 1 + label.new_name = "Label:that requires:encoding" + label.save() + assert label.name == "Label:that requires:encoding" + label = group.labels.get("Label:that requires:encoding") + assert label.name == "Label:that requires:encoding" + label.delete() assert len(group.labels.list()) == 0 diff --git a/tests/functional/api/test_projects.py b/tests/functional/api/test_projects.py index 44241d4..a66e368 100644 --- a/tests/functional/api/test_projects.py +++ b/tests/functional/api/test_projects.py @@ -146,9 +146,11 @@ def test_project_labels(project): label = project.labels.get("label") assert label == labels[0] - label.new_name = "labelupdated" + label.new_name = "Label:that requires:encoding" label.save() - assert label.name == "labelupdated" + assert label.name == "Label:that requires:encoding" + label = project.labels.get("Label:that requires:encoding") + assert label.name == "Label:that requires:encoding" label.subscribe() assert label.subscribed is True |
