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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy