rbx.cp 0.5.60__py3-none-any.whl → 0.5.62__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.
Files changed (40) hide show
  1. rbx/box/cd.py +14 -0
  2. rbx/box/cli.py +6 -0
  3. rbx/box/code.py +34 -5
  4. rbx/box/contest/main.py +6 -2
  5. rbx/box/git_utils.py +28 -0
  6. rbx/box/package.py +23 -0
  7. rbx/box/packaging/boca/packager.py +3 -18
  8. rbx/box/packaging/main.py +1 -1
  9. rbx/box/packaging/moj/packager.py +1 -1
  10. rbx/box/packaging/polygon/upload.py +7 -5
  11. rbx/box/presets/__init__.py +80 -6
  12. rbx/box/presets/fetch.py +18 -1
  13. rbx/box/retries.py +2 -0
  14. rbx/box/solutions.py +238 -113
  15. rbx/box/solutions_test.py +3 -1
  16. rbx/box/tasks.py +6 -1
  17. rbx/box/testcase_utils.py +3 -0
  18. rbx/box/ui/css/app.tcss +14 -2
  19. rbx/box/ui/main.py +3 -5
  20. rbx/box/ui/screens/error.py +19 -0
  21. rbx/box/ui/screens/run.py +4 -12
  22. rbx/box/ui/screens/run_explorer.py +77 -1
  23. rbx/box/ui/screens/run_test_explorer.py +155 -0
  24. rbx/box/ui/screens/selector.py +26 -0
  25. rbx/box/ui/screens/test_explorer.py +20 -5
  26. rbx/box/ui/utils/__init__.py +0 -0
  27. rbx/box/ui/utils/run_ui.py +95 -0
  28. rbx/box/ui/widgets/__init__.py +0 -0
  29. rbx/box/ui/widgets/file_log.py +3 -1
  30. rbx/box/ui/widgets/test_output_box.py +104 -0
  31. rbx/box/ui/widgets/two_sided_test_output_box.py +56 -0
  32. rbx/grading/steps.py +1 -0
  33. rbx/resources/packagers/boca/compile/java +55 -59
  34. rbx/resources/packagers/boca/interactive/java +2 -2
  35. rbx/resources/packagers/boca/run/java +2 -2
  36. {rbx_cp-0.5.60.dist-info → rbx_cp-0.5.62.dist-info}/METADATA +1 -1
  37. {rbx_cp-0.5.60.dist-info → rbx_cp-0.5.62.dist-info}/RECORD +40 -31
  38. {rbx_cp-0.5.60.dist-info → rbx_cp-0.5.62.dist-info}/LICENSE +0 -0
  39. {rbx_cp-0.5.60.dist-info → rbx_cp-0.5.62.dist-info}/WHEEL +0 -0
  40. {rbx_cp-0.5.60.dist-info → rbx_cp-0.5.62.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,56 @@
1
+ from typing import Optional
2
+
3
+ from textual.app import ComposeResult
4
+ from textual.containers import Horizontal
5
+ from textual.reactive import reactive
6
+ from textual.widget import Widget
7
+
8
+ from rbx.box.ui.widgets.test_output_box import TestBoxWidget, TestcaseRenderingData
9
+
10
+
11
+ class TwoSidedTestBoxWidget(Widget, can_focus=False):
12
+ data: reactive[TestcaseRenderingData] = reactive(
13
+ default=lambda: TestcaseRenderingData(),
14
+ bindings=True,
15
+ )
16
+ diff_with_data: reactive[Optional[TestcaseRenderingData]] = reactive(
17
+ default=None,
18
+ bindings=True,
19
+ )
20
+
21
+ def compose(self) -> ComposeResult:
22
+ with Horizontal(id='two-sided-test-box'):
23
+ yield TestBoxWidget(id='test-box-1')
24
+ diff_box = TestBoxWidget(id='test-box-2')
25
+ diff_box.display = False
26
+ yield diff_box
27
+
28
+ def watch_data(self, data: TestcaseRenderingData):
29
+ self.query_one('#test-box-1', TestBoxWidget).data = data
30
+
31
+ def watch_diff_with_data(self, diff_with_data: Optional[TestcaseRenderingData]):
32
+ if diff_with_data is None:
33
+ self.query_one('#test-box-2', TestBoxWidget).display = False
34
+ else:
35
+ self.query_one('#test-box-2', TestBoxWidget).display = True
36
+ self.query_one('#test-box-2', TestBoxWidget).data = diff_with_data
37
+
38
+ def reset(self):
39
+ self.query_one('#test-box-1', TestBoxWidget).reset()
40
+ self.query_one('#test-box-2', TestBoxWidget).reset()
41
+
42
+ def show_output(self):
43
+ self.query_one('#test-box-1', TestBoxWidget).show_output()
44
+ self.query_one('#test-box-2', TestBoxWidget).show_output()
45
+
46
+ def show_stderr(self):
47
+ self.query_one('#test-box-1', TestBoxWidget).show_stderr()
48
+ self.query_one('#test-box-2', TestBoxWidget).show_stderr()
49
+
50
+ def show_log(self):
51
+ self.query_one('#test-box-1', TestBoxWidget).show_log()
52
+ self.query_one('#test-box-2', TestBoxWidget).show_log()
53
+
54
+ def toggle_metadata(self):
55
+ self.query_one('#test-box-1', TestBoxWidget).toggle_metadata()
56
+ self.query_one('#test-box-2', TestBoxWidget).toggle_metadata()
rbx/grading/steps.py CHANGED
@@ -234,6 +234,7 @@ class TestcaseLog(RunLog):
234
234
  stdout_absolute_path: Optional[pathlib.Path] = None
235
235
  stderr_absolute_path: Optional[pathlib.Path] = None
236
236
  log_absolute_path: Optional[pathlib.Path] = None
237
+ eval_absolute_path: Optional[pathlib.Path] = None
237
238
 
238
239
 
239
240
  class CheckerResult(BaseModel):
@@ -41,50 +41,50 @@
41
41
 
42
42
  umask 0022
43
43
  if [ "$1" == "" ]; then
44
- echo "parameter problem"
45
- exit 43
44
+ echo "parameter problem"
45
+ exit 43
46
46
  fi
47
47
  name="$1"
48
48
  if [ ! -r "$1" ]; then
49
- echo "$1 not found or it's not readable"
50
- exit 44
49
+ echo "$1 not found or it's not readable"
50
+ exit 44
51
51
  fi
52
52
  id -u bocajail >/dev/null 2>/dev/null
53
53
  if [ $? == 0 ]; then
54
- bocau=`id -u bocajail`
55
- bocag=`id -g bocajail`
56
- chown bocajail.nogroup .
54
+ bocau=$(id -u bocajail)
55
+ bocag=$(id -g bocajail)
56
+ chown bocajail.nogroup .
57
57
  else
58
- bocau=`id -u nobody`
59
- bocag=`id -g nobody`
60
- chown nobody.nogroup .
58
+ bocau=$(id -u nobody)
59
+ bocag=$(id -g nobody)
60
+ chown nobody.nogroup .
61
61
  fi
62
62
  if [ "$bocau" == "" -o "$bocag" == "" ]; then
63
- echo "error finding user to run script"
64
- exit 43
63
+ echo "error finding user to run script"
64
+ exit 43
65
65
  fi
66
66
 
67
67
  mkdir -p src
68
68
  if [ "${name##*.}" == "zip" -o "${name##*.}" == "ZIP" ]; then
69
- unzip "$name" -d src
70
- if [ "${name##*.}" == "zip" ]; then
71
- name=`basename $name .zip`
72
- else
73
- name=`basename $name .ZIP`
74
- fi
69
+ unzip "$name" -d src
70
+ if [ "${name##*.}" == "zip" ]; then
71
+ name=$(basename $name .zip)
72
+ else
73
+ name=$(basename $name .ZIP)
74
+ fi
75
75
  else
76
- cp "$name" src
76
+ cp "$name" src
77
77
  fi
78
78
  chown -R $bocau src
79
79
  chmod -R 700 src
80
80
 
81
81
  # this script makes use of safeexec to execute the code with less privilegies
82
82
  # make sure that directories below are correct.
83
- sf=`which safeexec`
83
+ sf=$(which safeexec)
84
84
  [ -x "$sf" ] || sf=/usr/bin/safeexec
85
85
  if [ ! -x $sf ]; then
86
- echo "$sf not found or it's not executable"
87
- exit 46
86
+ echo "$sf not found or it's not executable"
87
+ exit 46
88
88
  fi
89
89
 
90
90
  # setting up the timelimit according to the problem
@@ -98,31 +98,27 @@ time=30
98
98
 
99
99
  maxm=512
100
100
  if [ "$4" != "" -a "$4" -gt "512" ]; then
101
- maxm=$4
101
+ maxm=$4
102
102
  fi
103
103
 
104
- if [ "$2" == "" ]; then
105
- jarfile=run.jar
106
- else
107
- jarfile=$2
108
- fi
104
+ jarfile=run.jar
109
105
 
110
- cdir=`pwd`
106
+ cdir=$(pwd)
111
107
  echo "Current directory is $cdir" >&2
112
- mainname=`echo $name | cut -d'.' -f1`
113
- if [ "$mainname" == "" ]; then
114
- mainname=Main
115
- fi
116
108
 
117
- cat <<EOF > compileit.sh
109
+ # Make sure the class name is Main.
110
+ mv "src/$name" "src/Main.java"
111
+ sed -i -E "s/public[[:space:]]+class[[:space:]]+[A-Za-z0-9_\\$]+([^A-Za-z0-9_\\$])/public class Main\1/" src/Main.java
112
+
113
+ cat <<EOF >compileit.sh
118
114
  #!/bin/bash
119
- javac=`which javac`
115
+ javac=$(which javac)
120
116
  [ -x "\$javac" ] || javac=/usr/bin/javac
121
117
  if [ ! -x \$javac ]; then
122
118
  echo "\$javac not found or it's not executable"
123
119
  exit 47
124
120
  fi
125
- jar=`which jar`
121
+ jar=$(which jar)
126
122
  [ -x "\$jar" ] || jar=/usr/bin/jar
127
123
  if [ ! -x \$jar ]; then
128
124
  echo "\$jar not found or it's not executable"
@@ -130,8 +126,8 @@ if [ ! -x \$jar ]; then
130
126
  fi
131
127
  export CLASSPATH=.:\$CLASSPATH
132
128
  cd src
133
- if [ -r "$name" ]; then
134
- \$javac "$name"
129
+ if [ -r "Main.java" ]; then
130
+ \$javac Main.java
135
131
  echo \$? > ../compileit.retcode
136
132
  fi
137
133
  find . -name "*.java" | while read lin; do
@@ -139,15 +135,15 @@ find . -name "*.java" | while read lin; do
139
135
  echo \$? > ../compileit.retcode
140
136
  done
141
137
  rm -f ../$jarfile
142
- \$jar cvfe ../$jarfile $mainname *
138
+ \$jar cvfe ../$jarfile Main *
143
139
  exit 0
144
140
  EOF
145
141
  chmod 755 compileit.sh
146
142
 
147
143
  echo $cdir | grep -q "/bocajail"
148
144
  if [ $? == 0 ]; then
149
- cdir=`echo $cdir | sed "s/.*\/bocajail//"`
150
- cat <<EOF > runit.sh
145
+ cdir=$(echo $cdir | sed "s/.*\/bocajail//")
146
+ cat <<EOF >runit.sh
151
147
  #!/bin/bash
152
148
  cd "$cdir"
153
149
  [ -f /proc/cpuinfo ] || /bin/mount -t proc proc /proc
@@ -162,33 +158,33 @@ if [ ! -d /bocajail ]; then
162
158
  /bin/umount /sys 2>/dev/null
163
159
  fi
164
160
  EOF
165
- chmod 755 runit.sh
166
- chroot /bocajail "$cdir/runit.sh"
167
- if [ -r runit.retcode ]; then
168
- ret=`cat runit.retcode`
169
- else
170
- ret=99
171
- fi
161
+ chmod 755 runit.sh
162
+ chroot /bocajail "$cdir/runit.sh"
163
+ if [ -r runit.retcode ]; then
164
+ ret=$(cat runit.retcode)
165
+ else
166
+ ret=99
167
+ fi
172
168
  else
173
- echo "COMPILATION IS NOT BEING CHROOTED -- THIS IS NOT AN IDEAL SETTING"
174
- # $javac "$name"
175
- $sf -r1 -t$time -T$ttime -F256 -u256 -U$bocau -G$bocag -ostdout0 -estderr0 -n0 -C. -d20000000 -m20000000 ./compileit.sh
176
- ret=$?
169
+ echo "COMPILATION IS NOT BEING CHROOTED -- THIS IS NOT AN IDEAL SETTING"
170
+ # $javac "$name"
171
+ $sf -r1 -t$time -T$ttime -F256 -u256 -U$bocau -G$bocag -ostdout0 -estderr0 -n0 -C. -d20000000 -m20000000 ./compileit.sh
172
+ ret=$?
177
173
  fi
178
174
  if [ -f "stdout0" ]; then
179
- cat "stdout0"
175
+ cat "stdout0"
180
176
  fi
181
177
  if [ -f "stderr0" ]; then
182
- cat "stderr0"
178
+ cat "stderr0"
183
179
  fi
184
180
  rm -rf src/
185
181
  if [ "$ret" != "0" ]; then
186
- echo "Compilation Error: $ret"
187
- exit $ret
182
+ echo "Compilation Error: $ret"
183
+ exit $ret
188
184
  fi
189
- ret=`cat compileit.retcode`
185
+ ret=$(cat compileit.retcode)
190
186
  if [ "$ret" != "0" ]; then
191
- echo "Compilation Error: $ret"
192
- ret=1
187
+ echo "Compilation Error: $ret"
188
+ ret=1
193
189
  fi
194
190
  exit $ret
@@ -197,7 +197,7 @@ if [ $? -eq 0 ]; then
197
197
  exit 47
198
198
  fi
199
199
  export CLASSPATH=.:./run.jar:$CLASSPATH
200
- "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -ostdout0 -estderr0 -U$bocau -G$bocag -n0 -C. -f20000 -d20000000 -m20000000 -- ./runit.sh "\$java" -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K "$name"
200
+ "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -ostdout0 -estderr0 -U$bocau -G$bocag -n0 -C. -f20000 -d20000000 -m20000000 -- ./runit.sh "\$java" -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K Main
201
201
  retval=\$?
202
202
  echo \$retval > runch.exitcode
203
203
  if [ ! -d /bocajail ]; then
@@ -224,7 +224,7 @@ else
224
224
  echo "$java not found or it's not executable"
225
225
  exit 47
226
226
  fi
227
- "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -U$bocau -G$bocag -ostdout0 -estderr0 -n0 -C. -d20000000 -m20000000 -- ./runit.sh "$java" -cp run.jar -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K "$name"
227
+ "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -U$bocau -G$bocag -ostdout0 -estderr0 -n0 -C. -d20000000 -m20000000 -- ./runit.sh "$java" -cp run.jar -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K Main
228
228
  ret=$?
229
229
  fi
230
230
  ### END OF BOCA RUN COMMAND
@@ -146,7 +146,7 @@ if [ ! -x "\$java" ]; then
146
146
  exit 47
147
147
  fi
148
148
  export CLASSPATH=.:./run.jar:$CLASSPATH
149
- "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -ostdout0 -estderr0 -U$bocau -G$bocag -n0 -C. -f20000 -d20000000 -m20000000 -- "\$java" -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K "$name"
149
+ "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -ostdout0 -estderr0 -U$bocau -G$bocag -n0 -C. -f20000 -d20000000 -m20000000 -- "\$java" -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K Main
150
150
  retval=\$?
151
151
  echo \$retval > runit.retcode
152
152
  if [ ! -d /bocajail ]; then
@@ -174,7 +174,7 @@ else
174
174
  echo "$java not found or it's not executable"
175
175
  exit 47
176
176
  fi
177
- "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -U$bocau -G$bocag -ostdout0 -estderr0 -n0 -C. -d20000000 -m20000000 -- "$java" -cp run.jar -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K "$name"
177
+ "$sf" -r$nruns -t$time -T$ttime -istdin0 -F256 -u256 -U$bocau -G$bocag -ostdout0 -estderr0 -n0 -C. -d20000000 -m20000000 -- "$java" -cp run.jar -Xmx${maxm}K -Xss${maxms}K -Xms${maxm}K Main
178
178
  ret=$?
179
179
  fi
180
180
  if [ $ret -gt 10 ]; then
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.5.60
3
+ Version: 0.5.62
4
4
  Summary:
5
5
  Author: Roberto Sales
6
6
  Requires-Python: >=3.9,<4.0
@@ -3,17 +3,17 @@ rbx/annotations.py,sha256=LXbVOSkE9kwcxEirsOMo10cEnvol854QvaCBIjhWyE8,3047
3
3
  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=MDm2qqmhedAbhn3rWP6cDwbBsGhV6sz_2sg1zLkPDw0,3613
6
- rbx/box/cd.py,sha256=9a_SOnzoJBXxxffp4Wbf3UKXIwKuN3Hvj7K6SocALwE,1194
6
+ rbx/box/cd.py,sha256=KGaqXHnv2hCumZS2VdMezFfwFEQcSq0rt05_KZtuQAo,1570
7
7
  rbx/box/checkers.py,sha256=aGciafGNQ39UqndTEJRT3J8ngv_UigYxOT30yMzCwEI,12752
8
- rbx/box/cli.py,sha256=QnErJWp6OmBX5iC3tsjeOTHqX58tTpBFQRun9Y9a5UA,26892
9
- rbx/box/code.py,sha256=PJJyw00iT9G7I9yyCWLOUY9R280qyE4YyMTxBZ38IcI,18900
8
+ rbx/box/cli.py,sha256=mockAftbBYRt587_Fjbkpk7GZtj0MxcRJGoHBQxfTXE,27139
9
+ rbx/box/code.py,sha256=2oC1JbZiwfeg53ZICPig-KJYchqFRIZz-inlM-cLc7Q,19911
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
13
13
  rbx/box/contest/build_contest_statements.py,sha256=H2MwmkiPO_cHUEenzfPxHuJ3XcwjHakGZwKojNJQt74,11380
14
14
  rbx/box/contest/contest_package.py,sha256=OaUbpBtkhkgOPzJ1ccI_Vq4FMSaJvZm3gMOKfVY8oy4,3032
15
15
  rbx/box/contest/contest_utils.py,sha256=TDE7I6YQJlu4dQd68wzOp019bNgqiT0RlM-LMQMjL9w,301
16
- rbx/box/contest/main.py,sha256=oL-GbyLKdpMjIWiSuWTQgRhQ9hcb7DuNn0axkunx0io,7436
16
+ rbx/box/contest/main.py,sha256=u76kAQSVWEuyGLqVgyjXwYxJwHXAeEHMwbM7MfenKvE,7574
17
17
  rbx/box/contest/schema.py,sha256=OOoQUPYAHzu78aQfRbrqGepiUdGxSVRR1VQKFbKHjkE,6111
18
18
  rbx/box/contest/statements.py,sha256=Or8gFb6P_oViGdeiVgepXsvd_W84mA7LRaVmiAXWWSg,2977
19
19
  rbx/box/creation.py,sha256=Evz7K6JoarD-4JJQsZsgoxU9FgCF9Z7-LfuroG4Cqls,2444
@@ -25,34 +25,35 @@ rbx/box/extensions.py,sha256=Von8kIeXvNFTkGlMRMTvL2HIHPwlkuiMswr-ydbGV1w,519
25
25
  rbx/box/formatting.py,sha256=3phFRHzqVXj4Ok1yDhCq6Clbw6KlqwJNpMhs--oTWFI,405
26
26
  rbx/box/generators.py,sha256=RE0-D91BB-3rNDQXvCFWzU9iMhKIc_ALp960oGfM-rY,13780
27
27
  rbx/box/generators_test.py,sha256=J7aBfuJhU84MWDWzgReRoOuQw_hVa09B8gTKAvL2XVo,1987
28
+ rbx/box/git_utils.py,sha256=VlUgzuHOCnrjjiJQnDB32qDHbHw_zkwgA7wm4bloibc,750
28
29
  rbx/box/header.py,sha256=ifErXcIxG5lM5AyRiHDr7JE401vR4ORNXCNpHXxN_ls,2001
29
30
  rbx/box/lazy_importing_main.py,sha256=6Z8As7qVFFT619xHH9Xt8VCH57NjC4aDxfAgkWiUwT8,116
30
31
  rbx/box/lazy_importing_test.py,sha256=B0-b3y_DkxEmtVfu4NfmVsgVdFl6kRCsEL6GLMHJISo,628
31
32
  rbx/box/main.py,sha256=a8CYi77kOywPFly4-ucEIJLXQW-1NFp91kK2fA42YTE,86
32
33
  rbx/box/naming.py,sha256=pOG37X_wQM9CCSYwJIUf-b-ZHEs_nchO7wQEdP_quJg,1367
33
- rbx/box/package.py,sha256=YuX_FS6yKx6FaFz0NF0cx3v6jzhqwvsLr3Oprx_TTJA,13645
34
+ rbx/box/package.py,sha256=pRsA5UsKNnD2uJcm8x01uQHUbCxoLbJvhoeqf3nyrew,14290
34
35
  rbx/box/packaging/boca/extension.py,sha256=EQALNEOv4zVDXSKs_dk11n92y7cBZVn8TogIK683lE0,890
35
- rbx/box/packaging/boca/packager.py,sha256=XPCauwbemjWNNnfIocJ8pxnlsxRjst4wYXJsVDyMQlM,12632
36
+ rbx/box/packaging/boca/packager.py,sha256=kiCcP9roRCiDU0Xr5PDKO83W1yN6cyg-EKMF9fxE0EY,11950
36
37
  rbx/box/packaging/boca/upload.py,sha256=ORJytNTZ5uZw9Tk2cEhXa9UItGloFmC5pytsZavP6V8,8871
37
38
  rbx/box/packaging/contest_main.py,sha256=UsRfIdNmOf0iLUbzgjxzyECfMuCQINstG1SCClGHaUQ,2808
38
- rbx/box/packaging/main.py,sha256=_iZgq-W2JpRdd62lJsQ8vAeLhqtgAY9OFdfo8q58f70,3840
39
- rbx/box/packaging/moj/packager.py,sha256=tk0S0hayPnbGrFQsw1Ht_mYOriRlzYHgrkXLO-0ZknY,8724
39
+ rbx/box/packaging/main.py,sha256=b7DAotZkn1EO6_2cSHoGegMqHa4ZE3moWncGXkF7f3c,3797
40
+ rbx/box/packaging/moj/packager.py,sha256=FjghOe5CPlaF1GqK0NZgWVV_eYWpdTmz88bh04yeAyI,8708
40
41
  rbx/box/packaging/packager.py,sha256=da2haC1L9cG30myneMrRIAdGubtid0Xmy38BHKPCZZ4,3633
41
42
  rbx/box/packaging/polygon/packager.py,sha256=GfZ-Dc2TDKkb3QNnfOy8yxldho2L401Ao06oWg--Gcs,11714
42
43
  rbx/box/packaging/polygon/polygon_api.py,sha256=mPKEqiwANJ1nr-JhOgzGMaDhnbljsAgzzPHW6kkf7R4,41016
43
44
  rbx/box/packaging/polygon/test.py,sha256=bgEju5PwudgyfwxXJagm8fM6CJVlWM6l_-2q1V-oKaQ,3069
44
- rbx/box/packaging/polygon/upload.py,sha256=woaqf2vcWmvCyBXtAesBUOaMcVUns3hkuzXqzcgAjyo,11826
45
+ rbx/box/packaging/polygon/upload.py,sha256=UpZpVvbd0WO3y4MQdFdIwsHCu2dinfcXaIDB3smWanQ,11930
45
46
  rbx/box/packaging/polygon/xml_schema.py,sha256=ZgcLyvxggMUccbTNdzflue5G-FTN2_ZmOGGF7FD0Y5A,2851
46
- rbx/box/presets/__init__.py,sha256=BwmjBw8wF8yiZFjCYBjMk-HGMZaRwhlfszbWAj3B0vw,18689
47
- rbx/box/presets/fetch.py,sha256=F-BCOlvEBEyDqtOhiDuGPn4EDtA4Bwm-fqHJ7zZGlW8,1975
47
+ rbx/box/presets/__init__.py,sha256=G-oXgBnmwetolgh2TstlSCwxUBwvyDYAOZlHFhnIP9o,21311
48
+ rbx/box/presets/fetch.py,sha256=900aq9S8e12TlgSenG0iHgtF4OWgqavZsptgI_a1YKM,2508
48
49
  rbx/box/presets/lock_schema.py,sha256=6sRPnyePOC8yy-5WcD5JRZdDJHf8loqbvpQ1IPiOU9s,349
49
50
  rbx/box/presets/schema.py,sha256=mZmSPkQsw7eQM0lQN6er1MO_LiW1ObwwAZFDK0F5fxE,1962
50
- rbx/box/retries.py,sha256=tRk2K1bXw2xnwkAj2CsktRHTEhw7YKcPxMQTT6mCy-E,4707
51
+ rbx/box/retries.py,sha256=cZcNYLVHFDbhbeqMzxITgo8SYY8qzyxm0tIYcmWl1Ek,4877
51
52
  rbx/box/sanitizers/warning_stack.py,sha256=RI97_GJgdjTKIXY_r0EKp5h0qQQSDSdNDh5K7zINrqs,2861
52
53
  rbx/box/schema.py,sha256=y736-wZdGw56T6eDC_m7NAm2XRUdauBXJRQkQO79fpc,16264
53
54
  rbx/box/setter_config.py,sha256=s53talhwM6FTGDCcBhY7IlZ6_6mJ3PMp6V4kTtaSs50,4262
54
- rbx/box/solutions.py,sha256=P5DTKsVMBYL_-gv-F1jt6aap1Y1hy2CcVUGT23qPpmk,45170
55
- rbx/box/solutions_test.py,sha256=TCowbxBG3SvDlFO5-qtBj_M_HrAHe0IJaI1XwoQ1d00,1718
55
+ rbx/box/solutions.py,sha256=rQVkBvNqVrwFgmfgzBIvPUhWu-GDiRRbuXy_zvZKfpA,48965
56
+ rbx/box/solutions_test.py,sha256=PX1TQoRzNd9mi1SGsG7WFrpqFgNrNX5Kwt0mkwFdoOA,1749
56
57
  rbx/box/state.py,sha256=MMf3DvfQji0jKEliCHct2Tpp_0epL1tvP8HbHNArQIc,166
57
58
  rbx/box/statements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
59
  rbx/box/statements/build_statements.py,sha256=6przkQWy70ixDbqWMZmBgncaoWg67RY1gPdQ4TPjaTE,12150
@@ -65,23 +66,31 @@ rbx/box/stresses.py,sha256=k-m8Q2IVd5dap2fSDCbVqLj2LKqXzz6rIR8j9F8sLhY,12310
65
66
  rbx/box/stressing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
67
  rbx/box/stressing/finder_parser.py,sha256=jXpYNa4FyugzmHi3r96Uv4rU1krRQJc5Ihr9jf1cvNo,11918
67
68
  rbx/box/stressing/generator_parser.py,sha256=oHZryjR3YohgaSO9WEirQ7b2e-98WgZStF0N99W4Thw,7380
68
- rbx/box/tasks.py,sha256=v05vJsOg6bVfV3sY7JNAfXVyJVGteUXrgDhCXzMO_2c,10195
69
+ rbx/box/tasks.py,sha256=sVPR6a3CSU28pN6bMjZcZATYZBV7JlZvhvxcPRH8-MI,10514
69
70
  rbx/box/testcase_extractors.py,sha256=J43eG7vpxc5nP_2yhrXJODkd4EYlV4WiYVbM6hzipY4,11944
70
- rbx/box/testcase_utils.py,sha256=31rvCpLi681R6Xm1WpG8HPDOkTtF0bRWa8IsmdWGLCk,7556
71
+ rbx/box/testcase_utils.py,sha256=lvQ58D-R8vYx5AFA9sJ9xMIZJvtjYjisTpAjMIoyG4Y,7686
71
72
  rbx/box/testcases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
73
  rbx/box/testcases/main.py,sha256=_I7h_obRcpNLRQ6dDJDIE5NAvTyn5nBOhdsBhRA_PvU,5442
73
74
  rbx/box/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
75
  rbx/box/ui/captured_log.py,sha256=HPoV6LZohuECmjoqOdM_xFZbpICzQnI4n3rF-lf_b1Q,11634
75
- rbx/box/ui/css/app.tcss,sha256=AeTpKw2dmsBfrxyHGmm3KO7_a-xt7oJrNpA9fzj6xs4,1480
76
- rbx/box/ui/main.py,sha256=0mdSmUyG8WEhBcbR-k7emZQV5EYtmRc7agoXbC_kR7E,1184
76
+ rbx/box/ui/css/app.tcss,sha256=LuP8dRgjk8zg68AV0cIty8RepGkTXR264AxRpflsSto,1845
77
+ rbx/box/ui/main.py,sha256=0PENSCpk3zLLiG39lfdPSdLx3lCEIAXM_xpzyaDnQKs,1144
77
78
  rbx/box/ui/screens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
79
  rbx/box/ui/screens/build.py,sha256=DtABbf8mJNLn0tCjs5SA9wYBlbxble5-1JKQDlqzphk,156
79
80
  rbx/box/ui/screens/command.py,sha256=s29xHhvdQhgr9_E7LjggoKmSw3UuQQrJV3UQNnK97Mk,976
80
- rbx/box/ui/screens/run.py,sha256=Ab_PFzctlztBTD9L67bYhewvJlhUosWx9beIjyGZ-hI,6270
81
- rbx/box/ui/screens/run_explorer.py,sha256=3h2R6Vc-YoILqsTq8vrE1JqM7jGOFH17U0JgLuIEolk,78
82
- rbx/box/ui/screens/test_explorer.py,sha256=cEUZeQNlX8PLggwKwLrJkXby00aJRvh3Mi_5Ju8OJA8,3584
83
- rbx/box/ui/widgets/file_log.py,sha256=q-kZc7d7wS9fsA85HXWHbhKsqdthApMdrOElPgG6Vgc,1586
81
+ rbx/box/ui/screens/error.py,sha256=k6Rs5maR_APKepMtPcDMSXo6BDKrP-pAnFFJgqmXDKE,496
82
+ rbx/box/ui/screens/run.py,sha256=eKIfFRi-VbqKDxlhZDuOEdVl91XCndnmNIZyj_LMV0c,6028
83
+ rbx/box/ui/screens/run_explorer.py,sha256=Q6VUhiqBaKr70bqA7pV5qKIQamLqUBCtxZnX2tDkap0,2651
84
+ rbx/box/ui/screens/run_test_explorer.py,sha256=GeCCJblkqJtDGycxsa6gy9luhhWT-_sdSFVZHXV2FpY,5538
85
+ rbx/box/ui/screens/selector.py,sha256=BmzyEVeBKD9IEUiEea-Y04HnNLzDYQJxAj7Jm-s-D3I,753
86
+ rbx/box/ui/screens/test_explorer.py,sha256=pNLRkH_HDWDoPNDQO33vbTRX18B9RFZ6ZZ3vXbeKaj0,4105
87
+ rbx/box/ui/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ rbx/box/ui/utils/run_ui.py,sha256=457xNZteBTb82Rcg5Cr3AmgBIHLOmRrF4BKmCRyxq3Q,3113
89
+ rbx/box/ui/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
+ rbx/box/ui/widgets/file_log.py,sha256=3wlrmkWR-EMibwlwXOJ5sGpTFwFEkRaGYo5fdmf8L3w,1704
84
91
  rbx/box/ui/widgets/rich_log_box.py,sha256=mF565c_Y3RYUZ_GJEFj5Eb86SFjsib31wE5qu1K0UBM,91
92
+ rbx/box/ui/widgets/test_output_box.py,sha256=BAJo3Td4l2q829VzbJAhBsGVBeHA-b4CWqAzoraVD2c,3309
93
+ rbx/box/ui/widgets/two_sided_test_output_box.py,sha256=8XpRj-83DGpFSi3Cog6JC-Y99K4F3f89QXKqpUfusqU,2112
85
94
  rbx/box/unit.py,sha256=PY96t8qnsHLsoJVanbDnrIx-s8Dada9Fj_v375MhvTw,6477
86
95
  rbx/box/validators.py,sha256=oqlNhw7jivbbH5l8g3xwihPRy76AM7MA3G4A8nyI_V0,10416
87
96
  rbx/box/validators_test.py,sha256=WY4Ho-wlsPHc0YNuz0KFVd6KQ9ouuiou3w5_zMOZ4Fs,362
@@ -108,7 +117,7 @@ rbx/grading/judge/test.py,sha256=ll0Iw7zyOpGdKPD_PGH7dvUkb4stQLu-ikbQnqJvuAc,944
108
117
  rbx/grading/judge/testiso.py,sha256=v14DtkWiZFJ9AKMzrb0_vZKPWDt8jz8iIw1Z2O-Advk,1397
109
118
  rbx/grading/limits.py,sha256=ev312UTOo8S4-3AAVibQdXZclWCxS96CdbZxqW4y1kE,770
110
119
  rbx/grading/processing_context.py,sha256=EOxsRTKB_JEgcKNodDWPIYaBramANU-6QnDkqdF8tEk,2556
111
- rbx/grading/steps.py,sha256=qt-ozgLpWpu5dFZGr5HlbfdStqbfFDXj6gpoSlXdxp0,27259
120
+ rbx/grading/steps.py,sha256=gR7GpiV1ZamJ9rZ8WvdmSA32XLl5kfC6j-jzJrQdwIM,27313
112
121
  rbx/grading/steps_with_caching.py,sha256=nez2YwgauGXKRjhk6tQxTDGQ-HEk7KfZOeAPhsxi5iw,3150
113
122
  rbx/grading/steps_with_caching_run_test.py,sha256=mh4DRInrOGhnQFWD1SlcjDm_HvcSDFTDMSpAlG-Q5SI,15570
114
123
  rbx/grading_utils.py,sha256=lL2KtSkOsMElqrRoApQTbFcqVOeHVWUDTMCa3IsLpC4,4484
@@ -129,7 +138,7 @@ rbx/resources/packagers/boca/compare.sh,sha256=a6AmQqwrIq616DHjp_S2l95wO7UiMVy0L
129
138
  rbx/resources/packagers/boca/compile/c,sha256=lHLvxzkG_he5jmxWrix0WT80ipMWWUZdOgOQMSpj8oo,4507
130
139
  rbx/resources/packagers/boca/compile/cc,sha256=B_18QkUGcjUg6yrTFlTQuMWnHpTWUKPZmFuk7Y0l1VA,4561
131
140
  rbx/resources/packagers/boca/compile/cpp,sha256=_1pJTSC7uADu-IIdQCaZyMbH8x01wfgxcdZ36oxXncI,4496
132
- rbx/resources/packagers/boca/compile/java,sha256=nNcZdg2TnRdAUfHngQx9bs5HhgRp9srEpWFcXky4DP8,4981
141
+ rbx/resources/packagers/boca/compile/java,sha256=to0u-Yv-WHeYyhAMsJAwfU28HvdIi0w9jweWr_th95k,5047
133
142
  rbx/resources/packagers/boca/compile/kt,sha256=3B900QSD4jSXnX91gJbvI4ZmNELHSiBb584Tmx7XtOc,4026
134
143
  rbx/resources/packagers/boca/compile/pas,sha256=C5IwZzmZpIos49FrLGafRbdGPODNJn7N5JbnLX_FT_4,4576
135
144
  rbx/resources/packagers/boca/compile/py2,sha256=On76To8Zv3z117JiuxjF1pGnq6tKKT4l-FddlP-iQFc,4546
@@ -137,7 +146,7 @@ rbx/resources/packagers/boca/compile/py3,sha256=6C0n2hy6Pu5kJzkYTuwiCaBB8OrV35nT
137
146
  rbx/resources/packagers/boca/interactive/c,sha256=7AgLVL8TO0vGgpAyNVC08ceG83-_yPO7BIPHGLTerck,5720
138
147
  rbx/resources/packagers/boca/interactive/cc,sha256=7AgLVL8TO0vGgpAyNVC08ceG83-_yPO7BIPHGLTerck,5720
139
148
  rbx/resources/packagers/boca/interactive/cpp,sha256=BdyAz61YV1ojQGTKOXJXrMfN9zA9r4X3NnCRb4vJIEE,5719
140
- rbx/resources/packagers/boca/interactive/java,sha256=E3_O34EpQcgS6Pmin8Y8dpBLfA7zyVhAriBdnZH-Cig,6731
149
+ rbx/resources/packagers/boca/interactive/java,sha256=FpupDwYVYja9sTgtWn4tc9aHNqUt1RT4iRgt1klCrSQ,6725
141
150
  rbx/resources/packagers/boca/interactive/kt,sha256=n32qFNKjiov49ABnbGPJUVc-yd66o-OtQhcSYQl5nV0,6621
142
151
  rbx/resources/packagers/boca/interactive/py2,sha256=Ml0oE-xWnGFLkpns8fkTMbpC0UqIOThMoC1i6oL_xJk,5884
143
152
  rbx/resources/packagers/boca/interactive/py3,sha256=EfbjcrISSdLp6W46tlk77d69jdrdw9z6rD8hBYaMHuQ,5848
@@ -146,7 +155,7 @@ rbx/resources/packagers/boca/run/bkp,sha256=xyDkZDaxgUrW-K2I0YJs8a8dJMuF-k8_ganD
146
155
  rbx/resources/packagers/boca/run/c,sha256=s-Krq9mqJf587HEO0px2K2b4I0Gp4_vp-wZnJB6dsK4,3689
147
156
  rbx/resources/packagers/boca/run/cc,sha256=s-Krq9mqJf587HEO0px2K2b4I0Gp4_vp-wZnJB6dsK4,3689
148
157
  rbx/resources/packagers/boca/run/cpp,sha256=s-Krq9mqJf587HEO0px2K2b4I0Gp4_vp-wZnJB6dsK4,3689
149
- rbx/resources/packagers/boca/run/java,sha256=9hkO0bJmzFSZR5qKTks9tBwHDQcjMQrLwEmN_-nmRTs,5622
158
+ rbx/resources/packagers/boca/run/java,sha256=CNqQENEHTFemQgCJn9OjNIDYFSde629flcokK7r8h0U,5616
150
159
  rbx/resources/packagers/boca/run/kt,sha256=JmnCGuGacFj2PJAGir9qSi31fXBuZd8ESkhxYIir-o8,4675
151
160
  rbx/resources/packagers/boca/run/py2,sha256=PGQC9wX_Gh_kcSC8oEMrO9dyibrw6iqZKo0UAoIP5Mo,4919
152
161
  rbx/resources/packagers/boca/run/py3,sha256=MyOvtoQAz76hw8Ut-8X9w5uvDbipzJ_XoZQww35ZYWQ,4919
@@ -202,8 +211,8 @@ rbx/testcase.py,sha256=yKOq3CAJZ1YTmInvnoIs0u1iJnRj_X85XiWbLI-p9d8,1951
202
211
  rbx/testcase_rendering.py,sha256=nfmv6dSEqd4aR3TsaODwkKGK6AXty_DDKtWf_ejiQpI,2084
203
212
  rbx/testing_utils.py,sha256=x_PqD8Zd2PkN91NxVHUnSTs044-1WK5KKtttKQBXpFs,2083
204
213
  rbx/utils.py,sha256=SfR844_i0ebRDMkmS_w1YdZiWPc6h2RGADygewlWRbA,4845
205
- rbx_cp-0.5.60.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
206
- rbx_cp-0.5.60.dist-info/METADATA,sha256=g9YRO-uCwylD64Cq_6H6LLfzA_DDb232QKjkEFtR1b0,3604
207
- rbx_cp-0.5.60.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
208
- rbx_cp-0.5.60.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
209
- rbx_cp-0.5.60.dist-info/RECORD,,
214
+ rbx_cp-0.5.62.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
215
+ rbx_cp-0.5.62.dist-info/METADATA,sha256=hZ61j3xaUIH0ixaZtbKLfvl_V5Kenl7CZjM84VDtLiA,3604
216
+ rbx_cp-0.5.62.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
217
+ rbx_cp-0.5.62.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
218
+ rbx_cp-0.5.62.dist-info/RECORD,,