rbx.cp 0.6.1__py3-none-any.whl → 0.7.0__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/cd.py +32 -4
- rbx/box/cli.py +3 -3
- rbx/box/contest/main.py +25 -0
- rbx/box/creation.py +3 -0
- rbx/box/linting.py +76 -7
- rbx/box/presets/__init__.py +4 -4
- rbx/resources/presets/default/contest/contest.rbx.yml +4 -3
- rbx/resources/presets/default/preset.rbx.yml +8 -6
- rbx/resources/presets/default/problem/problem.rbx.yml +9 -10
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.7.0.dist-info}/METADATA +2 -1
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.7.0.dist-info}/RECORD +14 -14
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.7.0.dist-info}/LICENSE +0 -0
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.7.0.dist-info}/WHEEL +0 -0
- {rbx_cp-0.6.1.dist-info → rbx_cp-0.7.0.dist-info}/entry_points.txt +0 -0
rbx/box/cd.py
CHANGED
@@ -10,13 +10,20 @@ from rbx.box.sanitizers import warning_stack
|
|
10
10
|
from rbx.utils import new_cd
|
11
11
|
|
12
12
|
|
13
|
-
def find_package(
|
13
|
+
def find_package(
|
14
|
+
root: pathlib.Path = pathlib.Path(), consider_presets: bool = False
|
15
|
+
) -> Optional[pathlib.Path]:
|
14
16
|
root = root.resolve()
|
15
17
|
|
16
18
|
def has_file():
|
17
19
|
problem_yaml_path = root / 'problem.rbx.yml'
|
18
20
|
contest_yaml_path = root / 'contest.rbx.yml'
|
19
|
-
|
21
|
+
preset_yaml_path = root / 'preset.rbx.yml'
|
22
|
+
return (
|
23
|
+
problem_yaml_path.is_file()
|
24
|
+
or contest_yaml_path.is_file()
|
25
|
+
or (consider_presets and preset_yaml_path.is_file())
|
26
|
+
)
|
20
27
|
|
21
28
|
while root != pathlib.PosixPath('/') and not has_file():
|
22
29
|
root = root.parent
|
@@ -49,10 +56,31 @@ def is_contest_package(root: pathlib.Path = pathlib.Path()) -> bool:
|
|
49
56
|
return (dir / 'contest.rbx.yml').is_file()
|
50
57
|
|
51
58
|
|
52
|
-
def
|
59
|
+
def is_preset_package(root: pathlib.Path = pathlib.Path()) -> bool:
|
60
|
+
dir = find_package(root, consider_presets=True)
|
61
|
+
if dir is None:
|
62
|
+
return False
|
63
|
+
return (dir / 'preset.rbx.yml').is_file()
|
64
|
+
|
65
|
+
|
66
|
+
def within_closest_package(func, consider_presets: bool = False):
|
67
|
+
@functools.wraps(func)
|
68
|
+
def wrapper(*args, **kwargs):
|
69
|
+
package = find_package(consider_presets=consider_presets)
|
70
|
+
if package is None:
|
71
|
+
console.console.print('[error]No rbx package found.[/error]')
|
72
|
+
raise typer.Exit(1)
|
73
|
+
# Get deepest package.
|
74
|
+
with new_package_cd(package):
|
75
|
+
return func(*args, **kwargs)
|
76
|
+
|
77
|
+
return wrapper
|
78
|
+
|
79
|
+
|
80
|
+
def within_closest_wrapper(func):
|
53
81
|
@functools.wraps(func)
|
54
82
|
def wrapper(*args, **kwargs):
|
55
|
-
package = find_package()
|
83
|
+
package = find_package(consider_presets=True)
|
56
84
|
if package is None:
|
57
85
|
console.console.print('[error]No rbx package found.[/error]')
|
58
86
|
raise typer.Exit(1)
|
rbx/box/cli.py
CHANGED
@@ -915,11 +915,11 @@ def stats(
|
|
915
915
|
rich_help_panel='Management',
|
916
916
|
help='Format files of the current package.',
|
917
917
|
)
|
918
|
-
@cd.
|
919
|
-
def fix():
|
918
|
+
@cd.within_closest_wrapper
|
919
|
+
def fix(print_diff: bool = typer.Option(False, '--print-diff', '-p')):
|
920
920
|
from rbx.box import linting
|
921
921
|
|
922
|
-
linting.fix_package()
|
922
|
+
linting.fix_package(print_diff=print_diff)
|
923
923
|
|
924
924
|
|
925
925
|
@app.command(
|
rbx/box/contest/main.py
CHANGED
@@ -16,6 +16,7 @@ from rbx.box.contest.contest_package import (
|
|
16
16
|
within_contest,
|
17
17
|
)
|
18
18
|
from rbx.box.contest.schema import ContestProblem
|
19
|
+
from rbx.box.linting import fix_package
|
19
20
|
from rbx.box.packaging import contest_main as packaging
|
20
21
|
from rbx.box.schema import Package
|
21
22
|
from rbx.config import open_editor
|
@@ -68,9 +69,33 @@ def create(
|
|
68
69
|
|
69
70
|
with cd.new_package_cd(dest_path):
|
70
71
|
contest_utils.clear_all_caches()
|
72
|
+
fix_package()
|
71
73
|
presets.generate_lock()
|
72
74
|
|
73
75
|
|
76
|
+
@app.command('init, i', help='Initialize a new contest in the current directory.')
|
77
|
+
def init(
|
78
|
+
preset: Annotated[
|
79
|
+
Optional[str],
|
80
|
+
typer.Option(
|
81
|
+
'--preset',
|
82
|
+
'-p',
|
83
|
+
help='Which preset to use to create this package. Can be a named of an already installed preset, or an URI, in which case the preset will be downloaded.\n'
|
84
|
+
'If not provided, the default preset will be used, or the active preset if any.',
|
85
|
+
),
|
86
|
+
] = None,
|
87
|
+
):
|
88
|
+
console.console.print('Initializing new contest in the current directory...')
|
89
|
+
|
90
|
+
fetch_info = presets.get_preset_fetch_info_with_fallback(preset)
|
91
|
+
|
92
|
+
presets.install_contest(pathlib.Path.cwd(), fetch_info)
|
93
|
+
|
94
|
+
contest_utils.clear_all_caches()
|
95
|
+
fix_package()
|
96
|
+
presets.generate_lock()
|
97
|
+
|
98
|
+
|
74
99
|
@app.command('edit, e', help='Open contest.rbx.yml in your default editor.')
|
75
100
|
@within_contest
|
76
101
|
def edit():
|
rbx/box/creation.py
CHANGED
@@ -5,6 +5,7 @@ import typer
|
|
5
5
|
|
6
6
|
from rbx import console, utils
|
7
7
|
from rbx.box import package, presets
|
8
|
+
from rbx.box.linting import fix_package
|
8
9
|
|
9
10
|
|
10
11
|
def create(
|
@@ -42,4 +43,6 @@ def create(
|
|
42
43
|
problem['name'] = name
|
43
44
|
utils.save_ruyaml(dest_path / 'problem.rbx.yml', ru, problem)
|
44
45
|
|
46
|
+
fix_package(dest_path)
|
47
|
+
|
45
48
|
presets.generate_lock(dest_path)
|
rbx/box/linting.py
CHANGED
@@ -1,26 +1,95 @@
|
|
1
|
+
import difflib
|
1
2
|
import pathlib
|
3
|
+
from typing import Optional, Type
|
2
4
|
|
3
5
|
import yamlfix
|
4
6
|
import yamlfix.model
|
7
|
+
from pydantic import BaseModel
|
5
8
|
|
6
9
|
from rbx import console
|
7
|
-
from rbx.box.cd import is_contest_package, is_problem_package
|
10
|
+
from rbx.box.cd import is_contest_package, is_preset_package, is_problem_package
|
11
|
+
from rbx.box.contest.schema import Contest
|
12
|
+
from rbx.box.presets import get_preset_yaml
|
13
|
+
from rbx.box.presets.schema import Preset
|
14
|
+
from rbx.box.schema import Package
|
8
15
|
from rbx.box.stats import find_problem_packages_from_contest
|
16
|
+
from rbx.utils import uploaded_schema_path
|
9
17
|
|
10
18
|
|
11
|
-
def
|
12
|
-
|
19
|
+
def fix_language_server(path: pathlib.Path, model_cls: Type[BaseModel]) -> bool:
|
20
|
+
stream = []
|
21
|
+
with path.open('r') as f:
|
22
|
+
for line in f:
|
23
|
+
if line.strip().startswith('# yaml-language-server:'):
|
24
|
+
continue
|
25
|
+
stream.append(line)
|
26
|
+
if line.startswith('---'):
|
27
|
+
stream.append(
|
28
|
+
f'# yaml-language-server: $schema={uploaded_schema_path(model_cls)}\n'
|
29
|
+
)
|
30
|
+
content = ''.join(stream)
|
31
|
+
orig_text = path.read_text()
|
32
|
+
path.write_text(content)
|
33
|
+
return orig_text != content
|
34
|
+
|
35
|
+
|
36
|
+
def fix_yaml(
|
37
|
+
path: pathlib.Path,
|
38
|
+
verbose: bool = True,
|
39
|
+
print_diff: bool = False,
|
40
|
+
model_cls: Optional[Type[BaseModel]] = None,
|
41
|
+
):
|
42
|
+
orig_text = path.read_text()
|
43
|
+
|
44
|
+
# Config to go hand-to-hand with VSCode YAML extension,
|
45
|
+
# which we offer first class support to. Unfortunately,
|
46
|
+
# YAML extension is not perfect :(
|
47
|
+
config = yamlfix.model.YamlfixConfig(
|
48
|
+
quote_basic_values=True,
|
49
|
+
quote_representation='"',
|
50
|
+
comments_min_spaces_from_content=1,
|
51
|
+
)
|
13
52
|
_, changed = yamlfix.fix_files([str(path)], dry_run=False, config=config)
|
53
|
+
|
54
|
+
if model_cls is not None:
|
55
|
+
if fix_language_server(path, model_cls):
|
56
|
+
changed = True
|
57
|
+
|
14
58
|
if changed and verbose:
|
15
59
|
console.console.print(
|
16
60
|
f'Formatting [item]{path}[/item].',
|
17
61
|
)
|
18
62
|
|
63
|
+
if print_diff and changed:
|
64
|
+
unified_diff = difflib.unified_diff(
|
65
|
+
orig_text.splitlines(), path.read_text().splitlines()
|
66
|
+
)
|
67
|
+
console.console.print(
|
68
|
+
f'Diff for [item]{path}[/item].\n' + '\n'.join(unified_diff),
|
69
|
+
)
|
70
|
+
|
71
|
+
|
72
|
+
def fix_package(root: pathlib.Path = pathlib.Path(), print_diff: bool = False):
|
73
|
+
if is_preset_package(root):
|
74
|
+
fix_yaml(root / 'preset.rbx.yml', model_cls=Preset, print_diff=print_diff)
|
75
|
+
preset = get_preset_yaml(root)
|
76
|
+
if preset.problem is not None:
|
77
|
+
fix_yaml(
|
78
|
+
root / preset.problem / 'problem.rbx.yml',
|
79
|
+
model_cls=Package,
|
80
|
+
print_diff=print_diff,
|
81
|
+
)
|
82
|
+
if preset.contest is not None:
|
83
|
+
fix_package(root / preset.contest, print_diff=print_diff)
|
84
|
+
return
|
19
85
|
|
20
|
-
def fix_package(root: pathlib.Path = pathlib.Path()):
|
21
86
|
if is_problem_package(root):
|
22
|
-
fix_yaml(root / 'problem.rbx.yml')
|
87
|
+
fix_yaml(root / 'problem.rbx.yml', model_cls=Package, print_diff=print_diff)
|
23
88
|
if is_contest_package(root):
|
24
|
-
fix_yaml(root / 'contest.rbx.yml')
|
89
|
+
fix_yaml(root / 'contest.rbx.yml', model_cls=Contest, print_diff=print_diff)
|
25
90
|
for problem in find_problem_packages_from_contest(root):
|
26
|
-
fix_yaml(
|
91
|
+
fix_yaml(
|
92
|
+
problem / 'problem.rbx.yml',
|
93
|
+
model_cls=Package,
|
94
|
+
print_diff=print_diff,
|
95
|
+
)
|
rbx/box/presets/__init__.py
CHANGED
@@ -23,7 +23,7 @@ def _find_preset_yaml(root: pathlib.Path = pathlib.Path()) -> Optional[pathlib.P
|
|
23
23
|
return None
|
24
24
|
|
25
25
|
|
26
|
-
def
|
26
|
+
def get_preset_yaml(root: pathlib.Path = pathlib.Path()) -> Preset:
|
27
27
|
found = _find_preset_yaml(root)
|
28
28
|
if not found:
|
29
29
|
console.console.print(
|
@@ -221,7 +221,7 @@ def _copy_updated_assets(
|
|
221
221
|
def get_active_preset_or_null(root: pathlib.Path = pathlib.Path()) -> Optional[Preset]:
|
222
222
|
local_preset = _find_local_preset(root)
|
223
223
|
if local_preset is not None:
|
224
|
-
return
|
224
|
+
return get_preset_yaml(local_preset)
|
225
225
|
return None
|
226
226
|
|
227
227
|
|
@@ -319,7 +319,7 @@ def _install_preset_from_dir(
|
|
319
319
|
update: bool = False,
|
320
320
|
override_uri: Optional[str] = None,
|
321
321
|
):
|
322
|
-
preset =
|
322
|
+
preset = get_preset_yaml(src)
|
323
323
|
|
324
324
|
if ensure_contest and preset.contest is None:
|
325
325
|
console.console.print(
|
@@ -391,7 +391,7 @@ def _install_preset_from_local_dir(
|
|
391
391
|
update: bool = False,
|
392
392
|
):
|
393
393
|
pd = pathlib.Path(fetch_info.inner_dir)
|
394
|
-
preset =
|
394
|
+
preset = get_preset_yaml(pd)
|
395
395
|
console.console.print(
|
396
396
|
f'Installing local preset [item]{preset.name}[/item] into [item]{dest}[/item]...'
|
397
397
|
)
|
@@ -1,14 +1,15 @@
|
|
1
|
+
---
|
2
|
+
# yaml-language-server: $schema=https://rsalesc.github.io/rbx/schemas/Contest.json
|
1
3
|
# Add problems by running `rbx contest add <problem-name> <short-name>`
|
2
|
-
|
3
4
|
name: "new-contest"
|
4
5
|
statements:
|
5
6
|
- name: "statement-en"
|
6
7
|
title: "New contest"
|
7
|
-
language: en
|
8
|
+
language: "en"
|
8
9
|
path: "statement/contest.rbx.tex"
|
9
10
|
type: "jinja-tex"
|
10
11
|
assets: ["statement/olymp.sty", "statement/*.png"]
|
11
|
-
joiner: {
|
12
|
+
joiner: {type: "tex2pdf"}
|
12
13
|
override:
|
13
14
|
configure:
|
14
15
|
- type: "rbx-tex" # Convert rbxTeX to TeX
|
@@ -1,12 +1,14 @@
|
|
1
|
+
---
|
2
|
+
# yaml-language-server: $schema=https://rsalesc.github.io/rbx/schemas/Preset.json
|
1
3
|
name: "default"
|
2
|
-
uri: rsalesc/rbx/rbx/resources/presets/default
|
4
|
+
uri: "rsalesc/rbx/rbx/resources/presets/default"
|
3
5
|
problem: "problem"
|
4
6
|
contest: "contest"
|
5
7
|
tracking:
|
6
8
|
problem:
|
7
|
-
- path: statement/template.rbx.tex
|
8
|
-
- path: statement/olymp.sty
|
9
|
+
- path: "statement/template.rbx.tex"
|
10
|
+
- path: "statement/olymp.sty"
|
9
11
|
contest:
|
10
|
-
- path: statement/template.rbx.tex
|
11
|
-
- path: statement/olymp.sty
|
12
|
-
- path: statement/contest.rbx.tex
|
12
|
+
- path: "statement/template.rbx.tex"
|
13
|
+
- path: "statement/olymp.sty"
|
14
|
+
- path: "statement/contest.rbx.tex"
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
---
|
2
|
+
# yaml-language-server: $schema=https://rsalesc.github.io/rbx/schemas/Package.json
|
3
3
|
name: "new-problem"
|
4
4
|
timeLimit: 1000
|
5
5
|
memoryLimit: 256
|
6
|
-
checker: {
|
7
|
-
validator: {
|
6
|
+
checker: {path: "wcmp.cpp"} # Download others from testlib with `rbx download checker`
|
7
|
+
validator: {path: "validator.cpp"}
|
8
8
|
generators:
|
9
9
|
- path: "gen.cpp"
|
10
10
|
name: "gen"
|
@@ -19,16 +19,16 @@ testcases:
|
|
19
19
|
path: "random.py" # Generator script written programatically.
|
20
20
|
solutions:
|
21
21
|
- path: "sols/main.cpp"
|
22
|
-
outcome: ACCEPTED
|
22
|
+
outcome: "ACCEPTED"
|
23
23
|
- path: "sols/wa.cpp"
|
24
|
-
outcome: WRONG_ANSWER
|
24
|
+
outcome: "WRONG_ANSWER"
|
25
25
|
- path: "sols/slow.cpp"
|
26
|
-
outcome: TLE_OR_RTE # Can be TLE too
|
26
|
+
outcome: "TLE_OR_RTE" # Can be TLE too
|
27
27
|
statements:
|
28
28
|
- name: "statement-en"
|
29
29
|
title: "New Problem"
|
30
30
|
path: "statement/statement.rbx.tex" # Open this file to edit your statement.
|
31
|
-
type: rbxTeX
|
31
|
+
type: "rbxTeX"
|
32
32
|
language: "en"
|
33
33
|
assets: ["statement/olymp.sty", "statement/*.png"]
|
34
34
|
configure:
|
@@ -52,5 +52,4 @@ unitTests:
|
|
52
52
|
- glob: "unit/checker/wa*"
|
53
53
|
outcome: "WRONG_ANSWER"
|
54
54
|
vars:
|
55
|
-
|
56
|
-
|
55
|
+
MAX_N: 1000000000 # Can be used in the validator, in stress tests and in the statement.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: rbx.cp
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.7.0
|
4
4
|
Summary:
|
5
5
|
Author: Roberto Sales
|
6
6
|
Requires-Python: >=3.9.1,<4.0.0
|
@@ -34,6 +34,7 @@ Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
|
|
34
34
|
Requires-Dist: questionary (>=2.1.0,<3.0.0)
|
35
35
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
36
36
|
Requires-Dist: rich (>=13.9.4,<14.0.0)
|
37
|
+
Requires-Dist: ruamel-yaml (>=0.18.14,<0.19.0)
|
37
38
|
Requires-Dist: ruyaml (>=0.91.0,<0.92.0)
|
38
39
|
Requires-Dist: syncer (>=2.0.3,<3.0.0)
|
39
40
|
Requires-Dist: textual (>=3.1.1,<4.0.0)
|
@@ -3,9 +3,9 @@ rbx/annotations.py,sha256=qcJGL_INONSirH7LTrEma5RsweAIbO6QlRHVvRvb9ao,3521
|
|
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=
|
6
|
+
rbx/box/cd.py,sha256=bPiSLMDNFtfOSYaQ9TBGm-Cl8SKajqDZMr98uXMvKA8,2699
|
7
7
|
rbx/box/checkers.py,sha256=2eLfMOzJajoca26M4rOBxUxve3-BpxcMu_q2upI1Pcg,13017
|
8
|
-
rbx/box/cli.py,sha256=
|
8
|
+
rbx/box/cli.py,sha256=d6N_CvipfTGDyjLANkwpbvJRk9WmQTA9nnbT9GrWTPo,27724
|
9
9
|
rbx/box/code.py,sha256=9Eba-LlvmMkfyiNAFOk2V2rRXKQvQYWyC_d0q195pZw,24445
|
10
10
|
rbx/box/compile.py,sha256=Kzn5mEQu4vb91W9vjyt0DS6cfPJzFLTUoowFj7uHLUo,2539
|
11
11
|
rbx/box/conftest.py,sha256=sEmciXSeDC-wmrZ1JSxbsUenKNP_VWW32mrCun2pY3I,1070
|
@@ -13,10 +13,10 @@ rbx/box/contest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
rbx/box/contest/build_contest_statements.py,sha256=643LJY1XEgevitbnzc05Cgo8wcLp7w91Z1K4D5XKcqA,12016
|
14
14
|
rbx/box/contest/contest_package.py,sha256=EqtmEw36Hpr7-AYf4hGV0tYDu5esj7k14w7ZEIYU36o,2980
|
15
15
|
rbx/box/contest/contest_utils.py,sha256=fsWHG1e65wq9zvRY3tdf32VF0nU1yzGTOBX5yjXiNk4,1102
|
16
|
-
rbx/box/contest/main.py,sha256=
|
16
|
+
rbx/box/contest/main.py,sha256=qjBGZpSzeCHA3IfjVsO1yywNek9K-h6Fqtp1-ulHoVo,7399
|
17
17
|
rbx/box/contest/schema.py,sha256=eb7xtyq078YYWYHueximNhyHFINzwgLMFm1j9U3LxBQ,7461
|
18
18
|
rbx/box/contest/statements.py,sha256=wTLmCO3VlGUcN-CzBf-uKUSOAbLUnDeZhdMcsIuF63A,3803
|
19
|
-
rbx/box/creation.py,sha256=
|
19
|
+
rbx/box/creation.py,sha256=I3sclB5WTK_pcXDnYU6LEbvGVSHwRS_30L3GVAz-QqM,1369
|
20
20
|
rbx/box/deferred.py,sha256=II3X9e87JCOZtmspnHh-n4PFqh-FsH_oc0XJHZ9ZYVQ,691
|
21
21
|
rbx/box/download.py,sha256=tLW5gLVeLk0gHMEMwScSoHIXQPkXuPsqXzItsrsnUZY,3070
|
22
22
|
rbx/box/dump_schemas.py,sha256=3j5t47_vJmXj0BCczxDX6ByOcsfolGEDNCBXlPpk86w,593
|
@@ -31,7 +31,7 @@ rbx/box/header.py,sha256=ifErXcIxG5lM5AyRiHDr7JE401vR4ORNXCNpHXxN_ls,2001
|
|
31
31
|
rbx/box/lang.py,sha256=GaWvf4rgukflIZ9ti4MUKSJcz9wm2mIVuFcrO-pA8L8,669
|
32
32
|
rbx/box/lazy_importing_main.py,sha256=6Z8As7qVFFT619xHH9Xt8VCH57NjC4aDxfAgkWiUwT8,116
|
33
33
|
rbx/box/lazy_importing_test.py,sha256=B0-b3y_DkxEmtVfu4NfmVsgVdFl6kRCsEL6GLMHJISo,628
|
34
|
-
rbx/box/linting.py,sha256=
|
34
|
+
rbx/box/linting.py,sha256=XdIgn8uRmPt06mLaP9ROnn6P1aSRdery6FkiLazLDM8,3181
|
35
35
|
rbx/box/main.py,sha256=a8CYi77kOywPFly4-ucEIJLXQW-1NFp91kK2fA42YTE,86
|
36
36
|
rbx/box/naming.py,sha256=pOG37X_wQM9CCSYwJIUf-b-ZHEs_nchO7wQEdP_quJg,1367
|
37
37
|
rbx/box/package.py,sha256=ZywWmXjQo-A14fMOhOCzAO5IjFX9x-TBs8PusAv8iWE,13771
|
@@ -47,7 +47,7 @@ rbx/box/packaging/polygon/polygon_api.py,sha256=mPKEqiwANJ1nr-JhOgzGMaDhnbljsAgz
|
|
47
47
|
rbx/box/packaging/polygon/test.py,sha256=bgEju5PwudgyfwxXJagm8fM6CJVlWM6l_-2q1V-oKaQ,3069
|
48
48
|
rbx/box/packaging/polygon/upload.py,sha256=6dIbjwygKtirLBkbh40UgtHU1NHGxSMoFAtg2BcC2II,12902
|
49
49
|
rbx/box/packaging/polygon/xml_schema.py,sha256=ZgcLyvxggMUccbTNdzflue5G-FTN2_ZmOGGF7FD0Y5A,2851
|
50
|
-
rbx/box/presets/__init__.py,sha256=
|
50
|
+
rbx/box/presets/__init__.py,sha256=9BLun8zOwbn6T9eyNtIMONL3Ty5j77UUPzenB2-JOpY,22709
|
51
51
|
rbx/box/presets/fetch.py,sha256=900aq9S8e12TlgSenG0iHgtF4OWgqavZsptgI_a1YKM,2508
|
52
52
|
rbx/box/presets/lock_schema.py,sha256=Ohxs5J_B5_Dr8ZajptGqKzRzIjQS2ehDHbCOSy07PyY,309
|
53
53
|
rbx/box/presets/schema.py,sha256=KhAZjA5VU7dBEvGc22jBWO8JHKkQ-sbPz6EcJK8Rgfg,2299
|
@@ -196,14 +196,14 @@ rbx/resources/packagers/moj/scripts/py2/run.sh,sha256=qshf-K3mKP4c7b45S3D82Wj0Ai
|
|
196
196
|
rbx/resources/packagers/moj/scripts/py3/compile.sh,sha256=XPn8qDR_gPAAZD9h5lVEMdBkrSogRZvpT4MAaNNp9nk,96
|
197
197
|
rbx/resources/packagers/moj/scripts/py3/prep.sh,sha256=it1e07QRpsnku3-rXOO1ovaw-RJlVVPy9R3I6WWwgMM,126
|
198
198
|
rbx/resources/packagers/moj/scripts/py3/run.sh,sha256=LrMi7Tap9no8gh64QNGUXbWauP6ZpSl-wEwXZ2qhPo0,197
|
199
|
-
rbx/resources/presets/default/contest/contest.rbx.yml,sha256=
|
199
|
+
rbx/resources/presets/default/contest/contest.rbx.yml,sha256=nN6FTb9xTISR2Lxv6AoCegEStgmwsfPo5KaFiBlJgWU,535
|
200
200
|
rbx/resources/presets/default/contest/statement/contest.rbx.tex,sha256=3YDQo5c-SGbwXcd4uytyY_Mc7UriAditgdJnbN8UdHg,3062
|
201
201
|
rbx/resources/presets/default/contest/statement/olymp.sty,sha256=k4TCQz1IeXV75oZ2_dcWEQ3ziTDegOEdnYn4Xb4vzsU,6766
|
202
202
|
rbx/resources/presets/default/contest/statement/template.rbx.tex,sha256=XSGtd8JJKfOmU7yTWcC02x6NND9GUlj9uXOEJC168Lg,834
|
203
|
-
rbx/resources/presets/default/preset.rbx.yml,sha256=
|
203
|
+
rbx/resources/presets/default/preset.rbx.yml,sha256=zepC-H2d7c3EZ3pP_agafpinxgCQ53U_JF7X3-WuGak,411
|
204
204
|
rbx/resources/presets/default/problem/.gitignore,sha256=zc-lnGQQZsLBaXpSshesA_QfxhiZdNCSJDEuKqlPtjw,29
|
205
205
|
rbx/resources/presets/default/problem/gen.cpp,sha256=rn6sGRjZ1sFE1Rq02r6488iquY9xTrutcvLv4d1sohA,178
|
206
|
-
rbx/resources/presets/default/problem/problem.rbx.yml,sha256=-
|
206
|
+
rbx/resources/presets/default/problem/problem.rbx.yml,sha256=-tmGCLQD1TLtezoUjbRxJQzz5CtfRtvJEjEG2EYKEls,1689
|
207
207
|
rbx/resources/presets/default/problem/random.py,sha256=-iPorU24QHfp39EYRJX9jMKcTIxxz5ejKoAzPLIuu1g,98
|
208
208
|
rbx/resources/presets/default/problem/random.txt,sha256=2BA_AM8IAKEcrUTJhnzWnNJN8whDN82E2137NhFkt2U,137
|
209
209
|
rbx/resources/presets/default/problem/rbx.h,sha256=LBkbC3gbDPW2Fdm1p99hNhF7oKpZLLSY7dE4zpepp5w,2161
|
@@ -230,8 +230,8 @@ rbx/testcase.py,sha256=yKOq3CAJZ1YTmInvnoIs0u1iJnRj_X85XiWbLI-p9d8,1951
|
|
230
230
|
rbx/testcase_rendering.py,sha256=nfmv6dSEqd4aR3TsaODwkKGK6AXty_DDKtWf_ejiQpI,2084
|
231
231
|
rbx/testing_utils.py,sha256=x_PqD8Zd2PkN91NxVHUnSTs044-1WK5KKtttKQBXpFs,2083
|
232
232
|
rbx/utils.py,sha256=SfR844_i0ebRDMkmS_w1YdZiWPc6h2RGADygewlWRbA,4845
|
233
|
-
rbx_cp-0.
|
234
|
-
rbx_cp-0.
|
235
|
-
rbx_cp-0.
|
236
|
-
rbx_cp-0.
|
237
|
-
rbx_cp-0.
|
233
|
+
rbx_cp-0.7.0.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
234
|
+
rbx_cp-0.7.0.dist-info/METADATA,sha256=cJPXcUWJPFAQ-Bo1Ijc8YJqpvo-aJcBsodttyutj-2g,4456
|
235
|
+
rbx_cp-0.7.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
236
|
+
rbx_cp-0.7.0.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
|
237
|
+
rbx_cp-0.7.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|