rbx.cp 0.13.7__py3-none-any.whl → 0.13.8__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.
@@ -247,9 +247,15 @@ def _get_statement_for_language(language: str) -> Optional[Statement]:
247
247
  def _get_statement_blocks(statement: Statement) -> StatementBlocks:
248
248
  # TODO: actually try to convert to rbxTeX
249
249
  assert statement.type == StatementType.rbxTeX
250
+ pkg = package.find_problem_package_or_die()
251
+ # TODO: pull this from a library, too hacky at the moment
250
252
  builder_problem = StatementBuilderProblem(
251
- package=package.find_problem_package_or_die(),
253
+ package=pkg,
252
254
  statement=statement,
255
+ vars={
256
+ **pkg.expanded_vars,
257
+ **statement.expanded_vars,
258
+ },
253
259
  )
254
260
  with tempfile.TemporaryDirectory() as temp_dir:
255
261
  return render_jinja_blocks(
rbx/box/testcase_utils.py CHANGED
@@ -181,10 +181,10 @@ def parse_interaction(file: pathlib.Path) -> TestcaseInteraction:
181
181
 
182
182
  while line := f.readline().strip():
183
183
  if line.startswith(interactor_prefix):
184
- stripped = line[len(interactor_prefix) :].strip()
184
+ stripped = line[len(interactor_prefix) :].rstrip()
185
185
  entries.append(TestcaseInteractionEntry(data=stripped, pipe=0))
186
186
  elif line.startswith(solution_prefix):
187
- stripped = line[len(solution_prefix) :].strip()
187
+ stripped = line[len(solution_prefix) :].rstrip()
188
188
  entries.append(TestcaseInteractionEntry(data=stripped, pipe=1))
189
189
  else:
190
190
  raise TestcaseInteractionParsingError(
@@ -204,11 +204,11 @@ def get_alternate_interaction_texts(
204
204
  solution_entries = []
205
205
  for entry in interaction.entries:
206
206
  if entry.pipe == 1:
207
- solution_entries.append(entry.data)
208
- interactor_entries.extend(['\n'] * entry.data.count('\n'))
207
+ solution_entries.append(entry.data + '\n')
208
+ interactor_entries.extend(['\n'] * (entry.data.count('\n') + 1))
209
209
  else:
210
- interactor_entries.append(entry.data)
211
- solution_entries.extend(['\n'] * entry.data.count('\n'))
210
+ interactor_entries.append(entry.data + '\n')
211
+ solution_entries.extend(['\n'] * (entry.data.count('\n') + 1))
212
212
  return ''.join(interactor_entries), ''.join(solution_entries)
213
213
 
214
214
 
@@ -219,4 +219,4 @@ def print_interaction(interaction: TestcaseInteraction):
219
219
  text.stylize('status')
220
220
  else:
221
221
  text.stylize('info')
222
- console.console.print(text, end='')
222
+ console.console.print(text)
@@ -17,6 +17,10 @@ statements:
17
17
  configure:
18
18
  - type: "rbx-tex" # Convert rbxTeX to TeX
19
19
  template: "statement/template.rbx.tex"
20
+ vars:
21
+ # Turn into false to hide time limits and memory limits in the problem statement.
22
+ # Useful for ICPC-style contests where you distribute a separate info sheet.
23
+ show_limits: true
20
24
  - name: "editorial-en"
21
25
  extends: "statement-en"
22
26
  override:
@@ -31,6 +31,8 @@ statements:
31
31
  configure:
32
32
  - type: "rbx-tex" # Convert rbxTeX to TeX
33
33
  template: "statement/template.rbx.tex"
34
+ vars:
35
+ show_limits: true
34
36
  stresses:
35
37
  - name: "stress"
36
38
  generator:
@@ -1,10 +1,16 @@
1
- %- if vars.show_problem is truthy or vars.editorial is falsy
1
+ %- if problem.vars.show_problem is truthy or problem.vars.editorial is falsy
2
2
  \includeProblem
3
3
  %- if problem.short_name is defined
4
4
  [\VAR{problem.short_name}]
5
5
  %- endif
6
6
  {\VAR{problem.title | escape}}{
7
7
 
8
+ %- if problem.vars.show_limits is truthy
9
+ \includeLimits{\VAR{problem.package.timeLimit} ms}{\VAR{problem.package.memoryLimit} MiB}
10
+ %- else
11
+ \vspace{0.55cm}
12
+ %- endif
13
+
8
14
  \VAR{problem.blocks.legend}
9
15
 
10
16
  %- if problem.blocks.input is defined
@@ -20,7 +26,7 @@
20
26
  %- endif
21
27
 
22
28
  %- if problem.samples
23
- \vspace{0.3cm}
29
+ \vspace{0.1cm}
24
30
  \subsection*{\strExamples}
25
31
  %- for sample in problem.samples
26
32
  %- if sample.interaction is not none
@@ -16,6 +16,7 @@
16
16
  \let\mytitleformat\titleformat
17
17
  \let\titleformat\relax
18
18
  \usepackage{logicpuzzle}
19
+ \let\titleformat\mytitleformat
19
20
  \usepackage{enumitem}
20
21
  \usepackage{amsfonts}
21
22
  \usepackage[brazil]{babel}
@@ -76,6 +77,11 @@
76
77
 
77
78
  \setlength{\voffset}{-1in}
78
79
 
80
+ % Increase section text sizes
81
+ \titleformat{\section}{\LARGE\bfseries}{\thesection}{1em}{}
82
+ \titleformat{\subsection}{\Large\bfseries}{\thesubsection}{1em}{}
83
+ \titleformat{\subsubsection}{\normalsize\bfseries}{\thesubsubsection}{1em}{}
84
+
79
85
  \newcommand{\insereArquivo}[1]{
80
86
  \ifnum0\pdffilesize{#1}>0
81
87
  \VerbatimInput[xleftmargin=0mm,numbers=none,obeytabs=true]{#1}\vspace{.5em}
@@ -139,6 +145,15 @@
139
145
  #3
140
146
  }
141
147
 
148
+ \newcommand{\includeLimits}[2]{
149
+ \vspace{0.2cm}
150
+ \begin{center}
151
+ \textit{\strTimeLimit: #1}\\
152
+ \textit{\strMemoryLimit: #2}
153
+ \end{center}
154
+ \vspace{0.25cm}
155
+ }
156
+
142
157
  \newcommand{\inputdesc}[1]{
143
158
  \subsection*{\strInput}
144
159
  {#1} }
@@ -271,11 +286,9 @@
271
286
  \newcounter{pcounter}\setcounter{pcounter}{0}
272
287
  \newcounter{qcounter}\setcounter{qcounter}{0}
273
288
 
274
- \usepackage{titlesec}
275
-
276
- \titlespacing\section{0pt}{6pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
277
- \titlespacing\subsection{0pt}{6pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
278
- \titlespacing\subsubsection{0pt}{6t plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
289
+ \titlespacing\section{0pt}{12pt plus 0pt minus 2pt}{10pt plus 0pt minus 2pt}
290
+ \titlespacing\subsection{0pt}{12pt plus 0pt minus 2pt}{10pt plus 0pt minus 2pt}
291
+ \titlespacing\subsubsection{0pt}{12pt plus 0pt minus 2pt}{10pt plus 0pt minus 2pt}
279
292
 
280
293
  \newcommand{\InsertTitlePage}
281
294
  {
@@ -15,6 +15,12 @@
15
15
  %- endif
16
16
  {\VAR{problem.title | escape}}{
17
17
 
18
+ %- if problem.vars.show_limits is truthy
19
+ \includeLimits{\VAR{problem.package.timeLimit} ms}{\VAR{problem.package.memoryLimit} MiB}
20
+ %- else
21
+ \vspace{0.55cm}
22
+ %- endif
23
+
18
24
  \VAR{problem.blocks.legend}
19
25
 
20
26
  %- if problem.blocks.input is defined
@@ -30,7 +36,7 @@
30
36
  %- endif
31
37
 
32
38
  %- if problem.samples
33
- \vspace{0.3cm}
39
+ \vspace{0.1cm}
34
40
  \subsection*{\strExamples}
35
41
  %- for sample in problem.samples
36
42
  %- if sample.interaction is not none
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.13.7
3
+ Version: 0.13.8
4
4
  Summary:
5
5
  Author: Roberto Sales
6
6
  Requires-Python: >=3.9.1,<4.0.0
@@ -47,7 +47,7 @@ rbx/box/packaging/polygon/importer.py,sha256=xmtKQo5q81s30u41cEe5PWsepDMJx2XbZRx
47
47
  rbx/box/packaging/polygon/packager.py,sha256=JYVT6FjFh2PJi8ZjjmmgiIe_CNrYUX15LUhkYi1aF3Y,12194
48
48
  rbx/box/packaging/polygon/polygon_api.py,sha256=mPKEqiwANJ1nr-JhOgzGMaDhnbljsAgzzPHW6kkf7R4,41016
49
49
  rbx/box/packaging/polygon/test.py,sha256=bgEju5PwudgyfwxXJagm8fM6CJVlWM6l_-2q1V-oKaQ,3069
50
- rbx/box/packaging/polygon/upload.py,sha256=W9LcEe2D2ySOdyXETp529lP5BtB4GyOUD2lLPbSzCjE,13548
50
+ rbx/box/packaging/polygon/upload.py,sha256=wFUOEPa5bnKiIoUcwPY5rhfrz9doq-2B2fJqrsZFSdk,13722
51
51
  rbx/box/packaging/polygon/xml_schema.py,sha256=TSl4BWwMWv7V07BKJ56mcLXNr_3zlRgNmqN2q-wnk4M,3128
52
52
  rbx/box/presets/__init__.py,sha256=Vm9Xievtn1fbFMHubPh6Ngz-GvMx3ycfx15tkvwcvfA,33421
53
53
  rbx/box/presets/fetch.py,sha256=900aq9S8e12TlgSenG0iHgtF4OWgqavZsptgI_a1YKM,2508
@@ -75,7 +75,7 @@ rbx/box/stressing/finder_parser.py,sha256=PnONJD2yun5X5EmHqkaz-rh3DHhn_BkTPHZrIX
75
75
  rbx/box/stressing/generator_parser.py,sha256=oHZryjR3YohgaSO9WEirQ7b2e-98WgZStF0N99W4Thw,7380
76
76
  rbx/box/tasks.py,sha256=CJ7TqzhVMPP4VUSrMpp3ofSDJn0rbuwIUWgFOiup_vE,11426
77
77
  rbx/box/testcase_extractors.py,sha256=vyT3Qw9FkQ-SABcgjyL9UBdKT1SktJ3-_4A-HRj6FQA,11942
78
- rbx/box/testcase_utils.py,sha256=Ywz9c9zH96IZAj8rDDuhS7xmdLXeLM6JsKZf2x9X5Go,6921
78
+ rbx/box/testcase_utils.py,sha256=gFBs6OqdYk9NYhVuCP2BMxKvqKCmBUnbW5nKm0AKqoc,6941
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
@@ -190,7 +190,7 @@ rbx/resources/packagers/moj/scripts/py3/compile.sh,sha256=XPn8qDR_gPAAZD9h5lVEMd
190
190
  rbx/resources/packagers/moj/scripts/py3/prep.sh,sha256=it1e07QRpsnku3-rXOO1ovaw-RJlVVPy9R3I6WWwgMM,126
191
191
  rbx/resources/packagers/moj/scripts/py3/run.sh,sha256=LrMi7Tap9no8gh64QNGUXbWauP6ZpSl-wEwXZ2qhPo0,197
192
192
  rbx/resources/presets/default/contest/.gitignore,sha256=CMwGD717vKcbQrXjha2D4LMwjDfQcev8rjFPg0AIi4A,131
193
- rbx/resources/presets/default/contest/contest.rbx.yml,sha256=7ifI6vbQg9IOYA94Q6i1toj-S8wNwwDkK-gJLxEaCeU,845
193
+ rbx/resources/presets/default/contest/contest.rbx.yml,sha256=NsF5QNWKgFRdrLDiG6voH9rXethSZmaDUmlGgxQ_BCk,1058
194
194
  rbx/resources/presets/default/contest/statement/contest.rbx.tex,sha256=Jx6op_WdVpQOMekvOAZnBzDxxvBzg1_9ZFWtbzGasLo,793
195
195
  rbx/resources/presets/default/contest/statement/instructions.tex,sha256=JG_eR13ukZgEahrrmrbg40H8cUzpoUE8QLocihN-fZ8,2414
196
196
  rbx/resources/presets/default/contest/statement/logo.png,sha256=RLNYmZoc-BR6AZKkmr4UEg3h01YeFzvy604jMAQC7aA,414485
@@ -200,7 +200,7 @@ rbx/resources/presets/default/problem/.gitignore,sha256=CMwGD717vKcbQrXjha2D4LMw
200
200
  rbx/resources/presets/default/problem/gens/gen.cpp,sha256=rn6sGRjZ1sFE1Rq02r6488iquY9xTrutcvLv4d1sohA,178
201
201
  rbx/resources/presets/default/problem/manual_tests/samples/000.in,sha256=w66OEtCJGqjUNj8cJrqgImgGVm8W_OlIUtF255ds-ow,4
202
202
  rbx/resources/presets/default/problem/manual_tests/samples/001.in,sha256=P4QInDX87xXoDWu4PVIzUeNW5LtTlUKbMCvJ9uZOPGw,20
203
- rbx/resources/presets/default/problem/problem.rbx.yml,sha256=SX8ohULvaRiFI9kIpLQ0hDEx8r5ozsfraK9PYr4YmQM,1691
203
+ rbx/resources/presets/default/problem/problem.rbx.yml,sha256=jawPzfJJ17pVSiWGRqjSqDm3PTD5kF_KO19eTLFsAC4,1725
204
204
  rbx/resources/presets/default/problem/rbx.h,sha256=LBkbC3gbDPW2Fdm1p99hNhF7oKpZLLSY7dE4zpepp5w,2161
205
205
  rbx/resources/presets/default/problem/sols/main.cpp,sha256=AW-j65DiFYUN18rddTKCWc_VyYCMgCbjZ0jAJ-0JLuA,124
206
206
  rbx/resources/presets/default/problem/sols/wa.cpp,sha256=Bj7tejPIlXG_JqUHWY1zi9TDbHdRZzgT_JDbCLRdhbQ,136
@@ -209,9 +209,9 @@ rbx/resources/presets/default/problem/testplan/random.py,sha256=XclCB6pw9NT1ahu9
209
209
  rbx/resources/presets/default/problem/testplan/random.txt,sha256=XDrow4p79owKnjqyvaIVSNTXwWQDe3X1k_9-2zH43O8,34
210
210
  rbx/resources/presets/default/problem/validator.cpp,sha256=I_Vs12xQnJnwkRtCu4EjazdaERms4GktZhME7zGaQjU,337
211
211
  rbx/resources/presets/default/problem/wcmp.cpp,sha256=gbjJe3Vf9-YzHCEqBUq30aI3jMZXhqBDn3jjecYOn-w,902
212
- rbx/resources/presets/default/shared/contest_template.rbx.tex,sha256=bEbsVybLJ18V7Ez1i5g8H6-5Aru2Bk1qPsDly_c26lw,1301
213
- rbx/resources/presets/default/shared/icpc.sty,sha256=04feEwL7LRRvUFopwVAVjxdTvzE5gQtFsSkm6iJ5hLo,8042
214
- rbx/resources/presets/default/shared/problem_template.rbx.tex,sha256=SfBxSwz1sVBUV5P6JmROXvlIqRfzt7muJwGtZhtCM7E,1427
212
+ rbx/resources/presets/default/shared/contest_template.rbx.tex,sha256=iGUXFeob2Jw1jEr0qyP9M8D0jVZJEf2j0heyLy4t90M,1484
213
+ rbx/resources/presets/default/shared/icpc.sty,sha256=d2fdlIcC559pq-Z4aEd2VGcAUE-z-qrltYSd2clTXhY,8451
214
+ rbx/resources/presets/default/shared/problem_template.rbx.tex,sha256=xn4wE4mlc5yRR4QVDR5cfj14e8zFJXo2iBRftXQgQqw,1594
215
215
  rbx/resources/templates/rbx.h,sha256=0AZds9R0PmuPgnlTENb33Y81LW0LlnmOJFaoN8oG3Yo,3638
216
216
  rbx/resources/templates/template.cpp,sha256=xXWpWo7fa7HfmPNqkmHcmv3i46Wm0ZL-gPmkRfGvLn4,317
217
217
  rbx/submitors/__init__.py,sha256=sVcRNnuKMZatmpGkQURaEVHK-MfU2U0nH4nOatuqywE,620
@@ -219,8 +219,8 @@ rbx/submitors/codeforces.py,sha256=s8c7sXfm5k76SKMC8g0Y93-RRf8wY2uWbBtA8ODD5eM,4
219
219
  rbx/submitors/submitor.py,sha256=8q-Hbdahxt30ciT_R9j_xF6lEPUh9IcfAUnzjQjbvHU,457
220
220
  rbx/testing_utils.py,sha256=965vlkQpUW8cEqjB6S2g_C_avL5fn503mJPbqjY_zt4,2317
221
221
  rbx/utils.py,sha256=xDqmry5rpqRGPFrx3ipNGBt2WxWDAD5LwU7jvgibXkk,8630
222
- rbx_cp-0.13.7.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
223
- rbx_cp-0.13.7.dist-info/METADATA,sha256=TcJSmgIQFD7R_zuGbOLun5EixzDKQevwsn-7lJ6ln98,4659
224
- rbx_cp-0.13.7.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
225
- rbx_cp-0.13.7.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
226
- rbx_cp-0.13.7.dist-info/RECORD,,
222
+ rbx_cp-0.13.8.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
223
+ rbx_cp-0.13.8.dist-info/METADATA,sha256=Aj2dEF0ykkbumQpqjho-udy2bLahFJ2Yh_ynTQkuzn0,4659
224
+ rbx_cp-0.13.8.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
225
+ rbx_cp-0.13.8.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
226
+ rbx_cp-0.13.8.dist-info/RECORD,,