Skip to content

Commit 1922033

Browse files
committed
Add pre_execution_copy of Submission.
1 parent c3aa10d commit 1922033

File tree

5 files changed

+25
-22
lines changed

5 files changed

+25
-22
lines changed

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ requires = ["setuptools"]
3333
build-backend = "setuptools.build_meta"
3434

3535
[project.urls]
36-
Homepage = "https://github.com/judge0/judge0-py"
37-
Repository = "https://github.com/judge0/judge0-py.git"
38-
Issues = "https://github.com/judge0/judge0-py/issues"
36+
Homepage = "https://github.com/judge0/judge0-python"
37+
Repository = "https://github.com/judge0/judge0-python.git"
38+
Issues = "https://github.com/judge0/judge0-python/issues"
3939

4040
[project.optional-dependencies]
4141
test = ["pytest", "mkdocs"]

src/judge0/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ def create_submissions_from_test_cases(
175175
all_submissions = []
176176
for submission in submissions_list:
177177
for test_case in test_cases_list:
178-
submission_copy = submission.copy()
178+
submission_copy = submission.pre_execution_copy()
179179
if test_case is not None:
180180
submission_copy.stdin = test_case.input
181181
submission_copy.expected_output = test_case.expected_output

src/judge0/submission.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import copy
22
from datetime import datetime
3-
from typing import Union
3+
from typing import Optional, Union
44

55
from judge0.filesystem import Filesystem
66

@@ -73,9 +73,9 @@ class Submission:
7373

7474
def __init__(
7575
self,
76-
source_code: str,
77-
language: Union[LanguageAlias, int] = LanguageAlias.PYTHON,
7876
*,
77+
source_code: Optional[str] = None,
78+
language: Union[LanguageAlias, int] = LanguageAlias.PYTHON,
7979
additional_files=None,
8080
compiler_options=None,
8181
command_line_arguments=None,
@@ -180,8 +180,11 @@ def is_done(self) -> bool:
180180
else:
181181
return self.status not in (Status.IN_QUEUE, Status.PROCESSING)
182182

183-
def copy(self) -> "Submission":
184-
return copy.deepcopy(self)
183+
def pre_execution_copy(self) -> "Submission":
184+
new_submission = Submission()
185+
for attr in REQUEST_FIELDS:
186+
setattr(new_submission, attr, copy.deepcopy(getattr(self, attr)))
187+
return new_submission
185188

186189
def __repr__(self) -> str:
187190
arguments = ", ".join(f"{field}={getattr(self, field)!r}" for field in FIELDS)

tests/test_api_test_cases.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
@pytest.mark.parametrize(
1010
"submissions,test_cases,expected_type",
1111
[
12-
[Submission(""), TestCase(), Submission],
13-
[[Submission("")], TestCase(), list],
14-
[Submission(""), [TestCase()], list],
15-
[[Submission("")], [TestCase()], list],
12+
[Submission(source_code=""), TestCase(), Submission],
13+
[[Submission(source_code="")], TestCase(), list],
14+
[Submission(source_code=""), [TestCase()], list],
15+
[[Submission(source_code="")], [TestCase()], list],
1616
],
1717
)
1818
def test_create_submissions_from_test_cases_return_type(
@@ -39,14 +39,14 @@ def test_create_submissions_from_test_cases_return_type(
3939
[Status.ACCEPTED, Status.ACCEPTED],
4040
],
4141
[
42-
Submission("print(f'Hello, {input()}')"),
42+
Submission(source_code="print(f'Hello, {input()}')"),
4343
[
4444
TestCase("Judge0", "Hello, Judge0"),
4545
],
4646
[Status.ACCEPTED],
4747
],
4848
[
49-
Submission("print(f'Hello, {input()}')"),
49+
Submission(source_code="print(f'Hello, {input()}')"),
5050
[
5151
TestCase("Judge0", "Hello, Judge0"),
5252
TestCase("pytest", "Hi, pytest"),
@@ -55,8 +55,8 @@ def test_create_submissions_from_test_cases_return_type(
5555
],
5656
[
5757
[
58-
Submission("print(f'Hello, {input()}')"),
59-
Submission("print(f'Hello, {input()}')"),
58+
Submission(source_code="print(f'Hello, {input()}')"),
59+
Submission(source_code="print(f'Hello, {input()}')"),
6060
],
6161
[
6262
TestCase("Judge0", "Hello, Judge0"),
@@ -97,7 +97,7 @@ def test_test_cases_from_run(
9797
[
9898
[
9999
Submission(
100-
"print(f'Hello, {input()}')",
100+
source_code="print(f'Hello, {input()}')",
101101
stdin="Judge0",
102102
expected_output="Hello, Judge0",
103103
),
@@ -106,12 +106,12 @@ def test_test_cases_from_run(
106106
[
107107
[
108108
Submission(
109-
"print(f'Hello, {input()}')",
109+
source_code="print(f'Hello, {input()}')",
110110
stdin="Judge0",
111111
expected_output="Hello, Judge0",
112112
),
113113
Submission(
114-
"print(f'Hello, {input()}')",
114+
source_code="print(f'Hello, {input()}')",
115115
stdin="pytest",
116116
expected_output="Hello, pytest",
117117
),

tests/test_submission.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
def test_status_before_and_after_submission(request):
55
client = request.getfixturevalue("judge0_ce_client")
6-
submission = Submission('print("Hello World!")')
6+
submission = Submission(source_code='print("Hello World!")')
77

88
assert submission.status is None
99

@@ -16,7 +16,7 @@ def test_status_before_and_after_submission(request):
1616

1717
def test_is_done(request):
1818
client = request.getfixturevalue("judge0_ce_client")
19-
submission = Submission('print("Hello World!")')
19+
submission = Submission(source_code='print("Hello World!")')
2020

2121
assert submission.status is None
2222

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