Skip to content

Commit 57cd034

Browse files
chore: add type-hints to gitlab/v4/objects/epics.py
1 parent 500895a commit 57cd034

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

gitlab/v4/objects/epics.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Any, cast, Dict, Optional, TYPE_CHECKING, Union
2+
13
from gitlab import exceptions as exc
24
from gitlab import types
35
from gitlab.base import RequiredOptional, RESTManager, RESTObject
@@ -42,11 +44,19 @@ class GroupEpicManager(CRUDMixin, RESTManager):
4244
)
4345
_types = {"labels": types.ListAttribute}
4446

47+
def get(
48+
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
49+
) -> GroupEpic:
50+
return cast(GroupEpic, super().get(id=id, lazy=lazy, **kwargs))
51+
4552

4653
class GroupEpicIssue(ObjectDeleteMixin, SaveMixin, RESTObject):
4754
_id_attr = "epic_issue_id"
55+
# Define type for 'manager' here So mypy won't complain about
56+
# 'self.manager.update()' call in the 'save' method.
57+
manager: "GroupEpicIssueManager"
4858

49-
def save(self, **kwargs):
59+
def save(self, **kwargs: Any) -> None:
5060
"""Save the changes made to the object to the server.
5161
5262
The object is updated to match what the server returns.
@@ -78,7 +88,9 @@ class GroupEpicIssueManager(
7888
_update_attrs = RequiredOptional(optional=("move_before_id", "move_after_id"))
7989

8090
@exc.on_http_error(exc.GitlabCreateError)
81-
def create(self, data, **kwargs):
91+
def create(
92+
self, data: Optional[Dict[str, Any]] = None, **kwargs: Any
93+
) -> GroupEpicIssue:
8294
"""Create a new object.
8395
8496
Args:
@@ -94,9 +106,13 @@ def create(self, data, **kwargs):
94106
RESTObject: A new instance of the manage object class build with
95107
the data sent by the server
96108
"""
109+
if TYPE_CHECKING:
110+
assert data is not None
97111
CreateMixin._check_missing_create_attrs(self, data)
98112
path = f"{self.path}/{data.pop('issue_id')}"
99113
server_data = self.gitlab.http_post(path, **kwargs)
114+
if TYPE_CHECKING:
115+
assert isinstance(server_data, dict)
100116
# The epic_issue_id attribute doesn't exist when creating the resource,
101117
# but is used everywhere elese. Let's create it to be consistent client
102118
# side

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ files = "."
1212
module = [
1313
"docs.*",
1414
"docs.ext.*",
15-
"gitlab.v4.objects.epics",
1615
"gitlab.v4.objects.files",
1716
"gitlab.v4.objects.geo_nodes",
1817
"gitlab.v4.objects.issues",

0 commit comments

Comments
 (0)