@@ -85,69 +85,77 @@ def wait(
85
85
return submissions
86
86
87
87
88
- def async_execute (
88
+ def _execute (
89
89
* ,
90
90
client : Optional [Union [Client , Flavor ]] = None ,
91
91
submissions : Optional [Union [Submission , list [Submission ]]] = None ,
92
92
source_code : Optional [str ] = None ,
93
+ wait_for_result : bool = False ,
93
94
** kwargs ,
94
95
) -> Union [Submission , list [Submission ]]:
95
96
if submissions is not None and source_code is not None :
96
97
raise ValueError (
97
- "source_code argument cannot be provided if submissions argument is provided."
98
+ "Both submissions and source_code arguments are provided. "
99
+ "Provide only one of the two."
98
100
)
101
+ if submissions is None and source_code is None :
102
+ raise ValueError ("Neither source_code nor submissions argument are provided." )
99
103
100
104
if source_code is not None :
101
105
submissions = Submission (source_code = source_code , ** kwargs )
102
106
103
- # Check the edge cases if client is not provided.
107
+ # TODO: Since kwargs is ignored if submissions argument is provided, maybe
108
+ # use warnings if submission and kwargs are provided?
109
+
110
+ # There is no need to check for other cases since we are explicitly
111
+ # checking for submissions and source_code arguments.
104
112
if client is None :
105
- if submissions is None :
106
- raise ValueError (
107
- "Client cannot be determined from None submissions argument."
108
- )
109
113
if isinstance (submissions , list ) and len (submissions ) == 0 :
110
- raise ValueError (
111
- "Client cannot be determined from the empty submissions argument."
112
- )
114
+ raise ValueError ("Client cannot be determined from empty submissions." )
113
115
114
116
client = resolve_client (client , submissions = submissions )
115
117
116
118
if isinstance (submissions , (list , tuple )):
117
- return client .create_submissions (submissions )
119
+ submissions = client .create_submissions (submissions )
120
+ else :
121
+ submissions = client .create_submission (submissions )
122
+
123
+ if wait_for_result :
124
+ return wait (client , submissions )
118
125
else :
119
- return client . create_submission ( submissions )
126
+ return submissions
120
127
121
128
122
- def sync_execute (
129
+ def async_execute (
123
130
* ,
124
131
client : Optional [Union [Client , Flavor ]] = None ,
125
132
submissions : Optional [Union [Submission , list [Submission ]]] = None ,
126
133
source_code : Optional [str ] = None ,
127
134
** kwargs ,
128
135
) -> Union [Submission , list [Submission ]]:
129
- if submissions is not None and source_code is not None :
130
- raise ValueError (
131
- "source_code argument cannot be provided if submissions argument is provided."
132
- )
133
-
134
- if source_code is not None :
135
- submissions = Submission ( source_code = source_code , ** kwargs )
136
+ return _execute (
137
+ client = client ,
138
+ submissions = submissions ,
139
+ source_code = source_code ,
140
+ wait_for_result = False ,
141
+ ** kwargs ,
142
+ )
136
143
137
- # Check the edge cases if client is not provided.
138
- if client is None :
139
- if submissions is None :
140
- raise ValueError (
141
- "Client cannot be determined from None submissions argument."
142
- )
143
- if isinstance (submissions , list ) and len (submissions ) == 0 :
144
- raise ValueError (
145
- "Client cannot be determined from the empty submissions argument."
146
- )
147
144
148
- client = resolve_client (client , submissions = submissions )
149
- submissions = async_execute (client = client , submissions = submissions )
150
- return wait (client , submissions )
145
+ def sync_execute (
146
+ * ,
147
+ client : Optional [Union [Client , Flavor ]] = None ,
148
+ submissions : Optional [Union [Submission , list [Submission ]]] = None ,
149
+ source_code : Optional [str ] = None ,
150
+ ** kwargs ,
151
+ ) -> Union [Submission , list [Submission ]]:
152
+ return _execute (
153
+ client = client ,
154
+ submissions = submissions ,
155
+ source_code = source_code ,
156
+ wait_for_result = True ,
157
+ ** kwargs ,
158
+ )
151
159
152
160
153
161
execute = sync_execute
0 commit comments