44from gitlab import exceptions as exc
55from gitlab import types
66from gitlab .base import RESTObject ,RESTObjectList
7+ from gitlab .client import GitlabList
78from gitlab .mixins import (
89CRUDMixin ,
910ObjectDeleteMixin ,
1617from .issues import GroupIssue ,GroupIssueManager ,ProjectIssue ,ProjectIssueManager
1718from .merge_requests import (
1819GroupMergeRequest ,
20+ GroupMergeRequestManager ,
1921ProjectMergeRequest ,
2022ProjectMergeRequestManager ,
2123)
@@ -33,7 +35,7 @@ class GroupMilestone(SaveMixin, ObjectDeleteMixin, RESTObject):
3335
3436@cli .register_custom_action (cls_names = "GroupMilestone" )
3537@exc .on_http_error (exc .GitlabListError )
36- def issues (self ,** kwargs :Any )-> RESTObjectList :
38+ def issues (self ,** kwargs :Any )-> RESTObjectList [ GroupIssue ] :
3739"""List issues related to this milestone.
3840
3941 Args:
@@ -53,14 +55,14 @@ def issues(self, **kwargs: Any) -> RESTObjectList:
5355path = f"{ self .manager .path } /{ self .encoded_id } /issues"
5456data_list = self .manager .gitlab .http_list (path ,iterator = True ,** kwargs )
5557if TYPE_CHECKING :
56- assert isinstance (data_list ,RESTObjectList )
58+ assert isinstance (data_list ,GitlabList )
5759manager = GroupIssueManager (self .manager .gitlab ,parent = self .manager ._parent )
5860# FIXME(gpocentek): the computed manager path is not correct
5961return RESTObjectList (manager ,GroupIssue ,data_list )
6062
6163@cli .register_custom_action (cls_names = "GroupMilestone" )
6264@exc .on_http_error (exc .GitlabListError )
63- def merge_requests (self ,** kwargs :Any )-> RESTObjectList :
65+ def merge_requests (self ,** kwargs :Any )-> RESTObjectList [ GroupMergeRequest ] :
6466"""List the merge requests related to this milestone.
6567
6668 Args:
@@ -79,8 +81,10 @@ def merge_requests(self, **kwargs: Any) -> RESTObjectList:
7981path = f"{ self .manager .path } /{ self .encoded_id } /merge_requests"
8082data_list = self .manager .gitlab .http_list (path ,iterator = True ,** kwargs )
8183if TYPE_CHECKING :
82- assert isinstance (data_list ,RESTObjectList )
83- manager = GroupIssueManager (self .manager .gitlab ,parent = self .manager ._parent )
84+ assert isinstance (data_list ,GitlabList )
85+ manager = GroupMergeRequestManager (
86+ self .manager .gitlab ,parent = self .manager ._parent
87+ )
8488# FIXME(gpocentek): the computed manager path is not correct
8589return RESTObjectList (manager ,GroupMergeRequest ,data_list )
8690
@@ -105,7 +109,7 @@ class ProjectMilestone(PromoteMixin, SaveMixin, ObjectDeleteMixin, RESTObject):
105109
106110@cli .register_custom_action (cls_names = "ProjectMilestone" )
107111@exc .on_http_error (exc .GitlabListError )
108- def issues (self ,** kwargs :Any )-> RESTObjectList :
112+ def issues (self ,** kwargs :Any )-> RESTObjectList [ ProjectIssue ] :
109113"""List issues related to this milestone.
110114
111115 Args:
@@ -125,14 +129,14 @@ def issues(self, **kwargs: Any) -> RESTObjectList:
125129path = f"{ self .manager .path } /{ self .encoded_id } /issues"
126130data_list = self .manager .gitlab .http_list (path ,iterator = True ,** kwargs )
127131if TYPE_CHECKING :
128- assert isinstance (data_list ,RESTObjectList )
132+ assert isinstance (data_list ,GitlabList )
129133manager = ProjectIssueManager (self .manager .gitlab ,parent = self .manager ._parent )
130134# FIXME(gpocentek): the computed manager path is not correct
131135return RESTObjectList (manager ,ProjectIssue ,data_list )
132136
133137@cli .register_custom_action (cls_names = "ProjectMilestone" )
134138@exc .on_http_error (exc .GitlabListError )
135- def merge_requests (self ,** kwargs :Any )-> RESTObjectList :
139+ def merge_requests (self ,** kwargs :Any )-> RESTObjectList [ ProjectMergeRequest ] :
136140"""List the merge requests related to this milestone.
137141
138142 Args:
@@ -151,7 +155,7 @@ def merge_requests(self, **kwargs: Any) -> RESTObjectList:
151155path = f"{ self .manager .path } /{ self .encoded_id } /merge_requests"
152156data_list = self .manager .gitlab .http_list (path ,iterator = True ,** kwargs )
153157if TYPE_CHECKING :
154- assert isinstance (data_list ,RESTObjectList )
158+ assert isinstance (data_list ,GitlabList )
155159manager = ProjectMergeRequestManager (
156160self .manager .gitlab ,parent = self .manager ._parent
157161 )