4
4
import sys
5
5
from enum import Enum
6
6
from pathlib import Path
7
- from typing import Any , Callable , Dict , List , Optional , Union
7
+ from typing import Any , Callable , Dict , List , Optional , Union , cast
8
8
from urllib import parse as urlparse
9
9
10
10
import requests
@@ -136,13 +136,13 @@ def list_projects(
136
136
their own and optionally the public ones.
137
137
"""
138
138
params = {
139
- "include-public" : int (include_public ),
139
+ "include-public" : str ( int (include_public )), # type: ignore
140
140
}
141
141
142
142
payload = self ._request_json (
143
143
"GET" , "projects" , params = params , pagination = pagination
144
144
)
145
- return payload
145
+ return cast ( List , payload )
146
146
147
147
def list_remote_files (
148
148
self , project_id : str , skip_metadata : bool = True
@@ -337,7 +337,7 @@ def list_jobs(
337
337
"""
338
338
Returns a paginated lists of jobs accessible to the user.
339
339
"""
340
- return self ._request_json (
340
+ payload = self ._request_json (
341
341
"GET" ,
342
342
"jobs/" ,
343
343
{
@@ -346,6 +346,7 @@ def list_jobs(
346
346
},
347
347
pagination = pagination ,
348
348
)
349
+ return cast (List , payload )
349
350
350
351
def job_trigger (
351
352
self , project_id : str , job_type : JobTypes , force : bool = False
@@ -580,7 +581,7 @@ def download_file(
580
581
remote_filename : Path ,
581
582
show_progress : bool ,
582
583
remote_etag : str = None ,
583
- ) -> requests .Response :
584
+ ) -> Optional [ requests .Response ] :
584
585
"""Download a single project file.
585
586
586
587
Args:
@@ -595,7 +596,7 @@ def download_file(
595
596
NotImplementedError: Raised if unknown `download_type` is passed
596
597
597
598
Returns:
598
- requests.Response: the response object
599
+ requests.Response | None : the response object
599
600
"""
600
601
601
602
if remote_etag and local_filename .exists ():
@@ -608,7 +609,7 @@ def download_file(
608
609
logger .info (
609
610
f'Skipping download of "{ remote_filename } " because it is already present locally'
610
611
)
611
- return
612
+ return None
612
613
613
614
if download_type == FileTransferType .PROJECT :
614
615
url = f"files/{ project_id } /{ remote_filename } "
@@ -692,7 +693,7 @@ def _request_json(
692
693
allow_redirects = None ,
693
694
pagination : Pagination = Pagination (),
694
695
) -> Union [List , Dict ]:
695
- result = None
696
+ result : Optional [ Union [ List , Dict ]] = None
696
697
is_empty_pagination = pagination .is_empty
697
698
698
699
while True :
@@ -712,11 +713,15 @@ def _request_json(
712
713
payload = resp .json ()
713
714
714
715
if isinstance (payload , list ):
716
+ result = cast (List , result )
717
+
715
718
if result :
716
719
result += payload
717
720
else :
718
721
result = payload
719
722
elif isinstance (payload , dict ):
723
+ result = cast (Dict , result )
724
+
720
725
if result :
721
726
result = {** result , ** payload }
722
727
else :
@@ -735,8 +740,8 @@ def _request_json(
735
740
736
741
query_params = urlparse .parse_qs (urlparse .urlparse (next_url ).query )
737
742
pagination = Pagination (
738
- limit = query_params ["limit" ],
739
- offset = query_params ["offset" ],
743
+ limit = cast ( int , query_params ["limit" ]) ,
744
+ offset = cast ( int , query_params ["offset" ]) ,
740
745
)
741
746
742
747
return result
@@ -782,8 +787,8 @@ def _request(
782
787
offset = pagination .offset or 0
783
788
params = {
784
789
** params ,
785
- "limit" : limit ,
786
- "offset" : offset ,
790
+ "limit" : str ( limit ) ,
791
+ "offset" : str ( offset ) ,
787
792
}
788
793
789
794
request_params = {
0 commit comments