rbx.cp 0.5.50__py3-none-any.whl → 0.5.52__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/ui/run.py CHANGED
@@ -4,7 +4,7 @@ from typing import Optional, Set
4
4
  import textual
5
5
  from rich.text import Text
6
6
  from textual.app import ComposeResult
7
- from textual.containers import Center, Container, Grid
7
+ from textual.containers import Center, Grid
8
8
  from textual.coordinate import Coordinate
9
9
  from textual.screen import Screen
10
10
  from textual.widgets import Button, DataTable, Footer, Header, SelectionList
@@ -57,12 +57,12 @@ class SolutionReportScreen(Screen):
57
57
  cursor_type='row', cursor_foreground_priority='renderable'
58
58
  )
59
59
  if self.log_display_state is not None:
60
- yield LogDisplay()
60
+ yield LogDisplay(id='build-output')
61
61
 
62
62
  def on_mount(self):
63
- self.query_one(
64
- '#build-output', Container
65
- ).border_title = 'Test generation and validation'
63
+ # self.query_one(
64
+ # '#build-output', Container
65
+ # ).border_title = 'Test generation and validation'
66
66
  for solution, table in zip(
67
67
  self.skeleton.solutions,
68
68
  self.query(DataTable),
@@ -86,8 +86,7 @@ class SolutionReportScreen(Screen):
86
86
  return i
87
87
  raise
88
88
 
89
- def process(self, item: EvaluationItem):
90
- textual.log(item)
89
+ async def process(self, item: EvaluationItem):
91
90
  pkg = package.find_problem_package_or_die()
92
91
  sol_idx_in_skeleton = self._find_solution_index_in_skeleton(
93
92
  pkg.solutions[item.solution_index]
@@ -102,12 +101,12 @@ class SolutionReportScreen(Screen):
102
101
 
103
102
  table.update_cell_at(
104
103
  Coordinate(row=row_idx, column=2),
105
- get_testcase_markup_verdict(item.eval),
104
+ get_testcase_markup_verdict(await item.eval()),
106
105
  update_width=True,
107
106
  )
108
107
  table.update_cell_at(
109
108
  Coordinate(row=row_idx, column=3),
110
- get_evals_formatted_time([item.eval]),
109
+ get_evals_formatted_time([await item.eval()]),
111
110
  update_width=True,
112
111
  )
113
112
 
@@ -158,11 +157,11 @@ class RunScreen(Screen):
158
157
  def on_screen_resume(self):
159
158
  self.query_one('#run-sols', SelectionList).focus()
160
159
 
161
- def on_button_pressed(self, _: Button.Pressed):
162
- self.action_run()
160
+ async def on_button_pressed(self, _: Button.Pressed):
161
+ await self.action_run()
163
162
 
164
163
  @textual.work(thread=True)
165
- def _run_solutions(self, tracked_solutions: Set[str], check: bool):
164
+ async def _run_solutions(self, tracked_solutions: Set[str], check: bool):
166
165
  main_solution = package.get_main_solution()
167
166
  if check and main_solution is None:
168
167
  console.console.print(
@@ -176,9 +175,11 @@ class RunScreen(Screen):
176
175
  exitcode = self.app.call_from_thread(build)
177
176
 
178
177
  if exitcode != 0:
179
- textual.log('early quit')
178
+ textual.log(f'early quit: {exitcode}')
180
179
  return
181
180
 
181
+ textual.log('build finished ok, running solutions')
182
+
182
183
  res = run_solutions(tracked_solutions=tracked_solutions, check=check)
183
184
 
184
185
  async def mount_report_widget() -> SolutionReportScreen:
@@ -191,15 +192,15 @@ class RunScreen(Screen):
191
192
  )
192
193
  return screen
193
194
 
194
- new_screen = self.app.call_from_thread(mount_report_widget)
195
+ new_screen = await mount_report_widget()
195
196
 
196
- def process(item: EvaluationItem):
197
- new_screen.process(item)
197
+ async def process_item(item: EvaluationItem):
198
+ await new_screen.process(item)
198
199
 
199
200
  for item in res.items:
200
- self.app.call_from_thread(process, item)
201
+ self.app.call_from_thread(process_item, item)
201
202
 
202
- def action_run(self):
203
+ async def action_run(self):
203
204
  sols = self.query_one('#run-sols', SelectionList)
204
205
  config = self.query_one('#run-config', SelectionList)
205
206
 
rbx/box/unit.py CHANGED
@@ -103,7 +103,7 @@ async def run_validator_unit_tests(progress: StatusProgress):
103
103
 
104
104
  console.console.rule('Validator tests', style='info')
105
105
  if not entries:
106
- console.console.print(']No validator unit tests found.')
106
+ console.console.print('No validator unit tests found.')
107
107
  return
108
108
 
109
109
  compiled_validators = validators.compile_validators(vals, progress=progress)
@@ -14,11 +14,16 @@ read -r -d '' TestlibContent <<"EOF"
14
14
  {{testlib_content}}
15
15
  EOF
16
16
 
17
+ read -r -d '' RbxHeaderContent <<"EOF"
18
+ {{rbx_header_content}}
19
+ EOF
20
+
17
21
  read -r -d '' CheckerContent <<"EOF"
18
22
  {{checker_content}}
19
23
  EOF
20
24
 
21
25
  printf "%s" "${TestlibContent}" >testlib.h
26
+ printf "%s" "${RbxHeaderContent}" >rbx.h
22
27
  printf "%s" "${CheckerContent}" >$CHECKER_PATH
23
28
 
24
29
  checker_hash=($(md5sum $CHECKER_PATH))
@@ -0,0 +1,90 @@
1
+ #include <optional>
2
+ #include <stdexcept>
3
+ #include <string>
4
+
5
+ #ifndef _RBX_H
6
+ #define _RBX_H
7
+
8
+ std::optional<std::string> getStringVar(std::string name) {
9
+ //<rbx::string_var>
10
+ return std::nullopt;
11
+ }
12
+
13
+ std::optional<int> getIntVar(std::string name) {
14
+ //<rbx::int_var>
15
+ return std::nullopt;
16
+ }
17
+
18
+ std::optional<float> getFloatVar(std::string name) {
19
+ //<rbx::float_var>
20
+ return std::nullopt;
21
+ }
22
+
23
+ std::optional<bool> getBoolVar(std::string name) {
24
+ //<rbx::bool_var>
25
+ return std::nullopt;
26
+ }
27
+
28
+ template <typename T> T getVar(std::string name);
29
+
30
+ template <> int getVar<int>(std::string name) {
31
+ auto opt = getIntVar(name);
32
+ if (!opt.has_value()) {
33
+ throw std::runtime_error("Variable " + name +
34
+ " is not an integer or could not be found");
35
+ }
36
+ return opt.value();
37
+ }
38
+
39
+ template <> float getVar<float>(std::string name) {
40
+ auto opt = getFloatVar(name);
41
+ if (!opt.has_value()) {
42
+ auto intOpt = getIntVar(name);
43
+ if (intOpt.has_value()) {
44
+ opt = (float)intOpt.value();
45
+ }
46
+ }
47
+ if (!opt.has_value()) {
48
+ throw std::runtime_error("Variable " + name +
49
+ " is not a float or could not be found");
50
+ }
51
+ return opt.value();
52
+ }
53
+
54
+ template <> double getVar<double>(std::string name) {
55
+ return getVar<float>(name);
56
+ }
57
+
58
+ template <> std::string getVar<std::string>(std::string name) {
59
+ auto opt = getStringVar(name);
60
+ if (!opt.has_value()) {
61
+ auto intOpt = getIntVar(name);
62
+ if (intOpt.has_value()) {
63
+ opt = std::to_string(intOpt.value());
64
+ }
65
+ }
66
+ if (!opt.has_value()) {
67
+ auto floatOpt = getFloatVar(name);
68
+ if (floatOpt.has_value()) {
69
+ opt = std::to_string(floatOpt.value());
70
+ }
71
+ }
72
+ if (!opt.has_value()) {
73
+ throw std::runtime_error("Variable " + name +
74
+ " is not a string or could not be found");
75
+ }
76
+ return opt.value();
77
+ }
78
+
79
+ template <> bool getVar<bool>(std::string name) {
80
+ auto opt = getBoolVar(name);
81
+ if (!opt.has_value()) {
82
+ opt = getIntVar(name) != 0;
83
+ }
84
+ if (!opt.has_value()) {
85
+ throw std::runtime_error("Variable " + name +
86
+ " is not a boolean or could not be found");
87
+ }
88
+ return opt.value();
89
+ }
90
+ #endif
rbx/testing_utils.py CHANGED
@@ -17,9 +17,9 @@ def get_testdata_path() -> pathlib.Path:
17
17
 
18
18
 
19
19
  def clear_all_functools_cache():
20
- from rbx.box import environment, package
20
+ from rbx.box import environment, header, package
21
21
 
22
- pkgs = [environment, package]
22
+ pkgs = [environment, package, header]
23
23
 
24
24
  for pkg in pkgs:
25
25
  for fn in pkg.__dict__.values():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.5.50
3
+ Version: 0.5.52
4
4
  Summary:
5
5
  Author: Roberto Sales
6
6
  Requires-Python: >=3.9,<4.0
@@ -10,6 +10,7 @@ Classifier: Programming Language :: Python :: 3.10
10
10
  Classifier: Programming Language :: Python :: 3.11
11
11
  Classifier: Programming Language :: Python :: 3.12
12
12
  Classifier: Programming Language :: Python :: 3.13
13
+ Requires-Dist: async-lru (>=2.0.5,<3.0.0)
13
14
  Requires-Dist: chardet (>=5.2.0,<6.0.0)
14
15
  Requires-Dist: fastapi (>=0.115.8,<0.116.0)
15
16
  Requires-Dist: filelock (>=3.14.0,<4.0.0)
@@ -19,6 +20,7 @@ Requires-Dist: lark (>=1.2.2,<2.0.0)
19
20
  Requires-Dist: latexbuild (>=0.2.2,<0.3.0)
20
21
  Requires-Dist: mechanize (>=0.4.10,<0.5.0)
21
22
  Requires-Dist: more-itertools (>=10.5.0,<11.0.0)
23
+ Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
22
24
  Requires-Dist: pydantic (==2.8.2)
23
25
  Requires-Dist: pydantic-xml[lxml] (>=2.11.0,<3.0.0)
24
26
  Requires-Dist: pyte (>=0.8.2,<0.9.0)
@@ -5,8 +5,8 @@ rbx/box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  rbx/box/builder.py,sha256=MDm2qqmhedAbhn3rWP6cDwbBsGhV6sz_2sg1zLkPDw0,3613
6
6
  rbx/box/cd.py,sha256=9a_SOnzoJBXxxffp4Wbf3UKXIwKuN3Hvj7K6SocALwE,1194
7
7
  rbx/box/checkers.py,sha256=eb4tqtVUJYlme_Vkj2TGkUABM7EMS0P1EswhMYjN7BI,11459
8
- rbx/box/cli.py,sha256=0JeJSVTK_5coijsm1b1zKQzuv7RBgexoM3klDeveabY,26487
9
- rbx/box/code.py,sha256=Cnts7noJaaoM35DZ9xcJAKXLwsKB4oBebMidqmMMO4M,18795
8
+ rbx/box/cli.py,sha256=GPoGDgmaV1lXL9puXhUbZUIEU0lOMvdH1kD4TGCXkCo,26738
9
+ rbx/box/code.py,sha256=hmA2EoGOr13AYzicHNsnU2SkFW-44l7kOdu8QRwTJlI,18848
10
10
  rbx/box/compile.py,sha256=OJLthDQ921w9vyoE6Gk1Df54i5RwtRJ2YG-8XEfefcs,2489
11
11
  rbx/box/conftest.py,sha256=sEmciXSeDC-wmrZ1JSxbsUenKNP_VWW32mrCun2pY3I,1070
12
12
  rbx/box/contest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -18,26 +18,29 @@ rbx/box/contest/schema.py,sha256=JMAig5WpaOahNgAHxA9vX4zYeVYDxpjKP_PFGvmmkE0,495
18
18
  rbx/box/contest/statements.py,sha256=Or8gFb6P_oViGdeiVgepXsvd_W84mA7LRaVmiAXWWSg,2977
19
19
  rbx/box/creation.py,sha256=Evz7K6JoarD-4JJQsZsgoxU9FgCF9Z7-LfuroG4Cqls,2444
20
20
  rbx/box/deferred.py,sha256=II3X9e87JCOZtmspnHh-n4PFqh-FsH_oc0XJHZ9ZYVQ,691
21
- rbx/box/download.py,sha256=MFP-R26JiYGAP89I0TK-0fYc69Fsd20tsBqgtRCy5AE,2234
22
- rbx/box/environment.py,sha256=S-OLvR2_Nac8m923b9AtDhOY3goRJXlPA_I3s7BeDqQ,11162
21
+ rbx/box/download.py,sha256=DxAiAk4lDYWEz1C9UTvZzHTq6hgm4fxGezApm2IkCTM,2601
22
+ rbx/box/environment.py,sha256=fZnNQCdpG3xzKne0FY7gkuaopy6fdYvVFAXeHmC1ZOo,11498
23
23
  rbx/box/extensions.py,sha256=Von8kIeXvNFTkGlMRMTvL2HIHPwlkuiMswr-ydbGV1w,519
24
24
  rbx/box/formatting.py,sha256=3phFRHzqVXj4Ok1yDhCq6Clbw6KlqwJNpMhs--oTWFI,405
25
25
  rbx/box/generators.py,sha256=5-3K0JSLR9GbV0LmOkvNsWiQaMvhFBrI56ZaV1WgodQ,13472
26
26
  rbx/box/generators_test.py,sha256=J7aBfuJhU84MWDWzgReRoOuQw_hVa09B8gTKAvL2XVo,1987
27
+ rbx/box/header.py,sha256=ifErXcIxG5lM5AyRiHDr7JE401vR4ORNXCNpHXxN_ls,2001
27
28
  rbx/box/lazy_importing_main.py,sha256=6Z8As7qVFFT619xHH9Xt8VCH57NjC4aDxfAgkWiUwT8,116
28
29
  rbx/box/lazy_importing_test.py,sha256=B0-b3y_DkxEmtVfu4NfmVsgVdFl6kRCsEL6GLMHJISo,628
29
- rbx/box/main.py,sha256=Imwc0ZkheOpa5r8S0Xpb8RLQzJgxb9vyuSR4_wab11g,43
30
- rbx/box/naming.py,sha256=n3Nvw2MuWtAjywDxYDV5gg22Upf8Ap1lYavo0o46SRA,612
30
+ rbx/box/main.py,sha256=a8CYi77kOywPFly4-ucEIJLXQW-1NFp91kK2fA42YTE,86
31
+ rbx/box/naming.py,sha256=OiaiLe0k1sBx4vIXemUqnzfdNte79rrCgOvBze9XaTw,940
31
32
  rbx/box/package.py,sha256=YuX_FS6yKx6FaFz0NF0cx3v6jzhqwvsLr3Oprx_TTJA,13645
32
33
  rbx/box/packaging/boca/extension.py,sha256=EQALNEOv4zVDXSKs_dk11n92y7cBZVn8TogIK683lE0,890
33
- rbx/box/packaging/boca/packager.py,sha256=CUMoQICrkQQBFElmI9SrvXlFFnpwkTiJ9qbOSJOy6AE,12512
34
- rbx/box/packaging/contest_main.py,sha256=nMdgPE4OK_tsnUMdRI1cJwLpgxGrwW_mJjox0oOALWw,2757
35
- rbx/box/packaging/main.py,sha256=WOW0JRYcZRuWOEsfd4AKX5wLqu8Br1TYaEfHjqWmu9Q,3070
36
- rbx/box/packaging/moj/packager.py,sha256=Ro_TO3RVCCRAxNcCio0u42TLfW8FnX9IohMChmGlrvo,8499
34
+ rbx/box/packaging/boca/packager.py,sha256=XPCauwbemjWNNnfIocJ8pxnlsxRjst4wYXJsVDyMQlM,12632
35
+ rbx/box/packaging/contest_main.py,sha256=UsRfIdNmOf0iLUbzgjxzyECfMuCQINstG1SCClGHaUQ,2808
36
+ rbx/box/packaging/main.py,sha256=qltqDncaxtvP3xXyUZGqWampBvh340JJjLru0h8XTPI,3476
37
+ rbx/box/packaging/moj/packager.py,sha256=tk0S0hayPnbGrFQsw1Ht_mYOriRlzYHgrkXLO-0ZknY,8724
37
38
  rbx/box/packaging/packager.py,sha256=da2haC1L9cG30myneMrRIAdGubtid0Xmy38BHKPCZZ4,3633
38
- rbx/box/packaging/polygon/packager.py,sha256=qTGOUckevdOCt_ES63pN3uhmhDl9JuNcZ1XEnGNq-tU,10833
39
+ rbx/box/packaging/polygon/packager.py,sha256=GfZ-Dc2TDKkb3QNnfOy8yxldho2L401Ao06oWg--Gcs,11714
40
+ rbx/box/packaging/polygon/polygon_api.py,sha256=mPKEqiwANJ1nr-JhOgzGMaDhnbljsAgzzPHW6kkf7R4,41016
39
41
  rbx/box/packaging/polygon/test.py,sha256=bgEju5PwudgyfwxXJagm8fM6CJVlWM6l_-2q1V-oKaQ,3069
40
- rbx/box/packaging/polygon/xml_schema.py,sha256=-r24bCeRMGLrGGoT9FIgmqr87xHL-JzrFaR6bztbYtw,2703
42
+ rbx/box/packaging/polygon/upload.py,sha256=2WyEXlfprLUDbq-9AMB5hXOQVvvmsT1-stO60MHrEo0,11182
43
+ rbx/box/packaging/polygon/xml_schema.py,sha256=ZgcLyvxggMUccbTNdzflue5G-FTN2_ZmOGGF7FD0Y5A,2851
41
44
  rbx/box/presets/__init__.py,sha256=BwmjBw8wF8yiZFjCYBjMk-HGMZaRwhlfszbWAj3B0vw,18689
42
45
  rbx/box/presets/fetch.py,sha256=F-BCOlvEBEyDqtOhiDuGPn4EDtA4Bwm-fqHJ7zZGlW8,1975
43
46
  rbx/box/presets/lock_schema.py,sha256=6sRPnyePOC8yy-5WcD5JRZdDJHf8loqbvpQ1IPiOU9s,349
@@ -46,7 +49,7 @@ rbx/box/retries.py,sha256=tRk2K1bXw2xnwkAj2CsktRHTEhw7YKcPxMQTT6mCy-E,4707
46
49
  rbx/box/sanitizers/warning_stack.py,sha256=RI97_GJgdjTKIXY_r0EKp5h0qQQSDSdNDh5K7zINrqs,2861
47
50
  rbx/box/schema.py,sha256=tOQ1tLHqc_5V-UgrzM44aS8ULAkq-IkeErxjLCFVA8I,16778
48
51
  rbx/box/setter_config.py,sha256=s53talhwM6FTGDCcBhY7IlZ6_6mJ3PMp6V4kTtaSs50,4262
49
- rbx/box/solutions.py,sha256=eTMpxIvhU3IUF1gfR_y20o_6NZ4hDtMGhTi4ookG9TY,43766
52
+ rbx/box/solutions.py,sha256=1DnO6iygX9IflVk5ierP0oL9LS8EuU2cSui8z1YhN08,44653
50
53
  rbx/box/solutions_test.py,sha256=TCowbxBG3SvDlFO5-qtBj_M_HrAHe0IJaI1XwoQ1d00,1718
51
54
  rbx/box/state.py,sha256=MMf3DvfQji0jKEliCHct2Tpp_0epL1tvP8HbHNArQIc,166
52
55
  rbx/box/statements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -56,21 +59,21 @@ rbx/box/statements/joiners.py,sha256=jItNXkAbTjFQpPMgfDMW86n3vMTbaE8sgo9I8Yf4Txg
56
59
  rbx/box/statements/latex.py,sha256=LkcHwXjMFxbw--Gj9T1VkFKQFsXhY9dN7xZHpZycNW8,1346
57
60
  rbx/box/statements/latex_jinja.py,sha256=7WBfn1h8DpqCAmSE6Av64HfURMnJ2AO4QX1CD72sz5E,7096
58
61
  rbx/box/statements/schema.py,sha256=ES8EUE9JE_uJlDwQx1kZd_5nQJyABtlnjP5IjbWaJ-0,3897
59
- rbx/box/stresses.py,sha256=cY7cCqnCs_bO61MrsUDJGxL4oZDaR5_4ifgPLD7XdSM,12134
62
+ rbx/box/stresses.py,sha256=k-m8Q2IVd5dap2fSDCbVqLj2LKqXzz6rIR8j9F8sLhY,12310
60
63
  rbx/box/stressing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
64
  rbx/box/stressing/finder_parser.py,sha256=jXpYNa4FyugzmHi3r96Uv4rU1krRQJc5Ihr9jf1cvNo,11918
62
65
  rbx/box/stressing/generator_parser.py,sha256=oHZryjR3YohgaSO9WEirQ7b2e-98WgZStF0N99W4Thw,7380
63
66
  rbx/box/tasks.py,sha256=oyWtgZvIEIkVV6e-GcJx7x8Z3T5tIDFBZbp0638sLeY,10036
64
67
  rbx/box/testcase_extractors.py,sha256=T5vCW5qERlqitGrFP6RuITEVr9o8XQozNa4AsxfuV_Y,11871
65
- rbx/box/testcase_utils.py,sha256=Ppg_P1Nq48cuKo1XiIi4b8FZkMW8IBp_4Wf1Yf42YuI,7019
68
+ rbx/box/testcase_utils.py,sha256=31rvCpLi681R6Xm1WpG8HPDOkTtF0bRWa8IsmdWGLCk,7556
66
69
  rbx/box/testcases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
70
  rbx/box/testcases/main.py,sha256=_I7h_obRcpNLRQ6dDJDIE5NAvTyn5nBOhdsBhRA_PvU,5442
68
71
  rbx/box/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- rbx/box/ui/captured_log.py,sha256=ptICDPViVnz-_2NfrcB0SSBXNW5L74zI-vAZNN7kSok,11319
70
- rbx/box/ui/css/app.tcss,sha256=apd5PkPEvl5jK3kE2qrxPyVED1VnvSsj08QQwzUPwEA,786
72
+ rbx/box/ui/captured_log.py,sha256=BIlhMFrDcWFa9YD8pUY21G-fJSIBzAz9lpaCZH2WJmc,11526
73
+ rbx/box/ui/css/app.tcss,sha256=88tmZCnn4Y2wD-JFEGHoD3VuJGhMU7S7rM2k8FHUZek,777
71
74
  rbx/box/ui/main.py,sha256=b0rHcBF42W4AOCv7WhtiGf_rUnY0yxpqO5oj3wfR4R4,984
72
- rbx/box/ui/run.py,sha256=wMEXrEFdQvMHz2hRKAFIithTnTtaL0kNQZu0jKmb8jI,7060
73
- rbx/box/unit.py,sha256=ySnosNg-b50mJU_9jEpRYm5wiiZxkdhKR9AVQXbtTOE,6478
75
+ rbx/box/ui/run.py,sha256=Ed5zk3kg3vMggQCud-5GimfGL_n_QwtgATiIim5HYw0,7169
76
+ rbx/box/unit.py,sha256=PY96t8qnsHLsoJVanbDnrIx-s8Dada9Fj_v375MhvTw,6477
74
77
  rbx/box/validators.py,sha256=oqlNhw7jivbbH5l8g3xwihPRy76AM7MA3G4A8nyI_V0,10416
75
78
  rbx/box/validators_test.py,sha256=WY4Ho-wlsPHc0YNuz0KFVd6KQ9ouuiou3w5_zMOZ4Fs,362
76
79
  rbx/checker.py,sha256=pj1jO3my48ru-qugbER5onccANCjoR0-PaFe3H3VGEY,4118
@@ -111,7 +114,7 @@ rbx/resources/default_setter_config.mac.yml,sha256=i28xwAUDg-kuxx19knCiYkh-NR7Qe
111
114
  rbx/resources/default_setter_config.yml,sha256=oy6fbuQyYaJS2Cw2zcbYcBBGt6138CyB3-bLl45_QqY,1000
112
115
  rbx/resources/envs/default.rbx.yml,sha256=8gl4DXc5mVISx__1libPQfmuHYdW32xjysfqpNESIAo,853
113
116
  rbx/resources/envs/isolate.rbx.yml,sha256=VZAJ-Mu-A5Rt4m0VtMygOXA7eLLvCCmoorv_0acDmXQ,870
114
- rbx/resources/packagers/boca/checker.sh,sha256=sjJBj0IUG3U5pRPMIqiSER8Ktuy8Ff1SAi1GMmLR0GA,1088
117
+ rbx/resources/packagers/boca/checker.sh,sha256=q34ZS2clnctOj_8XPUxUGc-qm0kGgUG9ThDm-WZRz3I,1196
115
118
  rbx/resources/packagers/boca/compare.sh,sha256=a6AmQqwrIq616DHjp_S2l95wO7UiMVy0LQ9EajZKDDk,1201
116
119
  rbx/resources/packagers/boca/compile/c,sha256=lHLvxzkG_he5jmxWrix0WT80ipMWWUZdOgOQMSpj8oo,4507
117
120
  rbx/resources/packagers/boca/compile/cc,sha256=B_18QkUGcjUg6yrTFlTQuMWnHpTWUKPZmFuk7Y0l1VA,4561
@@ -176,6 +179,7 @@ rbx/resources/presets/default/problem/tests/samples/000.in,sha256=w66OEtCJGqjUNj
176
179
  rbx/resources/presets/default/problem/tests/samples/001.in,sha256=P4QInDX87xXoDWu4PVIzUeNW5LtTlUKbMCvJ9uZOPGw,20
177
180
  rbx/resources/presets/default/problem/validator.cpp,sha256=VwZZUVq8GZHB07eOb6AoQirrYttPfTpF6P5m6I9nsLI,333
178
181
  rbx/resources/presets/default/problem/wcmp.cpp,sha256=gbjJe3Vf9-YzHCEqBUq30aI3jMZXhqBDn3jjecYOn-w,902
182
+ rbx/resources/templates/rbx.h,sha256=7v-dm4cwP6trsJR-Ixk3_JNfaG1dwM_Lm8FcVPaA0YA,2180
179
183
  rbx/resources/templates/template.cpp,sha256=xXWpWo7fa7HfmPNqkmHcmv3i46Wm0ZL-gPmkRfGvLn4,317
180
184
  rbx/run.py,sha256=8WsEAdj7FwYSc9itfJ977n5HN5CYN63T__HRYI6IB1A,1515
181
185
  rbx/schema.py,sha256=qcxuuxUJ0KwHR03CEYvdoP1SYW7yes3QyuI_0lnVMl0,1494
@@ -186,10 +190,10 @@ rbx/submitors/submitor.py,sha256=8q-Hbdahxt30ciT_R9j_xF6lEPUh9IcfAUnzjQjbvHU,457
186
190
  rbx/test.py,sha256=tZyTrXDK8MLR-1TyCRxiOiNz-PhlXVpshfUGphakkT4,11830
187
191
  rbx/testcase.py,sha256=yKOq3CAJZ1YTmInvnoIs0u1iJnRj_X85XiWbLI-p9d8,1951
188
192
  rbx/testcase_rendering.py,sha256=nfmv6dSEqd4aR3TsaODwkKGK6AXty_DDKtWf_ejiQpI,2084
189
- rbx/testing_utils.py,sha256=ZXMysGXpTtvS1lfLL38FuD5iSIyxi3ARjQePDrUmEtc,2067
193
+ rbx/testing_utils.py,sha256=x_PqD8Zd2PkN91NxVHUnSTs044-1WK5KKtttKQBXpFs,2083
190
194
  rbx/utils.py,sha256=6e1eXRzNE-52D0UVtqclePxqR4Haiqt8qWCrSVjnGuE,4585
191
- rbx_cp-0.5.50.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
192
- rbx_cp-0.5.50.dist-info/METADATA,sha256=ScwTLSdZ7ISYKsmPKdWkq1hT0AOfAm25GBzQT9c4u-E,3261
193
- rbx_cp-0.5.50.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
194
- rbx_cp-0.5.50.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
195
- rbx_cp-0.5.50.dist-info/RECORD,,
195
+ rbx_cp-0.5.52.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
196
+ rbx_cp-0.5.52.dist-info/METADATA,sha256=zA9fGYWC651-X-bxyI87ll66EM9GqMSn7FF28UIcAkE,3348
197
+ rbx_cp-0.5.52.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
198
+ rbx_cp-0.5.52.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
199
+ rbx_cp-0.5.52.dist-info/RECORD,,