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

+3-3
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

+1-1
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

+8-5
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

+11-11
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

+2-2
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)