rbx.cp 0.18.6__py3-none-any.whl → 0.18.7__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/__version__.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.18.6'
1
+ __version__ = '0.18.7'
@@ -12,6 +12,7 @@ class BocaExtension(BaseModel):
12
12
  flags: typing.Dict[BocaLanguage, str] = {}
13
13
  maximumTimeError: float = _MAX_REP_ERROR
14
14
  preferContestLetter: bool = False
15
+ usePypy: bool = False
15
16
 
16
17
  def flags_with_defaults(self) -> typing.Dict[BocaLanguage, str]:
17
18
  res: typing.Dict[BocaLanguage, str] = {
@@ -149,9 +149,16 @@ class BocaPackager(BasePackager):
149
149
  raise typer.Exit(1)
150
150
  return compare_path.read_text()
151
151
 
152
- def _get_checker(self) -> str:
152
+ def _replace_common(self, text: str, lang: str) -> str:
153
153
  extension = get_extension_or_default('boca', BocaExtension)
154
+ flags = extension.flags_with_defaults()
155
+ if lang in flags:
156
+ text = text.replace('{{rbxFlags}}', flags[lang])
157
+ return text.replace(
158
+ '{{rbxPython3}}', 'pypy3' if extension.usePypy else 'python3'
159
+ )
154
160
 
161
+ def _get_checker(self) -> str:
155
162
  checker_path = get_default_app_path() / 'packagers' / 'boca' / 'checker.sh'
156
163
  if not checker_path.exists():
157
164
  console.console.print(
@@ -163,15 +170,13 @@ class BocaPackager(BasePackager):
163
170
  checker = package.get_checker().path.read_text()
164
171
  rbx_header = header.get_header().read_text()
165
172
  return (
166
- checker_text.replace('{{rbxFlags}}', extension.flags_with_defaults()['cc'])
173
+ self._replace_common(checker_text, 'cc')
167
174
  .replace('{{testlib_content}}', testlib)
168
175
  .replace('{{rbx_header_content}}', rbx_header)
169
176
  .replace('{{checker_content}}', checker)
170
177
  )
171
178
 
172
179
  def _get_interactor(self) -> str:
173
- extension = get_extension_or_default('boca', BocaExtension)
174
-
175
180
  interactor_path = (
176
181
  get_default_app_path() / 'packagers' / 'boca' / 'interactor_compile.sh'
177
182
  )
@@ -183,9 +188,9 @@ class BocaPackager(BasePackager):
183
188
 
184
189
  interactor_text = interactor_path.read_text()
185
190
  interactor = package.get_interactor().path.read_text()
186
- return interactor_text.replace(
187
- '{{rbxFlags}}', extension.flags_with_defaults()['cc']
188
- ).replace('{{interactor_content}}', interactor)
191
+ return self._replace_common(interactor_text, 'cc').replace(
192
+ '{{interactor_content}}', interactor
193
+ )
189
194
 
190
195
  def _get_safeexec(self) -> str:
191
196
  safeexec_script_path = (
@@ -208,7 +213,6 @@ class BocaPackager(BasePackager):
208
213
 
209
214
  def _get_compile(self, language: BocaLanguage) -> str:
210
215
  pkg = package.find_problem_package_or_die()
211
- extension = get_extension_or_default('boca', BocaExtension)
212
216
 
213
217
  compile_path = (
214
218
  get_default_app_path() / 'packagers' / 'boca' / 'compile' / language
@@ -233,9 +237,7 @@ class BocaPackager(BasePackager):
233
237
  'umask 0022', 'umask 0022\n\n' + self._get_checker()
234
238
  )
235
239
 
236
- flags = extension.flags_with_defaults()
237
- if language in flags:
238
- compile_text = compile_text.replace('{{rbxFlags}}', flags[language])
240
+ compile_text = self._replace_common(compile_text, language)
239
241
  return compile_text
240
242
 
241
243
  def _copy_solutions(self, into_path: pathlib.Path):
@@ -250,18 +252,17 @@ class BocaPackager(BasePackager):
250
252
  dest_path.parent.mkdir(parents=True, exist_ok=True)
251
253
  shutil.copy(str(solution.path), dest_path)
252
254
 
253
- def _expand_run_script(self, run_path: pathlib.Path):
255
+ def _expand_run_script(self, run_path: pathlib.Path, language: BocaLanguage):
254
256
  pkg = package.find_problem_package_or_die()
257
+ content = run_path.read_text()
255
258
  if pkg.type == TaskType.COMMUNICATION:
256
259
  runit_content = (
257
260
  get_default_app_path() / 'packagers' / 'boca' / 'interactor_run.sh'
258
261
  ).read_text()
259
- run_path.write_text(
260
- run_path.read_text().replace(
261
- '{{runit_content}}',
262
- runit_content,
263
- )
264
- )
262
+ content = content.replace('{{runit_content}}', runit_content)
263
+
264
+ content = self._replace_common(content, language)
265
+ run_path.write_text(content)
265
266
 
266
267
  @classmethod
267
268
  def name(cls) -> str:
@@ -308,7 +309,7 @@ class BocaPackager(BasePackager):
308
309
  )
309
310
  raise typer.Exit(1)
310
311
  shutil.copyfile(run_orig_path, run_path / language)
311
- self._expand_run_script(run_path / language)
312
+ self._expand_run_script(run_path / language, language)
312
313
 
313
314
  # Prepare compile.
314
315
  compile_path = into_path / 'compile'
@@ -119,7 +119,7 @@ cd src
119
119
  # exit 0
120
120
  # fi
121
121
 
122
- echo "#!/usr/bin/python2" | cat - "$name" > "../$exe"
122
+ echo "#!\$cc" | cat - "$name" > "../$exe"
123
123
  chmod 755 "../$exe"
124
124
  echo \$? > ../compileit.retcode
125
125
  exit 0
@@ -101,25 +101,27 @@ else
101
101
  exe=$2
102
102
  fi
103
103
 
104
+ chmod -R 775 src
105
+
104
106
  rm -f "$exe" compileit.retcode runit.retcode 2>/dev/null
105
107
  cat <<EOF >compileit.sh
106
108
  #!/bin/bash
107
- cc=\`which python3\`
108
- [ -x "\$cc" ] || cc=/usr/bin/python3
109
+ cc=\`which {{rbxPython3}}\`
110
+ [ -x "\$cc" ] || cc=/usr/bin/{{rbxPython3}}
109
111
  if [ ! -x "\$cc" ]; then
110
112
  echo "\$cc not found or it's not executable"
111
113
  exit 47
112
114
  fi
113
115
  cd src
114
- # "\$cc" -m py_compile "$name"
115
- # pyc_ret=\$?
116
- # if [ "\$pyc_ret" != "0" ]; then
117
- # echo "python syntax check failed: \$pyc_ret"
118
- # echo \$pyc_ret > ../compileit.retcode
119
- # exit 0
120
- # fi
116
+ "\$cc" -m py_compile "$name"
117
+ pyc_ret=\$?
118
+ if [ "\$pyc_ret" != "0" ]; then
119
+ echo "python syntax check failed: \$pyc_ret"
120
+ echo \$pyc_ret > ../compileit.retcode
121
+ exit 0
122
+ fi
121
123
 
122
- echo "#!/usr/bin/python3" | cat - "$name" > "../$exe"
124
+ echo "#!\$cc" | cat - "$name" > "../$exe"
123
125
  chmod 755 "../$exe"
124
126
  echo \$? > ../compileit.retcode
125
127
  exit 0
@@ -130,8 +130,8 @@ if [ $? -eq 0 ]; then
130
130
  cd "$cdir"
131
131
  [ -f /proc/cpuinfo ] || /bin/mount -t proc proc /proc
132
132
  [ -d /sys/kernel ] || /bin/mount -t sysfs sysfs /sys
133
- python3=$(which python3)
134
- [ -x "\$python3" ] || python3=/usr/bin/python3
133
+ python3=$(which {{rbxPython3}})
134
+ [ -x "\$python3" ] || python3=/usr/bin/{{rbxPython3}}
135
135
  if [ ! -x "\$python3" ]; then
136
136
  echo "\$python3 not found or it's not executable"
137
137
  exit 47
@@ -119,8 +119,8 @@ cd "$cdir"
119
119
  [ -f /proc/cpuinfo ] || /bin/mount -t proc proc /proc
120
120
  #/bin/mount --bind /dev /dev
121
121
  [ -d /sys/kernel ] || /bin/mount -t sysfs sysfs /sys
122
- python3=$(which python3)
123
- [ -x "\$python3" ] || python3=/usr/bin/python3
122
+ python3=$(which {{rbxPython3}})
123
+ [ -x "\$python3" ] || python3=/usr/bin/{{rbxPython3}}
124
124
  if [ ! -x "\$python3" ]; then
125
125
  echo "\$python3 not found or it's not executable"
126
126
  exit 47
@@ -147,8 +147,8 @@ else
147
147
  echo "CODE NOT BEING CHROOTED. DO NOT RUN THIS ON THE MAIN SERVER" >&2
148
148
  echo "CODE NOT BEING CHROOTED. DO NOT RUN THIS ON THE MAIN SERVER" >&2
149
149
  echo "CODE NOT BEING CHROOTED. DO NOT RUN THIS ON THE MAIN SERVER" >&2
150
- python3=$(which python3)
151
- [ -x "$python3" ] || python3=/usr/bin/python3
150
+ python3=$(which {{rbxPython3}})
151
+ [ -x "$python3" ] || python3=/usr/bin/{{rbxPython3}}
152
152
  if [ ! -x "$python3" ]; then
153
153
  echo "$python3 not found or it's not executable"
154
154
  exit 47
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  # yaml-language-server: $schema=https://rsalesc.github.io/rbx/schemas/Preset.json
3
3
  name: "default"
4
- min_version: "0.18.6"
4
+ min_version: "0.18.7"
5
5
  uri: "rsalesc/rbx/rbx/resources/presets/default"
6
6
  problem: "problem"
7
7
  contest: "contest"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.18.6
3
+ Version: 0.18.7
4
4
  Summary:
5
5
  Author: Roberto Sales
6
6
  Requires-Python: >=3.9.1,<4.0.0
@@ -1,5 +1,5 @@
1
1
  rbx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- rbx/__version__.py,sha256=P-caO5cD30pqZNyLpkN2n7yzwCR7fGNjSt6QTn-McBw,23
2
+ rbx/__version__.py,sha256=qaYY8qv6Ka6QOPoFsiueJifbAUMhCN9WXKsKD8DV6NU,23
3
3
  rbx/annotations.py,sha256=_TkLhgZWiUyon3bonHwUo03ls1jY8LwgcR4bVgtgnc0,3519
4
4
  rbx/autoenum.py,sha256=cusv8ClXRlDVvhZ8eDrtYcL_2peXlHugAey_ht8roXk,12025
5
5
  rbx/box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -40,8 +40,8 @@ rbx/box/packaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
40
40
  rbx/box/packaging/boca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  rbx/box/packaging/boca/boca_language_utils.py,sha256=aLL58PLso1zdWuYBvTsFMT_IuJOHtTYe2CYtDQApey8,1300
42
42
  rbx/box/packaging/boca/boca_outcome_utils.py,sha256=MhO7aKTJ1weCgSJBA9MF_ejK3HFBFwC5dIsiR4wA1Mw,310
43
- rbx/box/packaging/boca/extension.py,sha256=EQALNEOv4zVDXSKs_dk11n92y7cBZVn8TogIK683lE0,890
44
- rbx/box/packaging/boca/packager.py,sha256=8dTGP6RMaWqd3a_3Tl2tEW-OuDgktXYsO8qoSuHHkPY,13909
43
+ rbx/box/packaging/boca/extension.py,sha256=iKEKK9cLL8pScsHbh3vlDz1eIxVl9_HHeqrK2lbWO64,916
44
+ rbx/box/packaging/boca/packager.py,sha256=TXqBvbahDrCfkRSib7IEMBiwOwYqn2zBP5LbFA5c3sM,13975
45
45
  rbx/box/packaging/contest_main.py,sha256=G3CO4RILxGbUhyLsTdeDqPXEJ3sK2pSH9X8piqU61FQ,4486
46
46
  rbx/box/packaging/importer.py,sha256=qcKpDQyf6EvYXorofLs5abteBEWV9AezA8tcihCw5wk,909
47
47
  rbx/box/packaging/main.py,sha256=GRTP7_Ao-8I5F0GrLTAXSOwYbh1DYP_cLPm5jUMKN0U,2782
@@ -155,15 +155,15 @@ rbx/resources/packagers/boca/compile/cc,sha256=jxPjE9UDspBcEJV4kG7wkYbiadXCBePiM
155
155
  rbx/resources/packagers/boca/compile/cpp,sha256=Fla9Ld6niiZT-0tRiekb2PS18dB2k0e8QmRFepMASag,4452
156
156
  rbx/resources/packagers/boca/compile/java,sha256=UrgpcwCtrJsMAEF0B7gDRl2VCZgtBocassleN3Jxw7o,5192
157
157
  rbx/resources/packagers/boca/compile/kt,sha256=bE9dhp2vEJjgGobOHOfbQyBQIR7fzSuWnwP2QuwTRhY,3894
158
- rbx/resources/packagers/boca/compile/py2,sha256=eFJIzpRuE7XtI1CzE44njnRUU7tQNgK_wNbIslh9I0Q,4695
159
- rbx/resources/packagers/boca/compile/py3,sha256=HWA_yQ6B8VQ_WYVRZWPclbxv7BRiEJTTc9H9oWl1bGU,4695
158
+ rbx/resources/packagers/boca/compile/py2,sha256=52My1b5Dgveb7h7U93gPSs71yjc3bEj6hzpUDa-1whk,4683
159
+ rbx/resources/packagers/boca/compile/py3,sha256=xXCO8Um_8klf97UxEFGsi-ZlUsYir3RTIpWrKsxTAZg,4701
160
160
  rbx/resources/packagers/boca/interactive/c,sha256=HVEyQ4uHyqkuzopWvOKtju1J45sulgC-zNioJg-_mgE,4856
161
161
  rbx/resources/packagers/boca/interactive/cc,sha256=HVEyQ4uHyqkuzopWvOKtju1J45sulgC-zNioJg-_mgE,4856
162
162
  rbx/resources/packagers/boca/interactive/cpp,sha256=HVEyQ4uHyqkuzopWvOKtju1J45sulgC-zNioJg-_mgE,4856
163
163
  rbx/resources/packagers/boca/interactive/java,sha256=NgtrKg5sTFQO589QTfEVSYYQOMsKTn7RQ2A4lCxBnFc,5595
164
164
  rbx/resources/packagers/boca/interactive/kt,sha256=EQ7oygjq5-zhLdLOAm2Vo9Wj0vxokDUz5SNIOWchiyw,5601
165
165
  rbx/resources/packagers/boca/interactive/py2,sha256=A-4GgaIFvt3-8c8MeYzeT19I4MztAY6uyy3VDnaOyII,4829
166
- rbx/resources/packagers/boca/interactive/py3,sha256=1Kgj-zy4e8hk1583wNZUxnCBvmfyCkPDV9WMhyshyLw,4829
166
+ rbx/resources/packagers/boca/interactive/py3,sha256=i3GxHdxTdEkSM8xEOPiAHLjF1oq1X6jrFoCzpzRr0E4,4843
167
167
  rbx/resources/packagers/boca/interactor_compile.sh,sha256=ZsUjQAtLSSwfZsYEs200lSdSrRbGrEFgAmRBmLOzI48,1161
168
168
  rbx/resources/packagers/boca/interactor_run.sh,sha256=_hNr_0BIBNy0sedmx21xVKoYF6tJBfI316MfDqsMtqw,4246
169
169
  rbx/resources/packagers/boca/run/bkp,sha256=xyDkZDaxgUrW-K2I0YJs8a8dJMuF-k8_ganDGxqhvUQ,4218
@@ -173,7 +173,7 @@ rbx/resources/packagers/boca/run/cpp,sha256=bhB-I-mJ4xNa6lr0OwC1O-eiMVTE_bdAd13n
173
173
  rbx/resources/packagers/boca/run/java,sha256=rAcvpriBr3NAuzzjMzIrtTBTgD9dLVr49dW2P7LmYNc,5578
174
174
  rbx/resources/packagers/boca/run/kt,sha256=zzCffAP9Rtuv_qqiPYUkmRYOg6MsNXQCdVZMPD4VZc4,5584
175
175
  rbx/resources/packagers/boca/run/py2,sha256=2IobOou2k6oYIa_mw0DjeZaqJgw9ZQc69e6XYnRS-fo,4917
176
- rbx/resources/packagers/boca/run/py3,sha256=_w9IBoDhAThrABcvWfZQ0wOaqnzeiqwG5AL-eAQrVSU,4917
176
+ rbx/resources/packagers/boca/run/py3,sha256=uflJvpZgBYIgqs-Egw5YVAgdvjfRZU20RkoFy35V2Y0,4945
177
177
  rbx/resources/packagers/boca/safeexec.c,sha256=HcZyfnCoIRY8Q7HjT6ohUdNBcP4h6jd5A4uoXXNPzYw,17377
178
178
  rbx/resources/packagers/boca/safeexec_compile.sh,sha256=MX_lRM2wnBh9MyXRRMcnZlqlnB41BuIbGXrwXkBPM1s,1094
179
179
  rbx/resources/packagers/moj/scripts/c/compile.sh,sha256=d6IFuVf_EmUhkHg5urrv3G4e8AFFYgHqEYJ_ROs-A-M,231
@@ -201,7 +201,7 @@ rbx/resources/presets/default/contest/statement/info.rbx.tex,sha256=Wz8Tbmi2lPWM
201
201
  rbx/resources/presets/default/contest/statement/instructions.tex,sha256=JG_eR13ukZgEahrrmrbg40H8cUzpoUE8QLocihN-fZ8,2414
202
202
  rbx/resources/presets/default/contest/statement/logo.png,sha256=RLNYmZoc-BR6AZKkmr4UEg3h01YeFzvy604jMAQC7aA,414485
203
203
  rbx/resources/presets/default/env.rbx.yml,sha256=9MaKkSc289LrwATbMgIEFpuUayrJwdFBSw4rWY1TS0c,2098
204
- rbx/resources/presets/default/preset.rbx.yml,sha256=F9aJMGN017A4McIyFXRG9Dd2MbEu8X4lDBduKjsATw4,520
204
+ rbx/resources/presets/default/preset.rbx.yml,sha256=3lQuVglpQkWMXC1AQpES7SyR4Rx4l5XnSnN9tYOgDVs,520
205
205
  rbx/resources/presets/default/problem/.gitignore,sha256=1rt95y9Q7ZHIQn28JyZQUdD5zkpRosjAl9ZqoQmX2cE,149
206
206
  rbx/resources/presets/default/problem/gens/gen.cpp,sha256=rn6sGRjZ1sFE1Rq02r6488iquY9xTrutcvLv4d1sohA,178
207
207
  rbx/resources/presets/default/problem/manual_tests/samples/000.in,sha256=w66OEtCJGqjUNj8cJrqgImgGVm8W_OlIUtF255ds-ow,4
@@ -223,8 +223,8 @@ rbx/resources/templates/rbx.h,sha256=0AZds9R0PmuPgnlTENb33Y81LW0LlnmOJFaoN8oG3Yo
223
223
  rbx/resources/templates/template.cpp,sha256=xXWpWo7fa7HfmPNqkmHcmv3i46Wm0ZL-gPmkRfGvLn4,317
224
224
  rbx/testing_utils.py,sha256=vNNdaytowJfuopszVHeFzVtHWlPfipPW4zpqCOvdZKU,2908
225
225
  rbx/utils.py,sha256=zOXjEkEN9tlzLliWpssNTSmcvdgveUWDdo427qI3dhM,12225
226
- rbx_cp-0.18.6.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
227
- rbx_cp-0.18.6.dist-info/METADATA,sha256=Gw7GmIC2L4JUCDA3GMUKw2WisXeQuXItU1JCZX05y-s,4845
228
- rbx_cp-0.18.6.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
229
- rbx_cp-0.18.6.dist-info/entry_points.txt,sha256=Gw2_BZ5Jon61biaH_ETbAQGXy8fR5On9gw2U4A1erpo,40
230
- rbx_cp-0.18.6.dist-info/RECORD,,
226
+ rbx_cp-0.18.7.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
227
+ rbx_cp-0.18.7.dist-info/METADATA,sha256=auvEkSzv7S77DlWnUcg_5JrCg3Caf0IM7SGRhI1zCPI,4845
228
+ rbx_cp-0.18.7.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
229
+ rbx_cp-0.18.7.dist-info/entry_points.txt,sha256=Gw2_BZ5Jon61biaH_ETbAQGXy8fR5On9gw2U4A1erpo,40
230
+ rbx_cp-0.18.7.dist-info/RECORD,,