Skip to content

Commit 56f6953

Browse files
committedJan 5, 2025·
Rename fixtures. Refactor tests to explicitly set Submission language.
1 parent bb29acc commit 56f6953

File tree

5 files changed

+77
-34
lines changed

5 files changed

+77
-34
lines changed
 

‎docs/source/contributors_guide/contributing.rst

+4-4
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ the ``tests`` directory and are written using `pytest <https://docs.pytest.org/e
6262

6363
While working with the tests, you should use the following fixtures:
6464

65-
* ``default_ce_client`` - a client, chosen based on the environment variables set, that uses the CE flavor of the client.
66-
* ``default_extra_ce_client`` - a client, chosen based on the environment variables set, that uses the Extra CE flavor of the client.
65+
* ``ce_client`` - a client, chosen based on the environment variables set, that uses the CE flavor of the client.
66+
* ``extra_ce_client`` - a client, chosen based on the environment variables set, that uses the Extra CE flavor of the client.
6767

68-
The ``default_ce_client`` and ``default_extra_ce_client`` are fixtures that
68+
The ``ce_client`` and ``extra_ce_client`` are fixtures that
6969
return a client based on the environment variables set. This enables you to
7070
run the full test suite locally, but also to run the tests on the CI pipeline
7171
without changing the tests.
@@ -75,7 +75,7 @@ You can use the fixtures in your tests like this:
7575
.. code-block:: python
7676
7777
def test_my_test(request):
78-
client = request.getfixturevalue("default_ce_client") # or default_extra_ce_client
78+
client = request.getfixturevalue("ce_client") # or extra_ce_client
7979
8080
To run the tests locally, you can use the following command:
8181

‎src/judge0/__init__.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ def _get_implicit_client(flavor: Flavor) -> Client:
8585
# Let's check if we can find a self-hosted client.
8686
client = _get_custom_client(flavor)
8787

88-
# Try to find one of the predefined keys JUDGE0_{SULU,RAPID,ATD}_API_KEY
89-
# in environment variables.
88+
# Try to find one of the API keys JUDGE0_{SULU,RAPID,ATD}_API_KEY
89+
# for hub clients.
9090
if client is None:
91-
client = _get_predefined_client(flavor)
91+
client = _get_hub_client(flavor)
9292

93-
# If we didn't find any of the possible predefined keys, initialize
93+
# If we didn't find any of the possible keys, initialize
9494
# the preview Sulu client based on the flavor.
9595
if client is None:
9696
client = _get_preview_client(flavor)
@@ -137,7 +137,7 @@ def _get_custom_client(flavor: Flavor) -> Union[Client, None]:
137137
return None
138138

139139

140-
def _get_predefined_client(flavor: Flavor) -> Union[Client, None]:
140+
def _get_hub_client(flavor: Flavor) -> Union[Client, None]:
141141
from .clients import CE, EXTRA_CE
142142

143143
if flavor == Flavor.CE:

‎tests/conftest.py

+28-10
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111

1212
@pytest.fixture(scope="session")
13-
def judge0_ce_client():
13+
def custom_ce_client():
1414
endpoint = os.getenv("JUDGE0_CE_ENDPOINT")
1515
auth_headers = os.getenv("JUDGE0_CE_AUTH_HEADERS")
1616

@@ -21,7 +21,7 @@ def judge0_ce_client():
2121

2222

2323
@pytest.fixture(scope="session")
24-
def judge0_extra_ce_client():
24+
def custom_extra_ce_client():
2525
endpoint = os.getenv("JUDGE0_EXTRA_CE_ENDPOINT")
2626
auth_headers = os.getenv("JUDGE0_EXTRA_CE_AUTH_HEADERS")
2727

@@ -86,20 +86,38 @@ def sulu_extra_ce_client():
8686

8787

8888
@pytest.fixture(scope="session")
89-
def default_ce_client(judge0_ce_client, sulu_ce_client):
90-
if judge0_ce_client is not None:
91-
return judge0_ce_client
89+
def ce_client(
90+
custom_ce_client,
91+
sulu_ce_client,
92+
rapid_ce_client,
93+
atd_ce_client,
94+
):
95+
if custom_ce_client is not None:
96+
return custom_ce_client
9297
if sulu_ce_client is not None:
9398
return sulu_ce_client
99+
if rapid_ce_client is not None:
100+
return rapid_ce_client
101+
if atd_ce_client is not None:
102+
return atd_ce_client
94103

95-
pytest.fail("No default CE client available for testing.")
104+
pytest.fail("No CE client available for testing.")
96105

97106

98107
@pytest.fixture(scope="session")
99-
def default_extra_ce_client(judge0_extra_ce_client, sulu_extra_ce_client):
100-
if judge0_extra_ce_client is not None:
101-
return judge0_extra_ce_client
108+
def extra_ce_client(
109+
custom_extra_ce_client,
110+
sulu_extra_ce_client,
111+
rapid_extra_ce_client,
112+
atd_extra_ce_client,
113+
):
114+
if custom_extra_ce_client is not None:
115+
return custom_extra_ce_client
102116
if sulu_extra_ce_client is not None:
103117
return sulu_extra_ce_client
118+
if rapid_extra_ce_client is not None:
119+
return rapid_extra_ce_client
120+
if atd_extra_ce_client is not None:
121+
return atd_extra_ce_client
104122

105-
pytest.fail("No default Extra CE client available for testing.")
123+
pytest.fail("No Extra CE client available for testing.")

‎tests/test_api_test_cases.py

+30-9
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
import judge0
44
import pytest
5-
from judge0 import Status, Submission, TestCase
65
from judge0.api import create_submissions_from_test_cases
6+
from judge0.base_types import LanguageAlias, Status, TestCase
7+
from judge0.submission import Submission
78

89

910
@pytest.mark.parametrize(
@@ -172,14 +173,20 @@ def test_single_test_case_in_iterable(self, test_cases, stdin, expected_output):
172173
[Status.ACCEPTED, Status.ACCEPTED],
173174
],
174175
[
175-
Submission(source_code="print(f'Hello, {input()}')"),
176+
Submission(
177+
source_code="print(f'Hello, {input()}')",
178+
language=LanguageAlias.PYTHON,
179+
),
176180
[
177181
TestCase("Judge0", "Hello, Judge0"),
178182
],
179183
[Status.ACCEPTED],
180184
],
181185
[
182-
Submission(source_code="print(f'Hello, {input()}')"),
186+
Submission(
187+
source_code="print(f'Hello, {input()}')",
188+
language=LanguageAlias.PYTHON,
189+
),
183190
[
184191
TestCase("Judge0", "Hello, Judge0"),
185192
TestCase("pytest", "Hi, pytest"),
@@ -188,8 +195,14 @@ def test_single_test_case_in_iterable(self, test_cases, stdin, expected_output):
188195
],
189196
[
190197
[
191-
Submission(source_code="print(f'Hello, {input()}')"),
192-
Submission(source_code="print(f'Hello, {input()}')"),
198+
Submission(
199+
source_code="print(f'Hello, {input()}')",
200+
language=LanguageAlias.PYTHON,
201+
),
202+
Submission(
203+
source_code="print(f'Hello, {input()}')",
204+
language=LanguageAlias.PYTHON,
205+
),
193206
],
194207
[
195208
TestCase("Judge0", "Hello, Judge0"),
@@ -207,13 +220,14 @@ def test_single_test_case_in_iterable(self, test_cases, stdin, expected_output):
207220
def test_test_cases_from_run(
208221
source_code_or_submissions, test_cases, expected_status, request
209222
):
210-
client = request.getfixturevalue("default_ce_client")
223+
client = request.getfixturevalue("ce_client")
211224

212225
if isinstance(source_code_or_submissions, str):
213226
submissions = judge0.run(
214227
client=client,
215228
source_code=source_code_or_submissions,
216229
test_cases=test_cases,
230+
language=LanguageAlias.PYTHON,
217231
)
218232
else:
219233
submissions = judge0.run(
@@ -231,6 +245,7 @@ def test_test_cases_from_run(
231245
[
232246
Submission(
233247
source_code="print(f'Hello, {input()}')",
248+
language=LanguageAlias.PYTHON,
234249
stdin="Judge0",
235250
expected_output="Hello, Judge0",
236251
),
@@ -240,11 +255,13 @@ def test_test_cases_from_run(
240255
[
241256
Submission(
242257
source_code="print(f'Hello, {input()}')",
258+
language=LanguageAlias.PYTHON,
243259
stdin="Judge0",
244260
expected_output="Hello, Judge0",
245261
),
246262
Submission(
247263
source_code="print(f'Hello, {input()}')",
264+
language=LanguageAlias.PYTHON,
248265
stdin="pytest",
249266
expected_output="Hello, pytest",
250267
),
@@ -254,7 +271,7 @@ def test_test_cases_from_run(
254271
],
255272
)
256273
def test_no_test_cases(submissions, expected_status, request):
257-
client = request.getfixturevalue("default_ce_client")
274+
client = request.getfixturevalue("ce_client")
258275

259276
submissions = judge0.run(
260277
client=client,
@@ -269,9 +286,13 @@ def test_no_test_cases(submissions, expected_status, request):
269286

270287
@pytest.mark.parametrize("n_submissions", [42, 84])
271288
def test_batched_test_cases(n_submissions, request):
272-
client = request.getfixturevalue("default_ce_client")
289+
client = request.getfixturevalue("ce_client")
273290
submissions = [
274-
Submission(source_code=f"print({i})", expected_output=f"{i}")
291+
Submission(
292+
source_code=f"print({i})",
293+
language=LanguageAlias.PYTHON,
294+
expected_output=f"{i}",
295+
)
275296
for i in range(n_submissions)
276297
]
277298

‎tests/test_submission.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ def test_from_json():
5252

5353

5454
def test_status_before_and_after_submission(request):
55-
client = request.getfixturevalue("default_ce_client")
56-
submission = Submission(source_code='print("Hello World!")')
55+
client = request.getfixturevalue("ce_client")
56+
submission = Submission(
57+
source_code='print("Hello World!")', language=LanguageAlias.PYTHON
58+
)
5759

5860
assert submission.status is None
5961

@@ -65,8 +67,10 @@ def test_status_before_and_after_submission(request):
6567

6668

6769
def test_is_done(request):
68-
client = request.getfixturevalue("default_ce_client")
69-
submission = Submission(source_code='print("Hello World!")')
70+
client = request.getfixturevalue("ce_client")
71+
submission = Submission(
72+
source_code='print("Hello World!")', language=LanguageAlias.PYTHON
73+
)
7074

7175
assert submission.status is None
7276

@@ -77,7 +81,7 @@ def test_is_done(request):
7781

7882

7983
def test_language_before_and_after_execution(request):
80-
client = request.getfixturevalue("default_ce_client")
84+
client = request.getfixturevalue("ce_client")
8185
code = """\
8286
public class Main {
8387
public static void main(String[] args) {
@@ -97,7 +101,7 @@ def test_language_before_and_after_execution(request):
97101

98102

99103
def test_language_executable(request):
100-
client = request.getfixturevalue("default_ce_client")
104+
client = request.getfixturevalue("ce_client")
101105
code = b64decode(
102106
"f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAAABAAAAAAABAAAAAAAAAAEAQAAAAAAAAAAAAAEAAOAABAEAABAADAAEAAAAFAAAAABAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAJQAAAAAAAAAlAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHAjVANsAG+GABAAInHDwUx/41HPA8FAGhlbGxvLCB3b3JsZAoALnNoc3RydGFiAC50ZXh0AC5yb2RhdGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAAGAAAAAAAAAAAAQAAAAAAAABAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAgAAAAAAAAAYAEAAAAAAABgQAAAAAAAADQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAlEAAAAAAAABkAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" # noqa: E501
103107
)

0 commit comments

Comments
 (0)