rbx.cp 0.5.37__py3-none-any.whl → 0.5.38__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/annotations.py CHANGED
@@ -1,4 +1,3 @@
1
- import importlib
2
1
  import importlib.resources
3
2
  import pathlib
4
3
  import re
@@ -3,7 +3,7 @@ from typing import Annotated, List, Optional
3
3
  import typer
4
4
 
5
5
  from rbx import annotations, console
6
- from rbx.box import builder, cd, environment, package
6
+ from rbx.box import cd, environment, package
7
7
  from rbx.box.contest.build_contest_statements import build_statement
8
8
  from rbx.box.contest.contest_package import (
9
9
  find_contest_package_or_die,
@@ -44,6 +44,8 @@ def build(
44
44
  contest = find_contest_package_or_die()
45
45
  # At most run the validators, only in samples.
46
46
  if samples:
47
+ from rbx.box import builder
48
+
47
49
  for problem in contest.problems:
48
50
  console.console.print(
49
51
  f'Processing problem [item]{problem.short_name}[/item]...'
rbx/box/generators.py CHANGED
@@ -16,7 +16,6 @@ from rbx.box.schema import (
16
16
  GeneratorCall,
17
17
  Testcase,
18
18
  )
19
- from rbx.box.stressing import generator_parser
20
19
  from rbx.box.testcase_extractors import (
21
20
  GenerationMetadata,
22
21
  GenerationTestcaseEntry,
@@ -119,6 +118,8 @@ def compile_generators(
119
118
 
120
119
 
121
120
  def expand_generator_call(call: GeneratorCall) -> GeneratorCall:
121
+ from rbx.box.stressing import generator_parser
122
+
122
123
  vars = package.find_problem_package_or_die().expanded_vars
123
124
  generator_for_args = generator_parser.Generator(vars)
124
125
  parsed_args = generator_parser.parse(call.args or '')
@@ -0,0 +1,7 @@
1
+ import sys
2
+
3
+ from rbx.box import main # noqa
4
+
5
+ if __name__ == '__main__':
6
+ for m in sys.modules:
7
+ print(m)
@@ -0,0 +1,25 @@
1
+ import subprocess
2
+ import sys
3
+ from pathlib import Path
4
+
5
+ LAZY_MODULES = {
6
+ 'gitpython',
7
+ 'questionary',
8
+ 'fastapi',
9
+ 'requests',
10
+ 'pydantic_xml',
11
+ 'rbx.box.packaging.polygon.packager',
12
+ 'rbx.box.stresses',
13
+ }
14
+
15
+
16
+ def test_rich_not_imported_unnecessary():
17
+ file_path = Path(__file__).parent / 'lazy_importing_main.py'
18
+ result = subprocess.run(
19
+ [sys.executable, '-m', 'coverage', 'run', str(file_path)],
20
+ capture_output=True,
21
+ encoding='utf-8',
22
+ )
23
+ modules = result.stdout.splitlines()
24
+ modules = [module for module in modules if module in LAZY_MODULES]
25
+ assert not modules
rbx/box/main.py CHANGED
@@ -18,11 +18,9 @@ from typing import Annotated, List, Optional
18
18
  import rich
19
19
  import rich.prompt
20
20
  import typer
21
- import questionary
22
21
 
23
22
  from rbx import annotations, config, console, utils
24
23
  from rbx.box import (
25
- builder,
26
24
  cd,
27
25
  setter_config,
28
26
  state,
@@ -33,7 +31,6 @@ from rbx.box import (
33
31
  package,
34
32
  compile,
35
33
  presets,
36
- stresses,
37
34
  validators,
38
35
  )
39
36
  from rbx.box.contest import main as contest
@@ -116,6 +113,8 @@ def edit():
116
113
  @app.command('build, b', help='Build all tests for the problem.')
117
114
  @package.within_problem
118
115
  def build(verification: environment.VerificationParam):
116
+ from rbx.box import builder
117
+
119
118
  builder.build(verification=verification)
120
119
 
121
120
 
@@ -189,6 +188,8 @@ def run(
189
188
  console.console.print('[error]No solutions selected. Exiting.[/error]')
190
189
  raise typer.Exit(1)
191
190
 
191
+ from rbx.box import builder
192
+
192
193
  if not builder.build(verification=verification, output=check):
193
194
  return
194
195
 
@@ -322,6 +323,8 @@ def time(
322
323
  )
323
324
  check = False
324
325
 
326
+ from rbx.box import builder
327
+
325
328
  verification = VerificationLevel.ALL_SOLUTIONS.value
326
329
  if not builder.build(verification=verification, output=check):
327
330
  return None
@@ -522,6 +525,8 @@ def stress(
522
525
  )
523
526
  raise typer.Exit(1)
524
527
 
528
+ from rbx.box import stresses
529
+
525
530
  with utils.StatusProgress('Running stress...') as s:
526
531
  report = stresses.run_stress(
527
532
  name,
@@ -555,6 +560,8 @@ def stress(
555
560
  and group.generatorScript.path.suffix == '.txt'
556
561
  }
557
562
 
563
+ import questionary
564
+
558
565
  testgroup = questionary.select(
559
566
  'Choose the testgroup to add the tests to.\nOnly test groups that have a .txt generatorScript are shown below: ',
560
567
  choices=list(groups_by_name) + ['(create new script)', '(skip)'],
@@ -635,6 +642,8 @@ def compile_command(
635
642
  ),
636
643
  ):
637
644
  if path is None:
645
+ import questionary
646
+
638
647
  path = questionary.path("What's the path to your asset?").ask()
639
648
  if path is None:
640
649
  console.console.print('[error]No path specified.[/error]')
@@ -14,7 +14,6 @@ from rbx.box.packaging.packager import (
14
14
  BuiltContestStatement,
15
15
  BuiltProblemPackage,
16
16
  )
17
- from rbx.box.packaging.polygon.packager import PolygonContestPackager, PolygonPackager
18
17
 
19
18
  app = typer.Typer(no_args_is_help=True, cls=annotations.AliasGroup)
20
19
 
@@ -77,6 +76,11 @@ def run_contest_packager(
77
76
  def polygon(
78
77
  verification: environment.VerificationParam,
79
78
  ):
79
+ from rbx.box.packaging.polygon.packager import (
80
+ PolygonContestPackager,
81
+ PolygonPackager,
82
+ )
83
+
80
84
  run_contest_packager(
81
85
  PolygonContestPackager, PolygonPackager, verification=verification
82
86
  )
rbx/box/packaging/main.py CHANGED
@@ -5,11 +5,9 @@ from typing import Type
5
5
  import typer
6
6
 
7
7
  from rbx import annotations, console
8
- from rbx.box import builder, environment, package
8
+ from rbx.box import environment, package
9
9
  from rbx.box.package import get_build_path
10
- from rbx.box.packaging.boca.packager import BocaPackager
11
10
  from rbx.box.packaging.packager import BasePackager, BuiltStatement
12
- from rbx.box.packaging.polygon.packager import PolygonPackager
13
11
  from rbx.box.statements.build_statements import build_statement
14
12
 
15
13
  app = typer.Typer(no_args_is_help=True, cls=annotations.AliasGroup)
@@ -19,6 +17,8 @@ def run_packager(
19
17
  packager_cls: Type[BasePackager],
20
18
  verification: environment.VerificationParam,
21
19
  ) -> pathlib.Path:
20
+ from rbx.box import builder
21
+
22
22
  if not builder.verify(verification=verification):
23
23
  console.console.print(
24
24
  '[error]Build or verification failed, check the report.[/error]'
@@ -58,6 +58,8 @@ def run_packager(
58
58
  def polygon(
59
59
  verification: environment.VerificationParam,
60
60
  ):
61
+ from rbx.box.packaging.polygon.packager import PolygonPackager
62
+
61
63
  run_packager(PolygonPackager, verification=verification)
62
64
 
63
65
 
@@ -65,4 +67,6 @@ def polygon(
65
67
  def boca(
66
68
  verification: environment.VerificationParam,
67
69
  ):
70
+ from rbx.box.packaging.boca.packager import BocaPackager
71
+
68
72
  run_packager(BocaPackager, verification=verification)
@@ -3,8 +3,6 @@ import shutil
3
3
  import tempfile
4
4
  from typing import Annotated, Iterable, List, Optional, Sequence, Union
5
5
 
6
- import git
7
- import questionary
8
6
  import rich
9
7
  import rich.prompt
10
8
  import typer
@@ -306,6 +304,8 @@ def optionally_install_environment_from_preset(
306
304
  if env_path.is_file():
307
305
  if digest_file(preset_env_path) == digest_file(env_path):
308
306
  return
307
+ import questionary
308
+
309
309
  overwrite = questionary.confirm(
310
310
  'Preset environment file has changed. Overwrite?',
311
311
  default=False,
@@ -371,6 +371,8 @@ def _install(root: pathlib.Path = pathlib.Path(), force: bool = False):
371
371
 
372
372
 
373
373
  def install_from_remote(fetch_info: PresetFetchInfo, force: bool = False) -> str:
374
+ import git
375
+
374
376
  assert fetch_info.fetch_uri is not None
375
377
  with tempfile.TemporaryDirectory() as d:
376
378
  console.console.print(
@@ -484,6 +486,8 @@ def update(
484
486
 
485
487
  for preset_name in presets:
486
488
  if preset_name == LOCAL:
489
+ import questionary
490
+
487
491
  if not questionary.confirm(
488
492
  'Updating local preset will remove all custom changes you made to the preset.',
489
493
  default=False,
rbx/box/setter_config.py CHANGED
@@ -1,5 +1,4 @@
1
1
  import functools
2
- import importlib
3
2
  import importlib.resources
4
3
  import pathlib
5
4
  import shlex
rbx/box/solutions.py CHANGED
@@ -7,7 +7,6 @@ import shutil
7
7
  from collections.abc import Iterator
8
8
  from typing import Dict, Iterable, List, Optional, Set, Tuple
9
9
 
10
- import questionary
11
10
  import rich
12
11
  import rich.live
13
12
  import rich.markup
@@ -674,6 +673,8 @@ def pick_solutions(tracked_solutions: Optional[Set[str]]) -> List[str]:
674
673
  tracked_solutions = set(str(sol.path) for sol in pkg.solutions)
675
674
 
676
675
  # Store in a separate list to maintain order with the package declaration.
676
+ import questionary
677
+
677
678
  choices = [
678
679
  questionary.Choice(title=_get_solution_repr(sol), value=str(sol.path))
679
680
  for sol in pkg.solutions
@@ -6,7 +6,7 @@ from typing import Annotated, Dict, List, Optional, Tuple
6
6
  import typer
7
7
 
8
8
  from rbx import annotations, console
9
- from rbx.box import builder, environment, package
9
+ from rbx.box import environment, package
10
10
  from rbx.box.schema import Package
11
11
  from rbx.box.statements.builders import (
12
12
  BUILDER_LIST,
@@ -333,6 +333,8 @@ def build(
333
333
  ):
334
334
  # At most run the validators, only in samples.
335
335
  if samples:
336
+ from rbx.box import builder
337
+
336
338
  if not builder.build(
337
339
  verification=verification,
338
340
  groups=set(['samples']),
@@ -11,12 +11,6 @@ from pydantic import BaseModel
11
11
 
12
12
  from rbx import console, utils
13
13
  from rbx.box.schema import Package, Primitive, Testcase
14
- from rbx.box.statements.latex import (
15
- MAX_PDFLATEX_RUNS,
16
- Latex,
17
- decode_latex_output,
18
- should_rerun,
19
- )
20
14
  from rbx.box.statements.latex_jinja import (
21
15
  JinjaDictWrapper,
22
16
  render_latex_template,
@@ -355,6 +349,13 @@ class TeX2PDFBuilder(StatementBuilder):
355
349
  item: StatementBuilderItem,
356
350
  verbose: bool = False,
357
351
  ) -> bytes:
352
+ from rbx.box.statements.latex import (
353
+ MAX_PDFLATEX_RUNS,
354
+ Latex,
355
+ decode_latex_output,
356
+ should_rerun,
357
+ )
358
+
358
359
  latex = Latex(input.decode())
359
360
  latex_result = latex.build_pdf(context.root)
360
361
  pdf = latex_result.pdf
@@ -10,12 +10,6 @@ from rbx.box.statements.builders import (
10
10
  StatementBuilderContest,
11
11
  StatementCodeLanguage,
12
12
  )
13
- from rbx.box.statements.latex import (
14
- MAX_PDFLATEX_RUNS,
15
- Latex,
16
- decode_latex_output,
17
- should_rerun,
18
- )
19
13
  from rbx.box.statements.schema import Joiner, JoinerType, JoinTexToPDF, StatementType
20
14
 
21
15
 
@@ -84,6 +78,13 @@ class TeX2PDFJoiner(StatementJoiner):
84
78
  contest: StatementBuilderContest,
85
79
  verbose: bool = False,
86
80
  ) -> bytes:
81
+ from rbx.box.statements.latex import (
82
+ MAX_PDFLATEX_RUNS,
83
+ Latex,
84
+ decode_latex_output,
85
+ should_rerun,
86
+ )
87
+
87
88
  latex = Latex(input.decode())
88
89
  latex_result = latex.build_pdf(context.root)
89
90
  pdf = latex_result.pdf
rbx/config.py CHANGED
@@ -1,5 +1,4 @@
1
1
  import functools
2
- import importlib
3
2
  import importlib.resources
4
3
  import os
5
4
  import pathlib
@@ -8,7 +7,6 @@ import subprocess
8
7
  import tempfile
9
8
  from typing import Any, Dict, List, Optional
10
9
 
11
- import requests
12
10
  import typer
13
11
  from pydantic import BaseModel
14
12
 
@@ -109,6 +107,8 @@ def get_app_file(path: pathlib.Path) -> pathlib.Path:
109
107
 
110
108
 
111
109
  def _download_checker(name: str, save_at: pathlib.Path):
110
+ import requests
111
+
112
112
  console.print(f'Downloading checker {name}...')
113
113
  r = requests.get(
114
114
  f'https://raw.githubusercontent.com/MikeMirzayanov/testlib/master/checkers/{name}'
@@ -121,6 +121,8 @@ def _download_checker(name: str, save_at: pathlib.Path):
121
121
 
122
122
 
123
123
  def _download_testlib(save_at: pathlib.Path):
124
+ import requests
125
+
124
126
  console.print('Downloading testlib.h...')
125
127
  r = requests.get(
126
128
  'https://raw.githubusercontent.com/MikeMirzayanov/testlib/master/testlib.h'
@@ -136,6 +138,8 @@ def _download_testlib(save_at: pathlib.Path):
136
138
 
137
139
 
138
140
  def _download_jngen(save_at: pathlib.Path):
141
+ import requests
142
+
139
143
  console.print('Downloading jngen.h...')
140
144
  r = requests.get('https://raw.githubusercontent.com/ifsmirnov/jngen/master/jngen.h')
141
145
 
@@ -149,6 +153,8 @@ def _download_jngen(save_at: pathlib.Path):
149
153
 
150
154
 
151
155
  def _download_bits_stdcpp(save_at: pathlib.Path):
156
+ import requests
157
+
152
158
  console.print('Downloading bits/stdc++.h...')
153
159
  r = requests.get(
154
160
  'https://raw.githubusercontent.com/tekfyl/bits-stdc-.h-for-mac/master/stdc%2B%2B.h'
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- import importlib
4
3
  import importlib.resources
5
4
  import logging
6
5
  import os
rbx/testing_utils.py CHANGED
@@ -1,4 +1,3 @@
1
- import importlib
2
1
  import importlib.resources
3
2
  import pathlib
4
3
 
rbx/utils.py CHANGED
@@ -13,7 +13,6 @@ import rich.status
13
13
  import ruyaml
14
14
  import typer
15
15
  import yaml
16
- from fastapi.encoders import jsonable_encoder
17
16
  from pydantic import BaseModel
18
17
  from rich import text
19
18
  from rich.highlighter import JSONHighlighter
@@ -74,9 +73,7 @@ def model_json(model: BaseModel) -> str:
74
73
  def model_to_yaml(model: BaseModel) -> str:
75
74
  path = ensure_schema(model.__class__)
76
75
  return f'# yaml-language-server: $schema={path}\n\n' + yaml.dump(
77
- jsonable_encoder(
78
- model.model_dump(mode='json', exclude_unset=True, exclude_none=True)
79
- ),
76
+ model.model_dump(mode='json', exclude_unset=True, exclude_none=True),
80
77
  sort_keys=False,
81
78
  allow_unicode=True,
82
79
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.5.37
3
+ Version: 0.5.38
4
4
  Summary:
5
5
  Author: Roberto Sales
6
6
  Requires-Python: >=3.9,<4.0
@@ -1,5 +1,5 @@
1
1
  rbx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- rbx/annotations.py,sha256=Z3jBUyZoXkrz34jko3Rft0bnMME6nWb0vsV5I3HlgR0,3064
2
+ 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=qIXgV-div21Tw8knwCrTtHyDCgYwBrJc0I5b9KhZuKM,3577
@@ -14,40 +14,42 @@ rbx/box/contest/contest_package.py,sha256=OaUbpBtkhkgOPzJ1ccI_Vq4FMSaJvZm3gMOKfV
14
14
  rbx/box/contest/contest_utils.py,sha256=TDE7I6YQJlu4dQd68wzOp019bNgqiT0RlM-LMQMjL9w,301
15
15
  rbx/box/contest/main.py,sha256=oL-GbyLKdpMjIWiSuWTQgRhQ9hcb7DuNn0axkunx0io,7436
16
16
  rbx/box/contest/schema.py,sha256=JMAig5WpaOahNgAHxA9vX4zYeVYDxpjKP_PFGvmmkE0,4954
17
- rbx/box/contest/statements.py,sha256=Pe4uo1hxvEON8O11VAzsOP3DxUel0vmwiAmolh4ltEs,2910
17
+ rbx/box/contest/statements.py,sha256=lzfGc_9NtFpN_TlRIP8jRg9QXmPjbdC6uI4B7NRrNKs,2938
18
18
  rbx/box/creation.py,sha256=Evz7K6JoarD-4JJQsZsgoxU9FgCF9Z7-LfuroG4Cqls,2444
19
19
  rbx/box/deferred.py,sha256=II3X9e87JCOZtmspnHh-n4PFqh-FsH_oc0XJHZ9ZYVQ,691
20
20
  rbx/box/download.py,sha256=MFP-R26JiYGAP89I0TK-0fYc69Fsd20tsBqgtRCy5AE,2234
21
21
  rbx/box/environment.py,sha256=47NtyuVC6zSQKAtQaXPEXvqcD-KJiuWRpWF8pYvcG4c,11158
22
22
  rbx/box/extensions.py,sha256=Von8kIeXvNFTkGlMRMTvL2HIHPwlkuiMswr-ydbGV1w,519
23
23
  rbx/box/formatting.py,sha256=3phFRHzqVXj4Ok1yDhCq6Clbw6KlqwJNpMhs--oTWFI,405
24
- rbx/box/generators.py,sha256=nJx4U0Cd5DgHIf1n-06c03hyLi5AVdH9tvi0Hnh8iQ8,12158
24
+ rbx/box/generators.py,sha256=6hm1G4BHmq6Nmbbm2aXHewgVntEjQ5HJtPu6z-sTVrY,12163
25
25
  rbx/box/generators_test.py,sha256=ZRqdolU7YE8HXjxr0met5oGn4DCJ5erdsMt5cSOoXIw,1945
26
- rbx/box/main.py,sha256=0lrPLJTGvatcGZCYgLRKKaRkWKEFmNKyA48Shm-uof8,24308
26
+ rbx/box/lazy_importing_main.py,sha256=6Z8As7qVFFT619xHH9Xt8VCH57NjC4aDxfAgkWiUwT8,116
27
+ rbx/box/lazy_importing_test.py,sha256=B0-b3y_DkxEmtVfu4NfmVsgVdFl6kRCsEL6GLMHJISo,628
28
+ rbx/box/main.py,sha256=iSVQYMWo6OOS2LVGlibTTOT_nJVjkLXdlF5xY64CcR8,24451
27
29
  rbx/box/package.py,sha256=80SDHvSzfraCUYutMn_kwsFsmmrSZiaeRHhhrWGmIY4,12081
28
30
  rbx/box/packaging/boca/extension.py,sha256=hQhcbocNfW2ESv5RalS1wf6uvOoOfOnR_gHvbXUbSzY,852
29
31
  rbx/box/packaging/boca/packager.py,sha256=FOhSRg5K5Y4qNB0WyTR3DKgrpObf9I0JbyGpJHOtxpo,10673
30
- rbx/box/packaging/contest_main.py,sha256=Hbxh7geNqrePs5tWhPgdg5W2qhaW5yoreK_VP0Sm19k,2727
31
- rbx/box/packaging/main.py,sha256=ly_wBtJUmeC4JxrtTq0bPofGXhtSN7rpghWqPYyjYhE,2237
32
+ rbx/box/packaging/contest_main.py,sha256=nMdgPE4OK_tsnUMdRI1cJwLpgxGrwW_mJjox0oOALWw,2757
33
+ rbx/box/packaging/main.py,sha256=xd6nohKwkKH1ltyVO_uWwydlx47NkJOpkuTtIk46GVw,2271
32
34
  rbx/box/packaging/packager.py,sha256=suCT_SLnWa915rV2j8VFqzH43HGKRTr9mGGlrvj45aw,3267
33
35
  rbx/box/packaging/polygon/packager.py,sha256=HNpxP2nclLChSnrQtkT7tLwDdXHl1dzXMIF5RZwr9M4,10811
34
36
  rbx/box/packaging/polygon/test.py,sha256=bgEju5PwudgyfwxXJagm8fM6CJVlWM6l_-2q1V-oKaQ,3069
35
37
  rbx/box/packaging/polygon/xml_schema.py,sha256=-r24bCeRMGLrGGoT9FIgmqr87xHL-JzrFaR6bztbYtw,2703
36
- rbx/box/presets/__init__.py,sha256=jivkMH5lWuNpwg4HExpacgPo7RqaENqmrE86aq3CJ6A,18643
38
+ rbx/box/presets/__init__.py,sha256=BwmjBw8wF8yiZFjCYBjMk-HGMZaRwhlfszbWAj3B0vw,18689
37
39
  rbx/box/presets/fetch.py,sha256=F-BCOlvEBEyDqtOhiDuGPn4EDtA4Bwm-fqHJ7zZGlW8,1975
38
40
  rbx/box/presets/lock_schema.py,sha256=6sRPnyePOC8yy-5WcD5JRZdDJHf8loqbvpQ1IPiOU9s,349
39
41
  rbx/box/presets/schema.py,sha256=mZmSPkQsw7eQM0lQN6er1MO_LiW1ObwwAZFDK0F5fxE,1962
40
42
  rbx/box/retries.py,sha256=z7cIh1QmLVUsTr3Attt_28dbwNg6KWTwpulcWCFwMPo,4667
41
43
  rbx/box/sanitizers/warning_stack.py,sha256=RI97_GJgdjTKIXY_r0EKp5h0qQQSDSdNDh5K7zINrqs,2861
42
44
  rbx/box/schema.py,sha256=I7Uh_KXBqAX8fHZr4s9LGPEFHxyBttoLSq_hYJefwto,14581
43
- rbx/box/setter_config.py,sha256=ZM7_G2tbaixaFr0NvRaXkowwfxSWF2Gb4XHBsr2Prpc,4279
44
- rbx/box/solutions.py,sha256=mXW1o3uGNFYmQhfZJzIxfs7nCR7WfWtJtLypLFGriuE,44014
45
+ rbx/box/setter_config.py,sha256=s53talhwM6FTGDCcBhY7IlZ6_6mJ3PMp6V4kTtaSs50,4262
46
+ rbx/box/solutions.py,sha256=zt3wOfkQLAndfvY6u6l-1_41-_99x0ZUPW7w6vcC7E0,44019
45
47
  rbx/box/solutions_test.py,sha256=txjAg-n_pkHHolw4WF4foBrpJAL-llAXw6fUIrGURMc,1716
46
48
  rbx/box/state.py,sha256=yTpjfASpnSXkRB3JiDNvCg5b9JNnNxuYT4uMcbdr59s,109
47
49
  rbx/box/statements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- rbx/box/statements/build_statements.py,sha256=qR6WxUNvSQTBs241qH-qDRbD8IoN_hKeZ2TwY7NXJBQ,12024
49
- rbx/box/statements/builders.py,sha256=pKevMe3GwiXN_k0L2l155sY1rSLneSs0DLJ5T7WhxKQ,11152
50
- rbx/box/statements/joiners.py,sha256=ZbxomnMjEFT8yf5WSWUB4tBa3DL3AhjGEuh8uqHyDdg,2837
50
+ rbx/box/statements/build_statements.py,sha256=S23fqp6kmw97PAfk5zn2MVK8BhH1wjRMm2-kKdAOwlI,12052
51
+ rbx/box/statements/builders.py,sha256=L67i-CP6ftDm2wR6VWywTd3ad7-fhWSSMfaN66Gt13s,11201
52
+ rbx/box/statements/joiners.py,sha256=jItNXkAbTjFQpPMgfDMW86n3vMTbaE8sgo9I8Yf4Txg,2886
51
53
  rbx/box/statements/latex.py,sha256=LkcHwXjMFxbw--Gj9T1VkFKQFsXhY9dN7xZHpZycNW8,1346
52
54
  rbx/box/statements/latex_jinja.py,sha256=7WBfn1h8DpqCAmSE6Av64HfURMnJ2AO4QX1CD72sz5E,7096
53
55
  rbx/box/statements/schema.py,sha256=ES8EUE9JE_uJlDwQx1kZd_5nQJyABtlnjP5IjbWaJ-0,3897
@@ -68,7 +70,7 @@ rbx/box/validators.py,sha256=WX6PR-eVXm9ghv0cJYYhoe9eyQJDZrkXoK6p_Ya_BY0,10106
68
70
  rbx/box/validators_test.py,sha256=hriR6rD32Ouu64eKYYTPLZVvqMxXj7Q2h1l_JAefL7U,344
69
71
  rbx/checker.py,sha256=pj1jO3my48ru-qugbER5onccANCjoR0-PaFe3H3VGEY,4118
70
72
  rbx/clone.py,sha256=wpHyED0_7ST7LD3vj7HjXhzqEzlwh6dRQvKQVDYhGeU,6744
71
- rbx/config.py,sha256=78xKH0zddEF32uIbIs10snqvACx20DmzjQTCex7w95Y,8136
73
+ rbx/config.py,sha256=0Mzlh5Ud4Ju7o7uyyRYhQpg8sMP7psUns_xlou6Bopk,8187
72
74
  rbx/conftest.py,sha256=ouilbOIpvX8jTEdCAiWT85CbdBQKUUf41BjmDI82u-Y,967
73
75
  rbx/console.py,sha256=X8EJy68OROgh6ao3ZcUjZm5Y56VFMzen58ywAuQ7pAU,990
74
76
  rbx/create.py,sha256=ezUq9KiSA-88ASd8CtjWXw8UB4LCaQ3Gib3OgvsLK-Q,986
@@ -82,7 +84,7 @@ rbx/grading/judge/digester.py,sha256=m6o-kjwyFOXKdImUXtVbdMHhwrgrXk8FDnJFVefnTIw
82
84
  rbx/grading/judge/sandbox.py,sha256=0h3YCmGabf9OfORJgx6v2Bed4kE-i8FyuZkPux-sDVk,23569
83
85
  rbx/grading/judge/sandboxes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
86
  rbx/grading/judge/sandboxes/isolate.py,sha256=9xgBuNfAvGtO2zME1FXRah2rcPvzDShsPG0TTuX_UDU,25649
85
- rbx/grading/judge/sandboxes/stupid_sandbox.py,sha256=NKSJWw_1HALjwGVIYQr_R1-s1tb6I25lzDLnPPsYANg,10154
87
+ rbx/grading/judge/sandboxes/stupid_sandbox.py,sha256=NBhBO4YnU5xmfRltv1OtdnEuZT0zn32Sdtpzz40UxvE,10137
86
88
  rbx/grading/judge/sandboxes/timeit.py,sha256=xScfasI2lsSQGZVpIZ7qBZfi0IaKC-1k8wO5qFp7UoM,6634
87
89
  rbx/grading/judge/storage.py,sha256=FirqjwDqb0m0h2OTFyWrZL7CQ4XjZNxhqB4JpnDIhZY,9485
88
90
  rbx/grading/judge/test.py,sha256=ll0Iw7zyOpGdKPD_PGH7dvUkb4stQLu-ikbQnqJvuAc,944
@@ -166,10 +168,10 @@ rbx/testdata/box1/validator.cpp,sha256=EWiKEWB6Nvke3SjBWHnkhkKJjwOqY_WX5kuXLxibA
166
168
  rbx/testdata/box1/wa.sol.cpp,sha256=qsHmvtLJOFI_sdvUT6ITqk7FJYqhrRTCmEIRdy4gSGE,407
167
169
  rbx/testdata/caching/executable.py,sha256=WKRHNf_fprFJd1Fq1ubmQtR3mZzTYVNwKPLWuZ4HrWg,10
168
170
  rbx/testdata/compatible,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
- rbx/testing_utils.py,sha256=ZZLKMUHlZ4HwsuNY50jqSBJ9HhpnFdba7opjDsvXE1U,2084
170
- rbx/utils.py,sha256=AITbkWpWtSp-x3Xept_aObfj_jPL7XL0JJoz5-F9Fp8,4671
171
- rbx_cp-0.5.37.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
172
- rbx_cp-0.5.37.dist-info/METADATA,sha256=-52cZu24PhrGmSfudYYYgw2R-Pfxlmk5YAa1BB96Vw0,3263
173
- rbx_cp-0.5.37.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
174
- rbx_cp-0.5.37.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
175
- rbx_cp-0.5.37.dist-info/RECORD,,
171
+ rbx/testing_utils.py,sha256=ZXMysGXpTtvS1lfLL38FuD5iSIyxi3ARjQePDrUmEtc,2067
172
+ rbx/utils.py,sha256=6e1eXRzNE-52D0UVtqclePxqR4Haiqt8qWCrSVjnGuE,4585
173
+ rbx_cp-0.5.38.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
174
+ rbx_cp-0.5.38.dist-info/METADATA,sha256=Gz2gwOfNCvlcHJ9hS4iQI7S8gN7uP_lTLQ1AMll1ca8,3263
175
+ rbx_cp-0.5.38.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
176
+ rbx_cp-0.5.38.dist-info/entry_points.txt,sha256=qBTLBOeifT1F00LWaEewRRE_jQPgvH7BUdJfZ-dYsFU,57
177
+ rbx_cp-0.5.38.dist-info/RECORD,,