1+ from typing import Any , cast , Dict , Optional , TYPE_CHECKING , Union
2+
13from gitlab import exceptions as exc
24from gitlab import types
35from 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
4653class 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
0 commit comments