1
1
import logging
2
- from typing import Collection , Iterable , Optional
2
+ from typing import Any , Collection , Iterable , Optional , Union
3
3
4
4
import requests
5
5
from atlassian import Jira
@@ -84,7 +84,7 @@ def paginated_projects(
84
84
expand = None ,
85
85
url = None ,
86
86
keys : Optional [Collection [str ]] = None ,
87
- ):
87
+ ) -> dict :
88
88
"""Returns a paginated list of projects visible to the user.
89
89
90
90
https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-projects/#api-rest-api-2-project-search-get
@@ -97,20 +97,23 @@ def paginated_projects(
97
97
"``projects_from_cloud`` method is only available for Jira Cloud platform"
98
98
)
99
99
100
- params = []
100
+ params_dict : dict [ str , Any ] = {}
101
101
102
102
if keys is not None :
103
103
if len (keys ) > 50 :
104
104
raise ValueError ("Up to 50 project keys can be provided." )
105
- params = [( "keys" , key ) for key in keys ]
105
+ params_dict [ "keys" ] = list ( keys )
106
106
107
107
if included_archived :
108
- params . append (( "includeArchived" , included_archived ))
108
+ params_dict [ "includeArchived" ] = included_archived
109
109
if expand :
110
- params . append (( "expand" , expand ))
110
+ params_dict [ "expand" ] = expand
111
111
page_url = url or self .resource_url ("project/search" )
112
112
is_url_absolute = bool (page_url .lower ().startswith ("http" ))
113
- return self .get (page_url , params = params , absolute = is_url_absolute )
113
+ projects : Union [dict , None ] = self .get (
114
+ page_url , params = params_dict , absolute = is_url_absolute
115
+ )
116
+ return projects if projects else {"values" : []}
114
117
115
118
@instrumented_method
116
119
def permitted_projects (self , permissions : Optional [Iterable ] = None ) -> list [dict ]:
@@ -125,5 +128,5 @@ def permitted_projects(self, permissions: Optional[Iterable] = None) -> list[dic
125
128
"/rest/api/2/permissions/project" ,
126
129
json = {"permissions" : list (permissions )},
127
130
)
128
- projects : list [dict ] = response ["projects" ]
131
+ projects : list [dict ] = response ["projects" ] if response else []
129
132
return projects
0 commit comments