rbx.cp 0.5.47__py3-none-any.whl → 0.5.48__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/environment.py +1 -1
- rbx/box/naming.py +22 -0
- rbx/box/packaging/boca/extension.py +1 -0
- rbx/box/packaging/boca/packager.py +10 -4
- rbx/box/packaging/moj/packager.py +2 -12
- rbx/box/packaging/packager.py +8 -1
- rbx/box/statements/build_statements.py +2 -1
- rbx/grading/steps.py +1 -1
- {rbx_cp-0.5.47.dist-info → rbx_cp-0.5.48.dist-info}/METADATA +1 -1
- {rbx_cp-0.5.47.dist-info → rbx_cp-0.5.48.dist-info}/RECORD +13 -12
- {rbx_cp-0.5.47.dist-info → rbx_cp-0.5.48.dist-info}/LICENSE +0 -0
- {rbx_cp-0.5.47.dist-info → rbx_cp-0.5.48.dist-info}/WHEEL +0 -0
- {rbx_cp-0.5.47.dist-info → rbx_cp-0.5.48.dist-info}/entry_points.txt +0 -0
rbx/box/environment.py
CHANGED
@@ -343,7 +343,7 @@ def get_extension(name: str, _: Type[T]) -> Optional[T]:
|
|
343
343
|
pkg = get_environment()
|
344
344
|
if pkg.extensions is None:
|
345
345
|
return None
|
346
|
-
if hasattr(pkg.extensions, name):
|
346
|
+
if not hasattr(pkg.extensions, name):
|
347
347
|
return None
|
348
348
|
return getattr(pkg.extensions, name)
|
349
349
|
|
rbx/box/naming.py
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
|
3
|
+
from rbx.box import package
|
4
|
+
from rbx.box.contest import contest_package
|
5
|
+
|
6
|
+
|
7
|
+
def get_problem_shortname() -> Optional[str]:
|
8
|
+
contest = contest_package.find_contest_package()
|
9
|
+
if contest is None:
|
10
|
+
return None
|
11
|
+
problem_path = package.find_problem()
|
12
|
+
contest_path = contest_package.find_contest()
|
13
|
+
|
14
|
+
for problem in contest.problems:
|
15
|
+
if problem.path is None:
|
16
|
+
continue
|
17
|
+
if (problem_path / 'problem.rbx.yml').samefile(
|
18
|
+
contest_path / problem.path / 'problem.rbx.yml'
|
19
|
+
):
|
20
|
+
return problem.short_name
|
21
|
+
|
22
|
+
return None
|
@@ -11,6 +11,7 @@ class BocaExtension(BaseModel):
|
|
11
11
|
languages: typing.List[BocaLanguage] = list(typing.get_args(BocaLanguage))
|
12
12
|
flags: typing.Dict[BocaLanguage, str] = {}
|
13
13
|
maximumTimeError: float = _MAX_REP_ERROR
|
14
|
+
preferContestLetter: bool = False
|
14
15
|
|
15
16
|
def flags_with_defaults(self) -> typing.Dict[BocaLanguage, str]:
|
16
17
|
res: typing.Dict[BocaLanguage, str] = {
|
@@ -6,7 +6,7 @@ from typing import List
|
|
6
6
|
import typer
|
7
7
|
|
8
8
|
from rbx import console
|
9
|
-
from rbx.box import package
|
9
|
+
from rbx.box import naming, package
|
10
10
|
from rbx.box.environment import get_extension_or_default
|
11
11
|
from rbx.box.packaging.boca.extension import BocaExtension, BocaLanguage
|
12
12
|
from rbx.box.packaging.packager import BasePackager, BuiltStatement
|
@@ -52,14 +52,20 @@ class BocaPackager(BasePackager):
|
|
52
52
|
raise typer.Exit(1)
|
53
53
|
|
54
54
|
def _get_problem_name(self) -> str:
|
55
|
-
pkg = package.find_problem_package_or_die()
|
56
55
|
# BOCA forces Java class names to be the name of the problem.
|
57
|
-
return
|
56
|
+
return self.package_basename().replace('-', '_')
|
57
|
+
|
58
|
+
def _get_problem_basename(self) -> str:
|
59
|
+
extension = get_extension_or_default('boca', BocaExtension)
|
60
|
+
shortname = naming.get_problem_shortname()
|
61
|
+
if extension.preferContestLetter and shortname is not None:
|
62
|
+
return shortname
|
63
|
+
return self._get_problem_name()
|
58
64
|
|
59
65
|
def _get_problem_info(self) -> str:
|
60
66
|
statement = self._get_main_statement()
|
61
67
|
return (
|
62
|
-
f'basename={self.
|
68
|
+
f'basename={self._get_problem_basename()}\n'
|
63
69
|
f'fullname={statement.title}\n'
|
64
70
|
f'descfile={self._get_problem_name()}.pdf\n'
|
65
71
|
)
|
@@ -24,14 +24,6 @@ class MojPackager(BocaPackager):
|
|
24
24
|
def task_types(cls) -> List[TaskType]:
|
25
25
|
return [TaskType.COMMUNICATION, TaskType.BATCH]
|
26
26
|
|
27
|
-
def _get_problem_info(self) -> str:
|
28
|
-
statement = self._get_main_statement()
|
29
|
-
return (
|
30
|
-
f'basename={self._get_problem_name()}\n'
|
31
|
-
f'fullname={statement.title}\n'
|
32
|
-
f'descfile={self._get_problem_name()}.pdf\n'
|
33
|
-
)
|
34
|
-
|
35
27
|
def _get_tl(self) -> str:
|
36
28
|
extension = get_extension_or_default('boca', BocaExtension)
|
37
29
|
|
@@ -237,8 +229,6 @@ class MojPackager(BocaPackager):
|
|
237
229
|
(outputs_path / f'{i + 1:03d}').touch()
|
238
230
|
|
239
231
|
# Zip all.
|
240
|
-
shutil.make_archive(
|
241
|
-
str(build_path / self._get_problem_name()), 'zip', into_path
|
242
|
-
)
|
232
|
+
shutil.make_archive(str(build_path / self.package_basename()), 'zip', into_path)
|
243
233
|
|
244
|
-
return (build_path / self.
|
234
|
+
return (build_path / self.package_basename()).with_suffix('.zip')
|
rbx/box/packaging/packager.py
CHANGED
@@ -3,7 +3,7 @@ import pathlib
|
|
3
3
|
from abc import ABC, abstractmethod
|
4
4
|
from typing import List, Tuple
|
5
5
|
|
6
|
-
from rbx.box import package
|
6
|
+
from rbx.box import naming, package
|
7
7
|
from rbx.box.contest import contest_package
|
8
8
|
from rbx.box.contest.schema import ContestProblem, ContestStatement
|
9
9
|
from rbx.box.generators import get_all_built_testcases
|
@@ -50,6 +50,13 @@ class BasePackager(ABC):
|
|
50
50
|
res.add(statement.language)
|
51
51
|
return list(res)
|
52
52
|
|
53
|
+
def package_basename(self):
|
54
|
+
pkg = package.find_problem_package_or_die()
|
55
|
+
shortname = naming.get_problem_shortname()
|
56
|
+
if shortname is not None:
|
57
|
+
return f'{shortname}-{pkg.name}'
|
58
|
+
return pkg.name
|
59
|
+
|
53
60
|
def statement_types(self) -> List[StatementType]:
|
54
61
|
return [StatementType.PDF]
|
55
62
|
|
@@ -7,7 +7,7 @@ import syncer
|
|
7
7
|
import typer
|
8
8
|
|
9
9
|
from rbx import annotations, console
|
10
|
-
from rbx.box import environment, package
|
10
|
+
from rbx.box import environment, naming, package
|
11
11
|
from rbx.box.schema import Package
|
12
12
|
from rbx.box.statements.builders import (
|
13
13
|
BUILDER_LIST,
|
@@ -291,6 +291,7 @@ def build_statement(
|
|
291
291
|
output_type=output_type,
|
292
292
|
use_samples=use_samples,
|
293
293
|
is_editorial=is_editorial,
|
294
|
+
short_name=naming.get_problem_shortname(),
|
294
295
|
)
|
295
296
|
statement_path = (
|
296
297
|
package.get_build_path()
|
rbx/grading/steps.py
CHANGED
@@ -332,7 +332,7 @@ def _expand_part(part: str, sandbox: SandboxBase) -> List[str]:
|
|
332
332
|
|
333
333
|
def _split_and_expand(command: str, sandbox: SandboxBase) -> List[str]:
|
334
334
|
res = []
|
335
|
-
parts = shlex.split(command.format(memory=sandbox.params.address_space))
|
335
|
+
parts = shlex.split(command.format(memory=sandbox.params.address_space or 2048))
|
336
336
|
for part in parts:
|
337
337
|
res.extend(_expand_part(part, sandbox))
|
338
338
|
return res
|
@@ -19,7 +19,7 @@ rbx/box/contest/statements.py,sha256=Or8gFb6P_oViGdeiVgepXsvd_W84mA7LRaVmiAXWWSg
|
|
19
19
|
rbx/box/creation.py,sha256=Evz7K6JoarD-4JJQsZsgoxU9FgCF9Z7-LfuroG4Cqls,2444
|
20
20
|
rbx/box/deferred.py,sha256=II3X9e87JCOZtmspnHh-n4PFqh-FsH_oc0XJHZ9ZYVQ,691
|
21
21
|
rbx/box/download.py,sha256=MFP-R26JiYGAP89I0TK-0fYc69Fsd20tsBqgtRCy5AE,2234
|
22
|
-
rbx/box/environment.py,sha256=
|
22
|
+
rbx/box/environment.py,sha256=S-OLvR2_Nac8m923b9AtDhOY3goRJXlPA_I3s7BeDqQ,11162
|
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
|
@@ -27,13 +27,14 @@ rbx/box/generators_test.py,sha256=J7aBfuJhU84MWDWzgReRoOuQw_hVa09B8gTKAvL2XVo,19
|
|
27
27
|
rbx/box/lazy_importing_main.py,sha256=6Z8As7qVFFT619xHH9Xt8VCH57NjC4aDxfAgkWiUwT8,116
|
28
28
|
rbx/box/lazy_importing_test.py,sha256=B0-b3y_DkxEmtVfu4NfmVsgVdFl6kRCsEL6GLMHJISo,628
|
29
29
|
rbx/box/main.py,sha256=Imwc0ZkheOpa5r8S0Xpb8RLQzJgxb9vyuSR4_wab11g,43
|
30
|
+
rbx/box/naming.py,sha256=n3Nvw2MuWtAjywDxYDV5gg22Upf8Ap1lYavo0o46SRA,612
|
30
31
|
rbx/box/package.py,sha256=YuX_FS6yKx6FaFz0NF0cx3v6jzhqwvsLr3Oprx_TTJA,13645
|
31
|
-
rbx/box/packaging/boca/extension.py,sha256=
|
32
|
-
rbx/box/packaging/boca/packager.py,sha256=
|
32
|
+
rbx/box/packaging/boca/extension.py,sha256=EQALNEOv4zVDXSKs_dk11n92y7cBZVn8TogIK683lE0,890
|
33
|
+
rbx/box/packaging/boca/packager.py,sha256=CUMoQICrkQQBFElmI9SrvXlFFnpwkTiJ9qbOSJOy6AE,12512
|
33
34
|
rbx/box/packaging/contest_main.py,sha256=nMdgPE4OK_tsnUMdRI1cJwLpgxGrwW_mJjox0oOALWw,2757
|
34
35
|
rbx/box/packaging/main.py,sha256=RXGcpVZTwqkdLs4wHwoHSiFTXW62jIUS5fnvSKu3Ymw,2998
|
35
|
-
rbx/box/packaging/moj/packager.py,sha256=
|
36
|
-
rbx/box/packaging/packager.py,sha256=
|
36
|
+
rbx/box/packaging/moj/packager.py,sha256=Ro_TO3RVCCRAxNcCio0u42TLfW8FnX9IohMChmGlrvo,8499
|
37
|
+
rbx/box/packaging/packager.py,sha256=da2haC1L9cG30myneMrRIAdGubtid0Xmy38BHKPCZZ4,3633
|
37
38
|
rbx/box/packaging/polygon/packager.py,sha256=qTGOUckevdOCt_ES63pN3uhmhDl9JuNcZ1XEnGNq-tU,10833
|
38
39
|
rbx/box/packaging/polygon/test.py,sha256=bgEju5PwudgyfwxXJagm8fM6CJVlWM6l_-2q1V-oKaQ,3069
|
39
40
|
rbx/box/packaging/polygon/xml_schema.py,sha256=-r24bCeRMGLrGGoT9FIgmqr87xHL-JzrFaR6bztbYtw,2703
|
@@ -49,7 +50,7 @@ rbx/box/solutions.py,sha256=b4P6JN4eSDFiUKjBYvI38jsf8wLxS8Wi-YwBmm25Rcg,42684
|
|
49
50
|
rbx/box/solutions_test.py,sha256=TCowbxBG3SvDlFO5-qtBj_M_HrAHe0IJaI1XwoQ1d00,1718
|
50
51
|
rbx/box/state.py,sha256=MMf3DvfQji0jKEliCHct2Tpp_0epL1tvP8HbHNArQIc,166
|
51
52
|
rbx/box/statements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
|
-
rbx/box/statements/build_statements.py,sha256=
|
53
|
+
rbx/box/statements/build_statements.py,sha256=6przkQWy70ixDbqWMZmBgncaoWg67RY1gPdQ4TPjaTE,12150
|
53
54
|
rbx/box/statements/builders.py,sha256=6lYV-cnC-NXMnJf1wasbq_AMbjdIuPpMirm7QsjZI6s,11825
|
54
55
|
rbx/box/statements/joiners.py,sha256=jItNXkAbTjFQpPMgfDMW86n3vMTbaE8sgo9I8Yf4Txg,2886
|
55
56
|
rbx/box/statements/latex.py,sha256=LkcHwXjMFxbw--Gj9T1VkFKQFsXhY9dN7xZHpZycNW8,1346
|
@@ -94,7 +95,7 @@ rbx/grading/judge/storage.py,sha256=3vv0HvtenbUZBH33CB5ZzX66ppL22G6munBaAA9BgwQ,
|
|
94
95
|
rbx/grading/judge/test.py,sha256=ll0Iw7zyOpGdKPD_PGH7dvUkb4stQLu-ikbQnqJvuAc,944
|
95
96
|
rbx/grading/judge/testiso.py,sha256=v14DtkWiZFJ9AKMzrb0_vZKPWDt8jz8iIw1Z2O-Advk,1397
|
96
97
|
rbx/grading/processing_context.py,sha256=2fxa610WzXGvICDVWkPCG721w-1tXDVT7w_KtSnD0OM,1213
|
97
|
-
rbx/grading/steps.py,sha256=
|
98
|
+
rbx/grading/steps.py,sha256=RpA6HjQ4NaZLMryyFFGBW53QojLoD9VH5yjuZMycWds,25752
|
98
99
|
rbx/grading/steps_with_caching.py,sha256=nez2YwgauGXKRjhk6tQxTDGQ-HEk7KfZOeAPhsxi5iw,3150
|
99
100
|
rbx/grading/steps_with_caching_run_test.py,sha256=mh4DRInrOGhnQFWD1SlcjDm_HvcSDFTDMSpAlG-Q5SI,15570
|
100
101
|
rbx/grading_utils.py,sha256=lL2KtSkOsMElqrRoApQTbFcqVOeHVWUDTMCa3IsLpC4,4484
|
@@ -187,8 +188,8 @@ rbx/testcase.py,sha256=yKOq3CAJZ1YTmInvnoIs0u1iJnRj_X85XiWbLI-p9d8,1951
|
|
187
188
|
rbx/testcase_rendering.py,sha256=nfmv6dSEqd4aR3TsaODwkKGK6AXty_DDKtWf_ejiQpI,2084
|
188
189
|
rbx/testing_utils.py,sha256=ZXMysGXpTtvS1lfLL38FuD5iSIyxi3ARjQePDrUmEtc,2067
|
189
190
|
rbx/utils.py,sha256=6e1eXRzNE-52D0UVtqclePxqR4Haiqt8qWCrSVjnGuE,4585
|
190
|
-
rbx_cp-0.5.
|
191
|
-
rbx_cp-0.5.
|
192
|
-
rbx_cp-0.5.
|
193
|
-
rbx_cp-0.5.
|
194
|
-
rbx_cp-0.5.
|
191
|
+
rbx_cp-0.5.48.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
192
|
+
rbx_cp-0.5.48.dist-info/METADATA,sha256=LDeC-APwbLHB8kxUUmbWjS_pwbTSfIbOweMWlYRTU-M,3261
|
193
|
+
rbx_cp-0.5.48.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
194
|
+
rbx_cp-0.5.48.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
|
195
|
+
rbx_cp-0.5.48.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|