Skip to content

Commit 428ac30

Browse files
committed
Add type annotations for fields. Add single field (str) as option to fields parameter.
1 parent b27b46e commit 428ac30

File tree

2 files changed

+53
-11
lines changed

2 files changed

+53
-11
lines changed

src/judge0/clients.py

+52-10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Iterable, Union
2+
13
import requests
24

35
from .submission import Submission
@@ -76,15 +78,25 @@ def create_submission(self, submission: Submission) -> None:
7678

7779
submission.set_attributes(resp.json())
7880

79-
def get_submission(self, submission: Submission, *, fields=None) -> None:
81+
def get_submission(
82+
self,
83+
submission: Submission,
84+
*,
85+
fields: Union[str, Iterable[str], None] = None,
86+
) -> None:
8087
"""Check the submission status."""
8188

8289
params = {
8390
"base64_encoded": "true",
8491
}
8592

93+
if isinstance(fields, str):
94+
fields = [fields]
95+
8696
if fields is not None:
8797
params["fields"] = ",".join(fields)
98+
else:
99+
params["fields"] = "*"
88100

89101
resp = requests.get(
90102
f"{self.endpoint}/submissions/{submission.token}",
@@ -117,15 +129,25 @@ def create_submissions(self, submissions: list[Submission]) -> None:
117129
for submission, attrs in zip(submissions, resp.json()):
118130
submission.set_attributes(attrs)
119131

120-
def get_submissions(self, submissions: list[Submission], *, fields=None) -> None:
132+
def get_submissions(
133+
self,
134+
submissions: list[Submission],
135+
*,
136+
fields: Union[str, Iterable[str], None] = None,
137+
) -> None:
121138
params = {
122139
"base64_encoded": "true",
123140
}
124141

142+
if isinstance(fields, str):
143+
fields = [fields]
144+
125145
if fields is not None:
126146
params["fields"] = ",".join(fields)
147+
else:
148+
params["fields"] = "*"
127149

128-
tokens = ",".join((submission.token for submission in submissions))
150+
tokens = ",".join(submission.token for submission in submissions)
129151
params["tokens"] = tokens
130152

131153
resp = requests.get(
@@ -199,15 +221,25 @@ def create_submission(self, submission: Submission) -> None:
199221
self._update_endpoint_header(self.DEFAULT_CREATE_SUBMISSION_ENDPOINT)
200222
return super().create_submission(submission)
201223

202-
def get_submission(self, submission: Submission, *, fields=None) -> None:
224+
def get_submission(
225+
self,
226+
submission: Submission,
227+
*,
228+
fields: Union[str, Iterable[str], None] = None,
229+
) -> None:
203230
self._update_endpoint_header(self.DEFAULT_GET_SUBMISSION_ENDPOINT)
204231
return super().get_submission(submission, fields=fields)
205232

206233
def create_submissions(self, submissions: list[Submission]) -> None:
207234
self._update_endpoint_header(self.DEFAULT_CREATE_SUBMISSIONS_ENDPOINT)
208235
return super().create_submissions(submissions)
209236

210-
def get_submissions(self, submissions: list[Submission], *, fields=None) -> None:
237+
def get_submissions(
238+
self,
239+
submissions: list[Submission],
240+
*,
241+
fields: Union[str, Iterable[str], None] = None,
242+
) -> None:
211243
self._update_endpoint_header(self.DEFAULT_GET_SUBMISSIONS_ENDPOINT)
212244
return super().get_submissions(submissions, fields=fields)
213245

@@ -257,17 +289,27 @@ def create_submission(self, submission: Submission):
257289
self._update_endpoint_header(self.DEFAULT_CREATE_SUBMISSION_ENDPOINT)
258290
return super().create_submission(submission)
259291

260-
def get_submission(self, submission: Submission, *, fields=None):
292+
def get_submission(
293+
self,
294+
submission: Submission,
295+
*,
296+
fields: Union[str, Iterable[str], None] = None,
297+
):
261298
self._update_endpoint_header(self.DEFAULT_GET_SUBMISSION_ENDPOINT)
262299
return super().get_submission(submission, fields=fields)
263300

264-
def create_submissions(self, submission: list[Submission]) -> None:
301+
def create_submissions(self, submissions: list[Submission]) -> None:
265302
self._update_endpoint_header(self.DEFAULT_CREATE_SUBMISSIONS_ENDPOINT)
266-
return super().create_submissions(submission)
303+
return super().create_submissions(submissions)
267304

268-
def get_submissions(self, submission: list[Submission], *, fields=None) -> None:
305+
def get_submissions(
306+
self,
307+
submissions: list[Submission],
308+
*,
309+
fields: Union[str, Iterable[str], None] = None,
310+
) -> None:
269311
self._update_endpoint_header(self.DEFAULT_GET_SUBMISSIONS_ENDPOINT)
270-
return super().get_submissions(submission, fields=fields)
312+
return super().get_submissions(submissions, fields=fields)
271313

272314

273315
class Rapid(Client):

src/judge0/submission.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def __init__(
117117
self.status = None
118118
self.created_at = None
119119
self.finished_at = None
120-
self.token = None
120+
self.token = ""
121121
self.time = None
122122
self.wall_time = None
123123
self.memory = None

0 commit comments

Comments
 (0)