Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d8eb378

Browse files
committed
Move Client.submit and Client.check_submissions to free functions create_submissions and get_submissions.
1 parent 204bcd6 commit d8eb378

File tree

2 files changed

+57
-52
lines changed

2 files changed

+57
-52
lines changed

src/judge0/api.py

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
from typing import Optional, Union
1+
from typing import Iterable, Optional, Union
22

33
from .base_types import Flavor, TestCase, TestCases
44
from .clients import Client
5+
from .common import batched
56

67
from .retry import RegularPeriodRetry, RetryMechanism
78
from .submission import Submission, Submissions
@@ -55,6 +56,56 @@ def resolve_client(
5556
)
5657

5758

59+
def create_submissions(
60+
client: Optional[Client] = None,
61+
submissions: Optional[Union[Submission, Submissions]] = None,
62+
) -> Union[Submission, Submissions]:
63+
client = resolve_client(client=client, submissions=submissions)
64+
65+
if isinstance(submissions, Submission):
66+
return client.create_submission(submissions)
67+
68+
# TODO: Use result from get_config.
69+
batch_size = client.EFFECTIVE_SUBMISSION_BATCH_SIZE
70+
result_submissions = []
71+
for submission_batch in batched(submissions, batch_size):
72+
submissions_list = list(submission_batch)
73+
if batch_size > 1:
74+
result_submissions.extend(client.create_submissions(submissions_list))
75+
else:
76+
result_submissions.append(client.create_submission(submissions_list[0]))
77+
78+
return result_submissions
79+
80+
81+
def get_submissions(
82+
*,
83+
client: Optional[Client] = None,
84+
submissions: Optional[Union[Submission, Submissions]] = None,
85+
fields: Union[str, Iterable[str], None] = None,
86+
) -> Union[Submission, Submissions]:
87+
client = resolve_client(client=client, submissions=submissions)
88+
89+
if isinstance(submissions, Submission):
90+
return client.get_submission(submissions, fields=fields)
91+
92+
# TODO: Use result from get_config.
93+
batch_size = client.EFFECTIVE_SUBMISSION_BATCH_SIZE
94+
result_submissions = []
95+
for submission_batch in batched(submissions, batch_size):
96+
submissions_list = list(submission_batch)
97+
if batch_size > 1:
98+
result_submissions.extend(
99+
client.get_submissions(submissions_list, fields=fields)
100+
)
101+
else:
102+
result_submissions.append(
103+
client.get_submission(submissions_list[0], fields=fields)
104+
)
105+
106+
return result_submissions
107+
108+
58109
def wait(
59110
*,
60111
client: Optional[Client] = None,
@@ -76,7 +127,7 @@ def wait(
76127
}
77128

78129
while len(submissions_to_check) > 0 and not retry_mechanism.is_done():
79-
client.check_submissions(list(submissions_to_check.values()))
130+
get_submissions(client=client, submissions=list(submissions_to_check.values()))
80131
for token in list(submissions_to_check):
81132
submission = submissions_to_check[token]
82133
if submission.is_done():
@@ -162,12 +213,12 @@ def _execute(
162213

163214
client = resolve_client(client=client, submissions=submissions)
164215
all_submissions = create_submissions_from_test_cases(submissions, test_cases)
165-
all_submissions = client.submit(all_submissions)
216+
all_submissions = create_submissions(client=client, submissions=all_submissions)
166217

167218
if wait_for_result:
168-
all_submissions = wait(client=client, submissions=all_submissions)
169-
170-
return all_submissions
219+
return wait(client=client, submissions=all_submissions)
220+
else:
221+
return all_submissions
171222

172223

173224
def async_execute(

src/judge0/clients.py

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import requests
44

55
from .base_types import Language, LanguageAlias
6-
from .common import batched
76
from .data import LANGUAGE_TO_LANGUAGE_ID
87
from .submission import Submission, Submissions
98

@@ -200,51 +199,6 @@ def get_submissions(
200199

201200
return submissions
202201

203-
def submit(
204-
self,
205-
submissions: Union[Submission, Submissions],
206-
) -> Union[Submission, Submissions]:
207-
208-
if isinstance(submissions, Submission):
209-
return self.create_submission(submissions)
210-
211-
batch_size = self.EFFECTIVE_SUBMISSION_BATCH_SIZE
212-
result_submissions = []
213-
for submission_batch in batched(submissions, batch_size):
214-
if batch_size > 1:
215-
result_submissions.extend(
216-
self.create_submissions(list(submission_batch))
217-
)
218-
else:
219-
result_submissions.append(
220-
self.create_submission(list(submission_batch)[0])
221-
)
222-
223-
return result_submissions
224-
225-
def check_submissions(
226-
self,
227-
submissions: Union[Submission, Submissions],
228-
*,
229-
fields: Union[str, Iterable[str], None] = None,
230-
) -> Union[Submission, Submissions]:
231-
if isinstance(submissions, Submission):
232-
return self.get_submission(submissions, fields=fields)
233-
234-
batch_size = self.EFFECTIVE_SUBMISSION_BATCH_SIZE
235-
result_submissions = []
236-
for submission_batch in batched(submissions, batch_size):
237-
if batch_size > 1:
238-
result_submissions.extend(
239-
self.get_submissions(list(submission_batch), fields=fields)
240-
)
241-
else:
242-
result_submissions.append(
243-
self.get_submission(list(submission_batch)[0], fields=fields)
244-
)
245-
246-
return result_submissions
247-
248202

249203
class ATD(Client):
250204
API_KEY_ENV = "JUDGE0_ATD_API_KEY"

0 commit comments

Comments
 (0)