rbx.cp 0.13.4__py3-none-any.whl → 0.13.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rbx/box/checkers.py +2 -9
- rbx/box/cli.py +0 -1
- rbx/box/code.py +27 -80
- rbx/box/environment.py +16 -6
- rbx/box/generators.py +26 -3
- rbx/box/global_package.py +1 -1
- rbx/box/header.py +26 -8
- rbx/box/package.py +0 -14
- rbx/box/setter_config.py +11 -0
- rbx/box/solutions.py +12 -4
- rbx/box/tasks.py +9 -4
- rbx/box/testing/testing_package.py +69 -2
- rbx/box/ui/screens/run_explorer.py +0 -8
- rbx/box/ui/utils/run_ui.py +7 -3
- rbx/box/ui/widgets/test_output_box.py +1 -1
- rbx/box/unit.py +4 -4
- rbx/box/validators.py +3 -1
- rbx/grading/caching.py +65 -15
- rbx/grading/judge/cacher.py +5 -3
- rbx/grading/judge/program.py +300 -0
- rbx/grading/judge/sandbox.py +30 -200
- rbx/grading/judge/sandboxes/stupid_sandbox.py +234 -240
- rbx/grading/judge/sandboxes/tee.py +31 -0
- rbx/grading/judge/storage.py +7 -1
- rbx/grading/steps.py +89 -201
- rbx/grading/steps_with_caching.py +15 -6
- rbx/resources/presets/default/problem/problem.rbx.yml +0 -2
- rbx/resources/templates/rbx.h +43 -2
- rbx/testing_utils.py +7 -0
- rbx/utils.py +104 -6
- {rbx_cp-0.13.4.dist-info → rbx_cp-0.13.6.dist-info}/METADATA +1 -1
- {rbx_cp-0.13.4.dist-info → rbx_cp-0.13.6.dist-info}/RECORD +35 -40
- rbx/grading/judge/sandboxes/isolate.py +0 -695
- rbx/grading/judge/sandboxes/timeit.py +0 -358
- rbx/grading/judge/test.py +0 -38
- rbx/grading/judge/testiso.py +0 -54
- rbx/grading/processing_context.py +0 -71
- rbx/resources/envs/isolate.rbx.yml +0 -36
- rbx/resources/presets/default/problem/sols/slow.cpp +0 -15
- {rbx_cp-0.13.4.dist-info → rbx_cp-0.13.6.dist-info}/LICENSE +0 -0
- {rbx_cp-0.13.4.dist-info → rbx_cp-0.13.6.dist-info}/WHEEL +0 -0
- {rbx_cp-0.13.4.dist-info → rbx_cp-0.13.6.dist-info}/entry_points.txt +0 -0
rbx/utils.py
CHANGED
@@ -5,12 +5,15 @@ import json
|
|
5
5
|
import os
|
6
6
|
import os.path
|
7
7
|
import pathlib
|
8
|
+
import re
|
8
9
|
import resource
|
10
|
+
import shutil
|
9
11
|
import subprocess
|
10
12
|
import sys
|
11
|
-
from typing import Any, Optional, Type, TypeVar
|
13
|
+
from typing import Any, Optional, Type, TypeVar, Union
|
12
14
|
|
13
15
|
import rich
|
16
|
+
import rich.markup
|
14
17
|
import rich.prompt
|
15
18
|
import rich.status
|
16
19
|
import ruyaml
|
@@ -24,6 +27,7 @@ from rbx.console import console
|
|
24
27
|
|
25
28
|
T = TypeVar('T', bound=BaseModel)
|
26
29
|
APP_NAME = 'rbx'
|
30
|
+
PathOrStr = Union[pathlib.Path, str]
|
27
31
|
|
28
32
|
|
29
33
|
def create_and_write(path: pathlib.Path, *args, **kwargs):
|
@@ -37,6 +41,10 @@ def highlight_str(s: str) -> text.Text:
|
|
37
41
|
return txt
|
38
42
|
|
39
43
|
|
44
|
+
def escape_markup(s: str) -> str:
|
45
|
+
return rich.markup.escape(s, _escape=re.compile(r'(\\*)(\[)').sub)
|
46
|
+
|
47
|
+
|
40
48
|
def abspath(path: pathlib.Path) -> pathlib.Path:
|
41
49
|
return pathlib.Path(os.path.abspath(path))
|
42
50
|
|
@@ -95,14 +103,62 @@ def uploaded_schema_path(model: Type[BaseModel]) -> str:
|
|
95
103
|
return f'https://rsalesc.github.io/rbx/schemas/{model.__name__}.json'
|
96
104
|
|
97
105
|
|
98
|
-
def model_to_yaml(model: BaseModel) -> str:
|
106
|
+
def model_to_yaml(model: BaseModel, **kwargs) -> str:
|
107
|
+
"""Convert model to YAML string with proper boolean handling.
|
108
|
+
|
109
|
+
This function works around Pydantic's issue where Union[str, int, float, bool]
|
110
|
+
fields convert booleans to floats when using mode='json'.
|
111
|
+
"""
|
112
|
+
# Use regular dump to preserve boolean types
|
113
|
+
data = model.model_dump(exclude_unset=True, exclude_none=True)
|
114
|
+
|
115
|
+
# Ensure the result is JSON-serializable by converting any non-JSON types
|
116
|
+
json_safe_data = _ensure_json_serializable(data)
|
117
|
+
|
118
|
+
# Add schema path comment and convert to YAML
|
99
119
|
path = uploaded_schema_path(model.__class__)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
allow_unicode=True,
|
120
|
+
schema_comment = f'# yaml-language-server: $schema={path}\n\n'
|
121
|
+
|
122
|
+
yaml_content = yaml.safe_dump(
|
123
|
+
json_safe_data, sort_keys=False, allow_unicode=True, **kwargs
|
104
124
|
)
|
105
125
|
|
126
|
+
return schema_comment + yaml_content
|
127
|
+
|
128
|
+
|
129
|
+
def _ensure_json_serializable(obj):
|
130
|
+
"""Recursively ensure an object is JSON-serializable while preserving booleans."""
|
131
|
+
from datetime import date, datetime
|
132
|
+
from enum import Enum
|
133
|
+
from pathlib import Path
|
134
|
+
from uuid import UUID
|
135
|
+
|
136
|
+
from rbx.autoenum import AutoEnum
|
137
|
+
|
138
|
+
if isinstance(obj, dict):
|
139
|
+
return {k: _ensure_json_serializable(v) for k, v in obj.items()}
|
140
|
+
elif isinstance(obj, list):
|
141
|
+
return [_ensure_json_serializable(item) for item in obj]
|
142
|
+
elif isinstance(obj, tuple):
|
143
|
+
return [_ensure_json_serializable(item) for item in obj]
|
144
|
+
elif isinstance(obj, set):
|
145
|
+
return [_ensure_json_serializable(item) for item in obj]
|
146
|
+
elif isinstance(obj, AutoEnum):
|
147
|
+
return str(obj)
|
148
|
+
elif isinstance(obj, Enum):
|
149
|
+
return obj.value
|
150
|
+
elif isinstance(obj, (str, int, float, bool)) or obj is None:
|
151
|
+
return obj
|
152
|
+
elif isinstance(obj, (datetime, date)):
|
153
|
+
return obj.isoformat()
|
154
|
+
elif isinstance(obj, UUID):
|
155
|
+
return str(obj)
|
156
|
+
elif isinstance(obj, Path):
|
157
|
+
return str(obj)
|
158
|
+
else:
|
159
|
+
# For any other type, try to convert to string
|
160
|
+
return str(obj)
|
161
|
+
|
106
162
|
|
107
163
|
def model_from_yaml(model: Type[T], s: str) -> T:
|
108
164
|
return model(**yaml.safe_load(s))
|
@@ -185,6 +241,48 @@ def new_cd(x: pathlib.Path):
|
|
185
241
|
os.chdir(d)
|
186
242
|
|
187
243
|
|
244
|
+
def _safe_match(matcher, path):
|
245
|
+
try:
|
246
|
+
return matcher(path)
|
247
|
+
except ValueError:
|
248
|
+
return False
|
249
|
+
|
250
|
+
|
251
|
+
def copytree_honoring_gitignore(
|
252
|
+
src: pathlib.Path, dst: pathlib.Path, extra_gitignore: Optional[str] = None
|
253
|
+
):
|
254
|
+
from gitignore_parser import parse_gitignore, parse_gitignore_str
|
255
|
+
|
256
|
+
ignore_matchers = []
|
257
|
+
|
258
|
+
if extra_gitignore is not None:
|
259
|
+
ignore_matchers.append(parse_gitignore_str(extra_gitignore, base_dir=src))
|
260
|
+
|
261
|
+
for file in src.rglob('.gitignore'):
|
262
|
+
if file.is_file():
|
263
|
+
ignore_matchers.append(parse_gitignore(file))
|
264
|
+
|
265
|
+
# TODO: use recursive walk
|
266
|
+
for file in src.rglob('*'):
|
267
|
+
matching_file = file
|
268
|
+
ignored = False
|
269
|
+
while matching_file.is_relative_to(src):
|
270
|
+
if any(
|
271
|
+
_safe_match(ignore_matcher, matching_file)
|
272
|
+
for ignore_matcher in ignore_matchers
|
273
|
+
):
|
274
|
+
ignored = True
|
275
|
+
break
|
276
|
+
matching_file = matching_file.parent
|
277
|
+
if ignored:
|
278
|
+
continue
|
279
|
+
rel = relpath(file, src)
|
280
|
+
if file.is_file():
|
281
|
+
write_to = dst / rel
|
282
|
+
write_to.parent.mkdir(parents=True, exist_ok=True)
|
283
|
+
shutil.copyfile(file, write_to)
|
284
|
+
|
285
|
+
|
188
286
|
class StatusProgress(rich.status.Status):
|
189
287
|
_message: str
|
190
288
|
processed: int
|
@@ -4,9 +4,9 @@ rbx/autoenum.py,sha256=cusv8ClXRlDVvhZ8eDrtYcL_2peXlHugAey_ht8roXk,12025
|
|
4
4
|
rbx/box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
rbx/box/builder.py,sha256=umrTdVAwvsOosBDVvDZ6kq1yWg3Z2Lxp2o1zK-V7BBk,3594
|
6
6
|
rbx/box/cd.py,sha256=_XAzb3kV1NUaaRs8hc9SGDo10O1yh2_gr1EiAKzfUjI,2711
|
7
|
-
rbx/box/checkers.py,sha256=
|
8
|
-
rbx/box/cli.py,sha256=
|
9
|
-
rbx/box/code.py,sha256=
|
7
|
+
rbx/box/checkers.py,sha256=mRovZyTZdySFEaYFVc3Lc-xgEsu6F9FjVPOxDwub7aY,13226
|
8
|
+
rbx/box/cli.py,sha256=eBXiy3zG6IzrIHPYplFWhGn7cB7nmA7F1GiAGoYFWp0,29904
|
9
|
+
rbx/box/code.py,sha256=SXjce-rBr_B4bVNgCYBuN6KZJTtb9GfYqIxPmrO2XWo,25467
|
10
10
|
rbx/box/compile.py,sha256=Kzn5mEQu4vb91W9vjyt0DS6cfPJzFLTUoowFj7uHLUo,2539
|
11
11
|
rbx/box/contest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
rbx/box/contest/build_contest_statements.py,sha256=N7TQ8Ki7ZM94sATHploDsSKbY41Xey_FlXclEdCBpJI,13010
|
@@ -19,20 +19,20 @@ rbx/box/creation.py,sha256=oTAC11XV2Pw2YAlF_d11Eo7A1fD6ItlpFMpLEzMLyFI,1331
|
|
19
19
|
rbx/box/deferred.py,sha256=II3X9e87JCOZtmspnHh-n4PFqh-FsH_oc0XJHZ9ZYVQ,691
|
20
20
|
rbx/box/download.py,sha256=tLW5gLVeLk0gHMEMwScSoHIXQPkXuPsqXzItsrsnUZY,3070
|
21
21
|
rbx/box/dump_schemas.py,sha256=3j5t47_vJmXj0BCczxDX6ByOcsfolGEDNCBXlPpk86w,593
|
22
|
-
rbx/box/environment.py,sha256=
|
22
|
+
rbx/box/environment.py,sha256=rwUXuIEfuH-nbnkpQUSazZdi0Z0MUrcCmiYuC5yIxAw,14014
|
23
23
|
rbx/box/extensions.py,sha256=Von8kIeXvNFTkGlMRMTvL2HIHPwlkuiMswr-ydbGV1w,519
|
24
24
|
rbx/box/fields.py,sha256=rai4gE95mavvRPBLgnMj2jG5b2W76fvGuFQRXO0O4fM,1792
|
25
25
|
rbx/box/formatting.py,sha256=i3vXHpo_L_VpVPxOe4wHlai1WhlDJlfxUexS9DC0Szg,1249
|
26
|
-
rbx/box/generators.py,sha256=
|
26
|
+
rbx/box/generators.py,sha256=Q7xZ0BQVrh4eTwiYgxdpaHJqqZT4_X_YPl-uReZz5tw,16880
|
27
27
|
rbx/box/git_utils.py,sha256=VlUgzuHOCnrjjiJQnDB32qDHbHw_zkwgA7wm4bloibc,750
|
28
|
-
rbx/box/global_package.py,sha256=
|
29
|
-
rbx/box/header.py,sha256=
|
28
|
+
rbx/box/global_package.py,sha256=YfFGw2vxFspF2v3phBEeBCrLe1sfbANrctGqii3I2X4,2106
|
29
|
+
rbx/box/header.py,sha256=OZJD2J0fdIiYyiEAwQ3x3M8TwM1v1J9nhIjnPVz4Zy8,3029
|
30
30
|
rbx/box/lang.py,sha256=CSD-yxFUC3LWdGpv4IVFOLdgONc_JbsI45BEN3bjaFw,888
|
31
31
|
rbx/box/lazy_importing_main.py,sha256=6Z8As7qVFFT619xHH9Xt8VCH57NjC4aDxfAgkWiUwT8,116
|
32
32
|
rbx/box/linting.py,sha256=wRE0hKCduTBHZYBFmmis_d9AMTsDu0Q-AjByCeTnkrY,3187
|
33
33
|
rbx/box/main.py,sha256=a8CYi77kOywPFly4-ucEIJLXQW-1NFp91kK2fA42YTE,86
|
34
34
|
rbx/box/naming.py,sha256=pOG37X_wQM9CCSYwJIUf-b-ZHEs_nchO7wQEdP_quJg,1367
|
35
|
-
rbx/box/package.py,sha256=
|
35
|
+
rbx/box/package.py,sha256=66MqTVfb5V-IVjnTndH3CwrGgWWaHW_RTUiR86QcKt4,14756
|
36
36
|
rbx/box/packaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
37
|
rbx/box/packaging/boca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
38
|
rbx/box/packaging/boca/extension.py,sha256=EQALNEOv4zVDXSKs_dk11n92y7cBZVn8TogIK683lE0,890
|
@@ -57,8 +57,8 @@ rbx/box/remote.py,sha256=PsJ4i3suQEr3cxiKk4nCho98QBGs5b2v8_TEvn_nE-o,5204
|
|
57
57
|
rbx/box/retries.py,sha256=BZsi4sYBjm3VK5zb_pBQSYQuKo3ZntmtEFoVPZHg4QI,4982
|
58
58
|
rbx/box/sanitizers/warning_stack.py,sha256=6-rr3dkMq6MpfjrVZ8lSQjF4RZ5YzZSAPMzHCfm-6h4,2876
|
59
59
|
rbx/box/schema.py,sha256=YLziLE5X-gI76844cCARHo0EmnUZSpr_ngEWzS8M5uM,18187
|
60
|
-
rbx/box/setter_config.py,sha256=
|
61
|
-
rbx/box/solutions.py,sha256=
|
60
|
+
rbx/box/setter_config.py,sha256=vyZbsbgkjelZOblMLX5A1j4CLqPNQkrv83IZr_3-46Y,5301
|
61
|
+
rbx/box/solutions.py,sha256=uTODZEvdb6H8hKhrmD-KrRg1hhmwiExq33tN3oh1vXg,54036
|
62
62
|
rbx/box/state.py,sha256=MMf3DvfQji0jKEliCHct2Tpp_0epL1tvP8HbHNArQIc,166
|
63
63
|
rbx/box/statements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
64
|
rbx/box/statements/build_statements.py,sha256=gzhYVtxO0Pk3AgWr9cOXU7dYo_U-eSk_vpt-Ld8UXg8,12841
|
@@ -73,13 +73,13 @@ rbx/box/stresses.py,sha256=SV0Hx7SPZZEIhwasWDVpTWuMhWWTjfJs2IEW-H0xJZw,12092
|
|
73
73
|
rbx/box/stressing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
74
|
rbx/box/stressing/finder_parser.py,sha256=PnONJD2yun5X5EmHqkaz-rh3DHhn_BkTPHZrIXRKZbw,11898
|
75
75
|
rbx/box/stressing/generator_parser.py,sha256=oHZryjR3YohgaSO9WEirQ7b2e-98WgZStF0N99W4Thw,7380
|
76
|
-
rbx/box/tasks.py,sha256=
|
76
|
+
rbx/box/tasks.py,sha256=CJ7TqzhVMPP4VUSrMpp3ofSDJn0rbuwIUWgFOiup_vE,11426
|
77
77
|
rbx/box/testcase_extractors.py,sha256=J43eG7vpxc5nP_2yhrXJODkd4EYlV4WiYVbM6hzipY4,11944
|
78
78
|
rbx/box/testcase_utils.py,sha256=HoDr_RxWpfviLd2oTj_m2wg1e4XaY9LD-QBqx_QjDI0,6899
|
79
79
|
rbx/box/testcases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
80
|
rbx/box/testcases/main.py,sha256=_I7h_obRcpNLRQ6dDJDIE5NAvTyn5nBOhdsBhRA_PvU,5442
|
81
81
|
rbx/box/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
|
-
rbx/box/testing/testing_package.py,sha256=
|
82
|
+
rbx/box/testing/testing_package.py,sha256=kzvSbL_4fkjD2l3hfYapyOezLHhhySi9sp4u92MoycY,10121
|
83
83
|
rbx/box/testing/testing_preset.py,sha256=7TxfL4fT9JetRMRkQ3Iko99N5gzfKz8_lPM0rkkQx_k,1135
|
84
84
|
rbx/box/testing/testing_shared.py,sha256=rX7w5VrCzf4l9zYhq3eFW1iHaWDLU-Xkn5oCjnAavhA,2558
|
85
85
|
rbx/box/tooling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -100,43 +100,40 @@ rbx/box/ui/screens/differ.py,sha256=Sp6xQwsFiqMl0tvbdhiPdh8AWUNPT8jshce3H7DhPrw,
|
|
100
100
|
rbx/box/ui/screens/error.py,sha256=k6Rs5maR_APKepMtPcDMSXo6BDKrP-pAnFFJgqmXDKE,496
|
101
101
|
rbx/box/ui/screens/rich_log_modal.py,sha256=ciKC7_3SLKToDvQA9mrcNNdKBX85f2B1ASgrtyDvn38,799
|
102
102
|
rbx/box/ui/screens/run.py,sha256=eKIfFRi-VbqKDxlhZDuOEdVl91XCndnmNIZyj_LMV0c,6028
|
103
|
-
rbx/box/ui/screens/run_explorer.py,sha256=
|
103
|
+
rbx/box/ui/screens/run_explorer.py,sha256=wAWsyhoZHnK115Yw9cceSlJa8bb8IzaiJj14mjKZR0c,2955
|
104
104
|
rbx/box/ui/screens/run_test_explorer.py,sha256=D6sXTEbqzXI7uPu3EXZoFyIBxlGFbkdeyWj9OwYFHS8,6681
|
105
105
|
rbx/box/ui/screens/selector.py,sha256=s9JR74anCt8NAlkk7GeNvqyqz2YEhCWTebOUNQ7HrXg,856
|
106
106
|
rbx/box/ui/screens/test_explorer.py,sha256=Iv6yDqELr4-Ouo9PSD5Wr3bTdbmx8VfrK9zj5ULhPlg,4078
|
107
107
|
rbx/box/ui/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
108
|
-
rbx/box/ui/utils/run_ui.py,sha256=
|
108
|
+
rbx/box/ui/utils/run_ui.py,sha256=S8pQ26yDpkh8SNC5m-lehb-Zh6c-8Ip1q_sMQmLcETA,3889
|
109
109
|
rbx/box/ui/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
110
110
|
rbx/box/ui/widgets/diff_box.py,sha256=4OxgwOvdm9nSVUKeKLzOQBlBweFu8LiTfp6g4ZkS5nM,1125
|
111
111
|
rbx/box/ui/widgets/file_log.py,sha256=3wlrmkWR-EMibwlwXOJ5sGpTFwFEkRaGYo5fdmf8L3w,1704
|
112
112
|
rbx/box/ui/widgets/interaction_box.py,sha256=mJoQjHegxkIL00OgiCULmV0_w-2ZcwsQEa-Y8NrDlZM,2252
|
113
113
|
rbx/box/ui/widgets/rich_log_box.py,sha256=mF565c_Y3RYUZ_GJEFj5Eb86SFjsib31wE5qu1K0UBM,91
|
114
|
-
rbx/box/ui/widgets/test_output_box.py,sha256=
|
114
|
+
rbx/box/ui/widgets/test_output_box.py,sha256=ws7Oa2E8ZABM6Q4ZtL2UQiq59sJzKYPe-STrqhZJI8M,3871
|
115
115
|
rbx/box/ui/widgets/two_sided_test_output_box.py,sha256=L-ORiDwd6CP5DFpavrKGBaX0ZHkSoQqbJrGZ4BdFUWc,2289
|
116
|
-
rbx/box/unit.py,sha256=
|
117
|
-
rbx/box/validators.py,sha256=
|
116
|
+
rbx/box/unit.py,sha256=B1GOt537hOh-E0KAhB7AAgTpcu9UbA8n3JLNlX-2tRg,7887
|
117
|
+
rbx/box/validators.py,sha256=z34cUMkuSlCPWnaCqaHqegCxuvmfhAvWlsqSeaduL6s,10580
|
118
118
|
rbx/config.py,sha256=Tj0NHSf13fXxbNpif5C4qnaL1k3S-G87OnzuykEAcNQ,8463
|
119
119
|
rbx/console.py,sha256=X8EJy68OROgh6ao3ZcUjZm5Y56VFMzen58ywAuQ7pAU,990
|
120
120
|
rbx/grading/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
121
|
-
rbx/grading/caching.py,sha256=
|
121
|
+
rbx/grading/caching.py,sha256=hasSs10PV4J_3e6b3xc7BDCnUNzT9uwrDZcZ_h_hL1I,16951
|
122
122
|
rbx/grading/debug_context.py,sha256=kuAXEI8yRG8xfhS9WKKIRh9X0e5JUD8zvl_cpczJTC8,699
|
123
123
|
rbx/grading/grading_context.py,sha256=TaRyLwPkkxvspQIFUFk8Ok0T8EST2pHMMNoVDx9lbFU,3416
|
124
124
|
rbx/grading/judge/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
|
-
rbx/grading/judge/cacher.py,sha256=
|
125
|
+
rbx/grading/judge/cacher.py,sha256=QiVa74gFUuN4pyw_0hT3qg4oMF0frc1Iu56svpRUa9k,20413
|
126
126
|
rbx/grading/judge/digester.py,sha256=gtOIe_iL4PEWA7OKelW1gjSI-nBvbOpDPJGV8VQyjSg,912
|
127
|
-
rbx/grading/judge/
|
127
|
+
rbx/grading/judge/program.py,sha256=ttT7X_uLls4ARIbid0MnSteo8Eti1fRw73FL_Ej6S_o,9683
|
128
|
+
rbx/grading/judge/sandbox.py,sha256=mcqJscMPhMfjKhxKFkwIP-I4bnQHHMWeBcXiWHGVS-k,21324
|
128
129
|
rbx/grading/judge/sandboxes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
129
|
-
rbx/grading/judge/sandboxes/
|
130
|
-
rbx/grading/judge/sandboxes/
|
131
|
-
rbx/grading/judge/
|
132
|
-
rbx/grading/judge/storage.py,sha256=T1r3g8NKzF6IpW2K2gCJSBz81NBAQ_j_0cwq58gqZFA,14373
|
133
|
-
rbx/grading/judge/test.py,sha256=ll0Iw7zyOpGdKPD_PGH7dvUkb4stQLu-ikbQnqJvuAc,944
|
134
|
-
rbx/grading/judge/testiso.py,sha256=v14DtkWiZFJ9AKMzrb0_vZKPWDt8jz8iIw1Z2O-Advk,1397
|
130
|
+
rbx/grading/judge/sandboxes/stupid_sandbox.py,sha256=-fSYt0WNf04rrakhxdrunYlmwO2uM2Pf1HmUX8qfxrI,11458
|
131
|
+
rbx/grading/judge/sandboxes/tee.py,sha256=fLulB8fV7k5cO-ikRgURpsETrvr6LoUSjGxFM3GZs5U,672
|
132
|
+
rbx/grading/judge/storage.py,sha256=A88O81-vzv8vMBGrO9gtFk8iB5fTD7ObpO8mvNH4OmA,14576
|
135
133
|
rbx/grading/limits.py,sha256=ev312UTOo8S4-3AAVibQdXZclWCxS96CdbZxqW4y1kE,770
|
136
|
-
rbx/grading/processing_context.py,sha256=Jg9kNnkH3hi2hiE6Gh23QwS89r9Zj230NMl1CUEHSfo,1866
|
137
134
|
rbx/grading/profiling.py,sha256=OEdtoAzjYjLfi-QI5Ke7tLZzJeqvGpMB2utQBNuH3E4,3369
|
138
|
-
rbx/grading/steps.py,sha256=
|
139
|
-
rbx/grading/steps_with_caching.py,sha256=
|
135
|
+
rbx/grading/steps.py,sha256=MkeWH3VfTcwBkKW8Jn5q32ttdJKw0m0_4Cl5rZiL5WI,26604
|
136
|
+
rbx/grading/steps_with_caching.py,sha256=RWHtmlEfszKnKM9ADrfbCUZbxZSTD-BiHV3XSiGW8WY,4797
|
140
137
|
rbx/providers/__init__.py,sha256=gHXg1BTiXJ_0Z_HoVTZrqhi5IIZ57Dhy0pt7K2ETbA4,1378
|
141
138
|
rbx/providers/codeforces.py,sha256=HWQN3Zb9UfXgCfwcNMEk6m1HoXQ-UE2odVfZoPukyCg,2294
|
142
139
|
rbx/providers/provider.py,sha256=CNRB-uJZkNFIWv8xhW2s8PY9EwUSK8Ey1Yvxk4YLvcg,688
|
@@ -146,7 +143,6 @@ rbx/resources/default_config.json,sha256=8GZVHns4nci0-e5ALk9C1lfO6TO9W2ZlmZtxHkL
|
|
146
143
|
rbx/resources/default_setter_config.mac.yml,sha256=UWRvdsFp-6I9dU1b1q9hYNAday9TXvyVd_5gquIkcFQ,1438
|
147
144
|
rbx/resources/default_setter_config.yml,sha256=cYTiQqxadRyOmgI9aS6LlG3Cn-azKhOmaZlpZBXvBow,1409
|
148
145
|
rbx/resources/envs/default.rbx.yml,sha256=quSPG5Xs9KroYLATNLPNtORLGRWtrLLt2Fx81T1enAM,1692
|
149
|
-
rbx/resources/envs/isolate.rbx.yml,sha256=iY7wHco2JYN0LEmZ-ErmjKLz7beyNMUxRkSbhB-Y6bY,867
|
150
146
|
rbx/resources/packagers/boca/checker.sh,sha256=kesoIYeCttAtuQBq-7HvfXK8cAFTJhFbqHm9rNd_udg,1272
|
151
147
|
rbx/resources/packagers/boca/compare.sh,sha256=a6AmQqwrIq616DHjp_S2l95wO7UiMVy0LQ9EajZKDDk,1201
|
152
148
|
rbx/resources/packagers/boca/compile/c,sha256=DZ9PWjgDTuauwY4my8Y8WXz0gZCBd4I7n0k0QxBaAUs,4466
|
@@ -204,10 +200,9 @@ rbx/resources/presets/default/problem/.gitignore,sha256=CMwGD717vKcbQrXjha2D4LMw
|
|
204
200
|
rbx/resources/presets/default/problem/gens/gen.cpp,sha256=rn6sGRjZ1sFE1Rq02r6488iquY9xTrutcvLv4d1sohA,178
|
205
201
|
rbx/resources/presets/default/problem/manual_tests/samples/000.in,sha256=w66OEtCJGqjUNj8cJrqgImgGVm8W_OlIUtF255ds-ow,4
|
206
202
|
rbx/resources/presets/default/problem/manual_tests/samples/001.in,sha256=P4QInDX87xXoDWu4PVIzUeNW5LtTlUKbMCvJ9uZOPGw,20
|
207
|
-
rbx/resources/presets/default/problem/problem.rbx.yml,sha256=
|
203
|
+
rbx/resources/presets/default/problem/problem.rbx.yml,sha256=SX8ohULvaRiFI9kIpLQ0hDEx8r5ozsfraK9PYr4YmQM,1691
|
208
204
|
rbx/resources/presets/default/problem/rbx.h,sha256=LBkbC3gbDPW2Fdm1p99hNhF7oKpZLLSY7dE4zpepp5w,2161
|
209
205
|
rbx/resources/presets/default/problem/sols/main.cpp,sha256=AW-j65DiFYUN18rddTKCWc_VyYCMgCbjZ0jAJ-0JLuA,124
|
210
|
-
rbx/resources/presets/default/problem/sols/slow.cpp,sha256=at9iXQjROaxG5f6OWH__phENb2SOK3crRfU7AwYT6hM,229
|
211
206
|
rbx/resources/presets/default/problem/sols/wa.cpp,sha256=Bj7tejPIlXG_JqUHWY1zi9TDbHdRZzgT_JDbCLRdhbQ,136
|
212
207
|
rbx/resources/presets/default/problem/statement/statement.rbx.tex,sha256=JHdiMN3NQQsysDA1w3RfOGmDFobCc68YCB6SURy2hHo,360
|
213
208
|
rbx/resources/presets/default/problem/testplan/random.py,sha256=XclCB6pw9NT1ahu9bjr3fLZidNGi1E8OnNAPYZEY-Yk,103
|
@@ -217,15 +212,15 @@ rbx/resources/presets/default/problem/wcmp.cpp,sha256=gbjJe3Vf9-YzHCEqBUq30aI3jM
|
|
217
212
|
rbx/resources/presets/default/shared/contest_template.rbx.tex,sha256=bEbsVybLJ18V7Ez1i5g8H6-5Aru2Bk1qPsDly_c26lw,1301
|
218
213
|
rbx/resources/presets/default/shared/icpc.sty,sha256=04feEwL7LRRvUFopwVAVjxdTvzE5gQtFsSkm6iJ5hLo,8042
|
219
214
|
rbx/resources/presets/default/shared/problem_template.rbx.tex,sha256=SfBxSwz1sVBUV5P6JmROXvlIqRfzt7muJwGtZhtCM7E,1427
|
220
|
-
rbx/resources/templates/rbx.h,sha256=
|
215
|
+
rbx/resources/templates/rbx.h,sha256=0AZds9R0PmuPgnlTENb33Y81LW0LlnmOJFaoN8oG3Yo,3638
|
221
216
|
rbx/resources/templates/template.cpp,sha256=xXWpWo7fa7HfmPNqkmHcmv3i46Wm0ZL-gPmkRfGvLn4,317
|
222
217
|
rbx/submitors/__init__.py,sha256=sVcRNnuKMZatmpGkQURaEVHK-MfU2U0nH4nOatuqywE,620
|
223
218
|
rbx/submitors/codeforces.py,sha256=s8c7sXfm5k76SKMC8g0Y93-RRf8wY2uWbBtA8ODD5eM,4030
|
224
219
|
rbx/submitors/submitor.py,sha256=8q-Hbdahxt30ciT_R9j_xF6lEPUh9IcfAUnzjQjbvHU,457
|
225
|
-
rbx/testing_utils.py,sha256=
|
226
|
-
rbx/utils.py,sha256=
|
227
|
-
rbx_cp-0.13.
|
228
|
-
rbx_cp-0.13.
|
229
|
-
rbx_cp-0.13.
|
230
|
-
rbx_cp-0.13.
|
231
|
-
rbx_cp-0.13.
|
220
|
+
rbx/testing_utils.py,sha256=965vlkQpUW8cEqjB6S2g_C_avL5fn503mJPbqjY_zt4,2317
|
221
|
+
rbx/utils.py,sha256=xDqmry5rpqRGPFrx3ipNGBt2WxWDAD5LwU7jvgibXkk,8630
|
222
|
+
rbx_cp-0.13.6.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
223
|
+
rbx_cp-0.13.6.dist-info/METADATA,sha256=YRfhn0e29x1tf9DRjJbTE2kL19oQN3gx7Cz1evofaUg,4659
|
224
|
+
rbx_cp-0.13.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
225
|
+
rbx_cp-0.13.6.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
|
226
|
+
rbx_cp-0.13.6.dist-info/RECORD,,
|