11import logging
2+ from typing import Any , Callable , Dict
23
34from django .http import HttpRequest , HttpResponseNotAllowed
45from django .utils import timezone
56from rest_framework .exceptions import ValidationError
67from rest_framework .generics import ListCreateAPIView
78from rest_framework .permissions import BasePermission
9+ from rest_framework .response import Response
10+ from rest_framework .views import APIView
811from shared .api_archive .archive import ArchiveService , MinioEndpoints
912from shared .metrics import inc_counter
1013from shared .upload .utils import UploaderType , insert_coverage_measurement
4043
4144
4245def create_upload (
43- serializer , repository , commit , report , is_shelter_request , analytics_token
44- ):
46+ serializer : UploadSerializer ,
47+ repository : Repository ,
48+ commit : Commit ,
49+ report : CommitReport ,
50+ is_shelter_request : bool ,
51+ analytics_token : str ,
52+ ) -> ReportSession :
4553 version = (
4654 serializer .validated_data ["version" ]
4755 if "version" in serializer .validated_data
@@ -82,7 +90,9 @@ def create_upload(
8290 return instance
8391
8492
85- def trigger_upload_task (repository , commit_sha , upload , report ):
93+ def trigger_upload_task (
94+ repository : Repository , commit_sha : str , upload : ReportSession , report : CommitReport
95+ ) -> None :
8696 log .info (
8797 "Triggering upload task" ,
8898 extra = dict (
@@ -103,7 +113,7 @@ def trigger_upload_task(repository, commit_sha, upload, report):
103113 dispatch_upload_task (task_arguments , repository , redis )
104114
105115
106- def activate_repo (repository ) :
116+ def activate_repo (repository : Repository ) -> None :
107117 # Only update the fields if needed
108118 if (
109119 repository .activated
@@ -128,8 +138,8 @@ def activate_repo(repository):
128138
129139
130140def send_analytics_data (
131- commit : Commit , upload : ReportSession , version , analytics_token
132- ):
141+ commit : Commit , upload : ReportSession , version : str , analytics_token : str
142+ ) -> None :
133143 analytics_upload_data = {
134144 "commit" : commit .commitid ,
135145 "branch" : commit .branch ,
@@ -154,7 +164,7 @@ def send_analytics_data(
154164 )
155165
156166
157- def get_token_for_analytics (commit : Commit , request ) :
167+ def get_token_for_analytics (commit : Commit , request : HttpRequest ) -> str :
158168 repo = commit .repository
159169 if isinstance (request .auth , TokenlessAuth ):
160170 analytics_token = "tokenless_upload"
@@ -170,7 +180,7 @@ def get_token_for_analytics(commit: Commit, request):
170180
171181
172182class CanDoCoverageUploadsPermission (BasePermission ):
173- def has_permission (self , request , view ) :
183+ def has_permission (self , request : HttpRequest , view : APIView ) -> bool :
174184 repository = view .get_repo ()
175185 return (
176186 request .auth is not None
@@ -194,10 +204,10 @@ class UploadViews(ListCreateAPIView, GetterMixin):
194204 ]
195205 throttle_classes = [UploadsPerCommitThrottle , UploadsPerWindowThrottle ]
196206
197- def get_exception_handler (self ):
207+ def get_exception_handler (self ) -> Callable [[ Exception , Dict [ str , Any ]], Response ] :
198208 return repo_auth_custom_exception_handler
199209
200- def perform_create (self , serializer : UploadSerializer ):
210+ def perform_create (self , serializer : UploadSerializer ) -> ReportSession :
201211 inc_counter (
202212 API_UPLOAD_COUNTER ,
203213 labels = generate_upload_prometheus_metrics_labels (
@@ -253,7 +263,7 @@ def list(
253263 repo : str ,
254264 commit_sha : str ,
255265 report_code : str ,
256- ):
266+ ) -> HttpResponseNotAllowed :
257267 return HttpResponseNotAllowed (permitted_methods = ["POST" ])
258268
259269 def get_repo (self ) -> Repository :
@@ -270,7 +280,7 @@ def get_commit(self, repo: Repository) -> Commit:
270280 except ValidationError as excpetion :
271281 raise excpetion
272282
273- def get_report (self , commit : Commit ) -> CommitReport :
283+ def get_report (self , commit : Commit , _ : Any = None ) -> CommitReport :
274284 try :
275285 report = super ().get_report (commit )
276286 return report
0 commit comments