9
9
10
10
11
11
def get_client (flavor : Flavor = Flavor .CE ) -> Client :
12
+ """Resolve client from API keys from environment or default to preview client.
13
+
14
+ Parameters
15
+ ----------
16
+ flavor : Flavor
17
+ Flavor of Judge0 Client.
18
+
19
+ Returns
20
+ -------
21
+ Client
22
+ An object of base type Client and the specified flavor.
23
+ """
12
24
from . import _get_implicit_client
13
25
14
26
if isinstance (flavor , Flavor ):
@@ -26,23 +38,40 @@ def _resolve_client(
26
38
) -> Client :
27
39
"""Resolve a client from flavor or submission(s) arguments.
28
40
41
+ Parameters
42
+ ----------
43
+ client : Client or Flavor, optional
44
+ A Client object or flavor of client. Returns the client if not None.
45
+ submissions: Submission or Submissions, optional
46
+ Submission(s) used to determine the suitable client.
47
+
48
+ Returns
49
+ -------
50
+ Client
51
+ An object of base type Client.
52
+
29
53
Raises
30
54
------
31
55
ClientResolutionError
32
- Raised if client resolution fails.
56
+ If there is no implemented client that supports all the languages specified
57
+ in the submissions.
33
58
"""
34
59
# User explicitly passed a client.
35
60
if isinstance (client , Client ):
36
61
return client
37
62
63
+ # NOTE: At the moment, we do not support the option to check if explicit
64
+ # flavor of a client supports the submissions, i.e. submissions argument is
65
+ # ignored if flavor argument is provided.
66
+
38
67
if isinstance (client , Flavor ):
39
68
return get_client (client )
40
69
41
70
if client is None and isinstance (submissions , Iterable ) and len (submissions ) == 0 :
42
71
raise ValueError ("Client cannot be determined from empty submissions." )
43
72
44
73
# client is None and we have to determine a flavor of the client from the
45
- # submissions and the languages.
74
+ # the submission's languages.
46
75
if isinstance (submissions , Submission ):
47
76
submissions = [submissions ]
48
77
@@ -65,18 +94,17 @@ def _resolve_client(
65
94
66
95
def create_submissions (
67
96
* ,
68
- client : Optional [Client ] = None ,
97
+ client : Optional [Union [ Client , Flavor ] ] = None ,
69
98
submissions : Optional [Union [Submission , Submissions ]] = None ,
70
99
) -> Union [Submission , Submissions ]:
71
- """Create submissions to a client.
100
+ """Universal function for creating submissions to the client.
72
101
73
102
Parameters
74
103
----------
75
- client : Client, optional
76
- A Client where submissions should be created. If None, will try to
77
- be automatically resolved.
78
- submissions: Submission, Submissions
79
- A submission or submissions to create.
104
+ client : Client or Flavor, optional
105
+ A client or client flavor where submissions should be created.
106
+ submissions: Submission or Submissions, optional
107
+ Submission(s) to create.
80
108
81
109
Raises
82
110
------
@@ -102,19 +130,20 @@ def create_submissions(
102
130
103
131
def get_submissions (
104
132
* ,
105
- client : Optional [Client ] = None ,
133
+ client : Optional [Union [ Client , Flavor ] ] = None ,
106
134
submissions : Optional [Union [Submission , Submissions ]] = None ,
107
135
fields : Optional [Union [str , Iterable [str ]]] = None ,
108
136
) -> Union [Submission , Submissions ]:
109
- """Create submissions to a client.
137
+ """Get submission (status) from a client.
110
138
111
139
Parameters
112
140
----------
113
- client : Client, optional
114
- A Client where submissions should be created. If None, will try to
115
- be automatically resolved.
116
- submissions: Submission, Submissions
117
- A submission or submissions to create.
141
+ client : Client or Flavor, optional
142
+ A client or client flavor where submissions should be checked.
143
+ submissions : Submission or Submissions, optional
144
+ Submission(s) to update.
145
+ fields : str or sequence of str, optional
146
+ Submission attributes that need to be updated. Defaults to all attributes.
118
147
119
148
Raises
120
149
------
@@ -144,10 +173,26 @@ def get_submissions(
144
173
145
174
def wait (
146
175
* ,
147
- client : Optional [Client ] = None ,
176
+ client : Optional [Union [ Client , Flavor ] ] = None ,
148
177
submissions : Optional [Union [Submission , Submissions ]] = None ,
149
178
retry_strategy : Optional [RetryStrategy ] = None ,
150
179
) -> Union [Submission , Submissions ]:
180
+ """Wait for all the submissions to finish.
181
+
182
+ Parameters
183
+ ----------
184
+ client : Client or Flavor, optional
185
+ A client or client flavor where submissions should be checked.
186
+ submissions : Submission or Submissions
187
+ Submission(s) to wait for.
188
+ retry_strategy : RetryStrategy, optional
189
+ A retry strategy.
190
+
191
+ Raises
192
+ ------
193
+ ClientResolutionError
194
+ Raised if client resolution fails.
195
+ """
151
196
client = _resolve_client (client , submissions )
152
197
153
198
if retry_strategy is None :
@@ -189,9 +234,9 @@ def create_submissions_from_test_cases(
189
234
submissions : Union [Submission , Submissions ],
190
235
test_cases : Optional [Union [TestCaseType , TestCases ]] = None ,
191
236
) -> Union [Submission , list [Submission ]]:
192
- """Create submissions from the ( submission, test_case) pairs.
237
+ """Create submissions from the submission and test case pairs.
193
238
194
- This function always returns a deep copy so make sure you are using the
239
+ Function always returns a deep copy so make sure you are using the
195
240
returned submission(s).
196
241
197
242
Parameters
@@ -335,7 +380,7 @@ def sync_execute(
335
380
A client where submissions should be created. If None, will try to be
336
381
resolved.
337
382
submissions : Submission or Submissions, optional
338
- Submission or submissions for execution.
383
+ Submission(s) for execution.
339
384
source_code: str, optional
340
385
A source code of a program.
341
386
test_cases: TestCaseType or TestCases, optional
0 commit comments