1+ import logging
12from typing import Optional , Union
23
34from .base_types import Flavor , Iterable , TestCase , TestCases , TestCaseType
78from .retry import RegularPeriodRetry , RetryStrategy
89from .submission import Submission , Submissions
910
11+ logger = logging .getLogger (__name__ )
12+
1013
1114def get_client (flavor : Flavor = Flavor .CE ) -> Client :
1215 """Resolve client from API keys from environment or default to preview client.
@@ -24,7 +27,9 @@ def get_client(flavor: Flavor = Flavor.CE) -> Client:
2427 from . import _get_implicit_client
2528
2629 if isinstance (flavor , Flavor ):
27- return _get_implicit_client (flavor = flavor )
30+ client = _get_implicit_client (flavor = flavor )
31+ logger .debug (f"Resolved implicit client for flavor { flavor } : { client } " )
32+ return client
2833 else :
2934 raise ValueError (
3035 "Expected argument flavor to be of of type enum Flavor, "
@@ -58,13 +63,15 @@ def _resolve_client(
5863 """
5964 # User explicitly passed a client.
6065 if isinstance (client , Client ):
66+ logger .debug (f"Using explicitly provided client: { client } " )
6167 return client
6268
6369 # NOTE: At the moment, we do not support the option to check if explicit
6470 # flavor of a client supports the submissions, i.e. submissions argument is
6571 # ignored if flavor argument is provided.
6672
6773 if isinstance (client , Flavor ):
74+ logger .debug (f"Resolving client from flavor: { client } " )
6875 return get_client (client )
6976
7077 if client is None :
@@ -80,12 +87,14 @@ def _resolve_client(
8087
8188 # Check which client supports all languages from the provided submissions.
8289 languages = [submission .language for submission in submissions ]
90+ logger .debug (f"Attempting to resolve client for languages: { languages } " )
8391
8492 for flavor in Flavor :
8593 client = get_client (flavor )
8694 if client is not None and all (
8795 (client .is_language_supported (lang ) for lang in languages )
8896 ):
97+ logger .debug (f"Resolved client { client } for languages { languages } " )
8998 return client
9099
91100 raise ClientResolutionError (
@@ -117,8 +126,10 @@ def create_submissions(
117126 client = _resolve_client (client = client , submissions = submissions )
118127
119128 if isinstance (submissions , Submission ):
129+ logger .info ("Creating a single submission." )
120130 return client .create_submission (submissions )
121131
132+ logger .info (f"Creating { len (submissions )} submissions." )
122133 result_submissions = []
123134 for submission_batch in batched (
124135 submissions , client .config .max_submission_batch_size
@@ -156,8 +167,10 @@ def get_submissions(
156167 client = _resolve_client (client = client , submissions = submissions )
157168
158169 if isinstance (submissions , Submission ):
170+ logger .debug ("Getting status for a single submission." )
159171 return client .get_submission (submissions , fields = fields )
160172
173+ logger .debug (f"Getting status for { len (submissions )} submissions." )
161174 result_submissions = []
162175 for submission_batch in batched (
163176 submissions , client .config .max_submission_batch_size
@@ -218,13 +231,16 @@ def wait(
218231 submission .token : submission for submission in submissions_list
219232 }
220233
234+ logger .info (f"Waiting for { len (submissions_to_check )} submissions to finish." )
221235 while len (submissions_to_check ) > 0 and not retry_strategy .is_done ():
236+ logger .debug (f"Checking { len (submissions_to_check )} submissions..." )
222237 get_submissions (client = client , submissions = list (submissions_to_check .values ()))
223238 finished_submissions = [
224239 token
225240 for token , submission in submissions_to_check .items ()
226241 if submission .is_done ()
227242 ]
243+ logger .debug (f"{ len (finished_submissions )} submissions finished in this step." )
228244 for token in finished_submissions :
229245 submissions_to_check .pop (token )
230246
@@ -314,7 +330,6 @@ def _execute(
314330 wait_for_result : bool = False ,
315331 ** kwargs ,
316332) -> Union [Submission , Submissions ]:
317-
318333 if submissions is not None and source_code is not None :
319334 raise ValueError (
320335 "Both submissions and source_code arguments are provided. "
@@ -327,6 +342,7 @@ def _execute(
327342 if source_code is not None :
328343 submissions = Submission (source_code = source_code , ** kwargs )
329344
345+ logger .info ("Starting execution process." )
330346 client = _resolve_client (client = client , submissions = submissions )
331347 all_submissions = create_submissions_from_test_cases (submissions , test_cases )
332348 all_submissions = create_submissions (client = client , submissions = all_submissions )
0 commit comments