From 9150f365e779e2367342322cc44db052dd8ae6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herman=20Zvonimir=20Do=C5=A1ilovi=C4=87?= Date: Mon, 11 Nov 2024 22:43:19 +0100 Subject: [PATCH 1/6] Make Python default language --- src/judge0/submission.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/judge0/submission.py b/src/judge0/submission.py index 229d42f..77c4ec1 100644 --- a/src/judge0/submission.py +++ b/src/judge0/submission.py @@ -54,8 +54,8 @@ class Submission: def __init__( self, source_code: str, - language_id: Union[Language, int], *, + language_id: Union[Language, int]=Language.PYTHON, additional_files=None, compiler_options=None, command_line_arguments=None, From b2ba9dac8e16a1ac7b117125c078b1cafb48d14a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herman=20Zvonimir=20Do=C5=A1ilovi=C4=87?= Date: Mon, 11 Nov 2024 23:15:05 +0100 Subject: [PATCH 2/6] Add kwargs in sync_execute and async_execute --- examples/0004_hello_world.py | 3 +++ src/judge0/api.py | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 examples/0004_hello_world.py diff --git a/examples/0004_hello_world.py b/examples/0004_hello_world.py new file mode 100644 index 0000000..4f2d10b --- /dev/null +++ b/examples/0004_hello_world.py @@ -0,0 +1,3 @@ +import judge0 +result = judge0.run(source_code="print('Hello Judge0')") +print(result.stdout) diff --git a/src/judge0/api.py b/src/judge0/api.py index a892b57..ffe55dd 100644 --- a/src/judge0/api.py +++ b/src/judge0/api.py @@ -95,7 +95,17 @@ def async_execute( *, client: Optional[Union[Client, Flavor]] = None, submissions: Optional[Union[Submission, list[Submission]]] = None, + source_code: Optional[str] = None, + **kwargs, ) -> Union[Submission, list[Submission]]: + if submissions is not None and source_code is not None: + raise ValueError( + "source_code argument cannot be provided if submissions argument is provided." + ) + + if source_code is not None: + submissions = Submission(source_code=source_code, **kwargs) + # Check the edge cases if client is not provided. if client is None: if submissions is None: @@ -119,7 +129,17 @@ def sync_execute( *, client: Optional[Union[Client, Flavor]] = None, submissions: Optional[Union[Submission, list[Submission]]] = None, + source_code: Optional[str] = None, + **kwargs, ) -> Union[Submission, list[Submission]]: + if submissions is not None and source_code is not None: + raise ValueError( + "source_code argument cannot be provided if submissions argument is provided." + ) + + if source_code is not None: + submissions = Submission(source_code=source_code, **kwargs) + # Check the edge cases if client is not provided. if client is None: if submissions is None: From 90f44f1cc5813c87c6f051875fd1bda444c3b12f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herman=20Zvonimir=20Do=C5=A1ilovi=C4=87?= Date: Mon, 11 Nov 2024 23:23:10 +0100 Subject: [PATCH 3/6] Refactor async_execute to _execute --- src/judge0/api.py | 48 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/judge0/api.py b/src/judge0/api.py index ffe55dd..107fe02 100644 --- a/src/judge0/api.py +++ b/src/judge0/api.py @@ -91,11 +91,12 @@ def wait( return submissions -def async_execute( +def _execute( *, client: Optional[Union[Client, Flavor]] = None, submissions: Optional[Union[Submission, list[Submission]]] = None, source_code: Optional[str] = None, + wait_for_result: bool = False, **kwargs, ) -> Union[Submission, list[Submission]]: if submissions is not None and source_code is not None: @@ -119,41 +120,38 @@ def async_execute( client = resolve_client(client, submissions=submissions) + result_submissions = None if isinstance(submissions, (list, tuple)): - return client.create_submissions(submissions) + result_submissions = client.create_submissions(submissions) else: - return client.create_submission(submissions) + result_submissions = client.create_submission(submissions) + if wait_for_result: + return wait(client, result_submissions) -def sync_execute( + return result_submissions + +def async_execute( *, client: Optional[Union[Client, Flavor]] = None, submissions: Optional[Union[Submission, list[Submission]]] = None, source_code: Optional[str] = None, **kwargs, ) -> Union[Submission, list[Submission]]: - if submissions is not None and source_code is not None: - raise ValueError( - "source_code argument cannot be provided if submissions argument is provided." - ) - - if source_code is not None: - submissions = Submission(source_code=source_code, **kwargs) - - # Check the edge cases if client is not provided. - if client is None: - if submissions is None: - raise ValueError( - "Client cannot be determined from None submissions argument." - ) - if isinstance(submissions, list) and len(submissions) == 0: - raise ValueError( - "Client cannot be determined from the empty submissions argument." - ) + return _execute( + client=client, submissions=submissions, source_code=source_code, wait_for_result=False, **kwargs + ) - client = resolve_client(client, submissions=submissions) - submissions = async_execute(client=client, submissions=submissions) - return wait(client, submissions) +def sync_execute( + *, + client: Optional[Union[Client, Flavor]] = None, + submissions: Optional[Union[Submission, list[Submission]]] = None, + source_code: Optional[str] = None, + **kwargs, +) -> Union[Submission, list[Submission]]: + return _execute( + client=client, submissions=submissions, source_code=source_code, wait_for_result=True, **kwargs + ) execute = sync_execute From 0a5a06908797fdff129c55ee690a1c017758588a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Karlo=20Do=C5=A1ilovi=C4=87?= Date: Tue, 12 Nov 2024 22:00:30 +0100 Subject: [PATCH 4/6] Update. --- src/judge0/submission.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/judge0/submission.py b/src/judge0/submission.py index c2f2452..40ffede 100644 --- a/src/judge0/submission.py +++ b/src/judge0/submission.py @@ -56,7 +56,6 @@ def __init__( source_code: str, language_id: Union[Language, int] = Language.PYTHON, *, - language_id: Union[Language, int] = Language.PYTHON, additional_files=None, compiler_options=None, command_line_arguments=None, From 567a7269c240a1ba675e94bacd09ee237ce5a8f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Karlo=20Do=C5=A1ilovi=C4=87?= Date: Tue, 12 Nov 2024 22:03:03 +0100 Subject: [PATCH 5/6] Remove unused imports. --- src/judge0/__init__.py | 2 -- src/judge0/api.py | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/judge0/__init__.py b/src/judge0/__init__.py index 34001b0..c01a74a 100644 --- a/src/judge0/__init__.py +++ b/src/judge0/__init__.py @@ -1,6 +1,4 @@ import os -import warnings -from typing import Optional, Union from .api import async_execute, execute, run, sync_execute, wait from .clients import ( diff --git a/src/judge0/api.py b/src/judge0/api.py index 9e8f7f2..4d16b1f 100644 --- a/src/judge0/api.py +++ b/src/judge0/api.py @@ -1,6 +1,4 @@ -from calendar import c -from pydoc import cli -from typing import Optional, Tuple, Union +from typing import Optional, Union from .clients import Client from .common import Flavor From cff0982fdc41e82d25d2d097d361a155af475802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Karlo=20Do=C5=A1ilovi=C4=87?= Date: Tue, 12 Nov 2024 22:06:35 +0100 Subject: [PATCH 6/6] Update comments. --- src/judge0/api.py | 6 +++--- tests/test_api.py | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/judge0/api.py b/src/judge0/api.py index 4d16b1f..f8e6a6c 100644 --- a/src/judge0/api.py +++ b/src/judge0/api.py @@ -104,11 +104,11 @@ def _execute( if source_code is not None: submissions = Submission(source_code=source_code, **kwargs) - # TODO: Since kwargs are ignore if submissions argument is provided, maybe - # use warnings if submission argument is provided and kwargs are passed? + # TODO: Since kwargs is ignored if submissions argument is provided, maybe + # use warnings if submission and kwargs are provided? # There is no need to check for other cases since we are explicitly - # checking for submissions and source_code arguments + # checking for submissions and source_code arguments. if client is None: if isinstance(submissions, list) and len(submissions) == 0: raise ValueError("Client cannot be determined from empty submissions.") diff --git a/tests/test_api.py b/tests/test_api.py index 8a3ac72..aa2036d 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -60,12 +60,12 @@ def test_resolve_client_empty_submissions_argument(submissions): def test_resolve_client_no_common_client_for_submissions(): cpp_submission = Submission( - source_code="", # source code is not important because in this test + source_code="", # source code is not important in this test language_id=Language.CPP_GCC, ) py_submission = Submission( - source_code="", # source code is not important because in this test + source_code="", # source code is not important in this test language_id=Language.PYTHON_FOR_ML, ) @@ -77,12 +77,12 @@ def test_resolve_client_no_common_client_for_submissions(): def test_resolve_client_common_ce_client(): cpp_submission = Submission( - source_code="", # source code is not important because in this test + source_code="", # source code is not important in this test language_id=Language.CPP_GCC, ) py_submission = Submission( - source_code="", # source code is not important because in this test + source_code="", # source code is not important in this test language_id=Language.PYTHON, ) @@ -93,12 +93,12 @@ def test_resolve_client_common_ce_client(): def test_resolve_client_common_extra_ce_client(): cpp_submission = Submission( - source_code="", # source code is not important because in this test + source_code="", # source code is not important in this test language_id=Language.CPP_CLANG, ) py_submission = Submission( - source_code="", # source code is not important because in this test + source_code="", # source code is not important in this test language_id=Language.PYTHON_FOR_ML, ) 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