rbx.cp 0.5.52__tar.gz → 0.5.53__tar.gz
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_cp-0.5.52 → rbx_cp-0.5.53}/PKG-INFO +1 -1
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/pyproject.toml +2 -1
- rbx_cp-0.5.53/rbx/box/dump_schemas.py +18 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/polygon/upload.py +20 -2
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/utils.py +16 -6
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/LICENSE +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/README.md +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/annotations.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/autoenum.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/builder.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/cd.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/checkers.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/cli.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/code.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/compile.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/conftest.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/contest/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/contest/build_contest_statements.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/contest/contest_package.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/contest/contest_utils.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/contest/main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/contest/schema.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/contest/statements.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/creation.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/deferred.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/download.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/environment.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/extensions.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/formatting.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/generators.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/generators_test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/header.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/lazy_importing_main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/lazy_importing_test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/naming.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/package.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/boca/extension.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/boca/packager.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/contest_main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/moj/packager.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/packager.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/polygon/packager.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/polygon/polygon_api.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/polygon/test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/packaging/polygon/xml_schema.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/presets/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/presets/fetch.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/presets/lock_schema.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/presets/schema.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/retries.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/sanitizers/warning_stack.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/schema.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/setter_config.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/solutions.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/solutions_test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/state.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/statements/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/statements/build_statements.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/statements/builders.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/statements/joiners.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/statements/latex.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/statements/latex_jinja.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/statements/schema.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/stresses.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/stressing/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/stressing/finder_parser.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/stressing/generator_parser.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/tasks.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/testcase_extractors.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/testcase_utils.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/testcases/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/testcases/main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/ui/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/ui/captured_log.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/ui/css/app.tcss +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/ui/main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/ui/run.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/unit.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/validators.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/box/validators_test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/checker.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/clone.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/config.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/conftest.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/console.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/create.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/edit.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/caching.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/conftest.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/cacher.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/digester.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/sandbox.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/sandboxes/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/sandboxes/isolate.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/sandboxes/stupid_sandbox.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/sandboxes/timeit.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/storage.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/judge/testiso.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/processing_context.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/steps.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/steps_with_caching.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading/steps_with_caching_run_test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/grading_utils.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/hydration.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/main.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/metadata.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/providers/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/providers/codeforces.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/providers/provider.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/checkers/boilerplate.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/default_config.json +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/default_setter_config.mac.yml +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/default_setter_config.yml +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/envs/default.rbx.yml +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/envs/isolate.rbx.yml +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/checker.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compare.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/c +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/cc +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/java +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/kt +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/pas +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/py2 +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/compile/py3 +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactive/c +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactive/cc +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactive/cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactive/java +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactive/kt +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactive/py2 +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactive/py3 +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/interactor_compile.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/bkp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/c +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/cc +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/java +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/kt +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/py2 +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/boca/run/py3 +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/c/compile.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/c/prep.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/c/run.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/compare.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/cpp/compile.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/cpp/prep.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/cpp/run.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/interactor_prep.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/interactor_run.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/java/compile.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/java/prep.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/java/run.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/py2/compile.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/py2/prep.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/py2/run.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/py3/compile.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/py3/prep.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/packagers/moj/scripts/py3/run.sh +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/contest/contest.rbx.yml +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/contest/statement/contest.rbx.tex +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/contest/statement/olymp.sty +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/contest/statement/template.rbx.tex +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/preset.rbx.yml +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/.gitignore +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/gen.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/problem.rbx.yml +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/random.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/random.txt +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/sols/main.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/sols/slow.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/sols/wa.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/statement/olymp.sty +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/statement/projecao.png +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/statement/statement.rbx.tex +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/statement/template.rbx.tex +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/tests/samples/000.in +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/tests/samples/001.in +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/validator.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/wcmp.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/templates/rbx.h +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/templates/template.cpp +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/run.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/schema.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/submit.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/submitors/__init__.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/submitors/codeforces.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/submitors/submitor.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/test.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/testcase.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/testcase_rendering.py +0 -0
- {rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/testing_utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "rbx.cp"
|
3
|
-
version = "0.5.
|
3
|
+
version = "0.5.53"
|
4
4
|
description = ""
|
5
5
|
packages = [
|
6
6
|
{include = "rbx"}
|
@@ -55,6 +55,7 @@ griffe-fieldz = ">=0.1.2, <1.0.0"
|
|
55
55
|
pytest-cov = "^5.0.0"
|
56
56
|
textual-dev = "^1.6.1"
|
57
57
|
pytest-asyncio = "^0.26.0"
|
58
|
+
mkdocs-gen-files = "^0.5.0"
|
58
59
|
|
59
60
|
[build-system]
|
60
61
|
requires = ["poetry-core"]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import pathlib
|
2
|
+
|
3
|
+
import mkdocs_gen_files
|
4
|
+
|
5
|
+
from rbx.box.contest.schema import Contest
|
6
|
+
from rbx.box.environment import Environment
|
7
|
+
from rbx.box.package import Package
|
8
|
+
from rbx.box.presets.lock_schema import PresetLock
|
9
|
+
from rbx.box.presets.schema import Preset
|
10
|
+
from rbx.box.statements.schema import Statement
|
11
|
+
from rbx.utils import dump_schema_str
|
12
|
+
|
13
|
+
models = [Package, Environment, Contest, Preset, PresetLock, Statement]
|
14
|
+
|
15
|
+
for model in models:
|
16
|
+
path = pathlib.Path('schemas') / f'{model.__name__}.json'
|
17
|
+
with mkdocs_gen_files.open(str(path), 'w') as f:
|
18
|
+
f.write(dump_schema_str(model))
|
@@ -250,6 +250,24 @@ def _get_statement_blocks(statement: Statement) -> StatementBlocks:
|
|
250
250
|
)
|
251
251
|
|
252
252
|
|
253
|
+
def _get_explanations(explanations: Dict[int, str]) -> str:
|
254
|
+
entries = []
|
255
|
+
for i in sorted(explanations):
|
256
|
+
explanation = explanations[i]
|
257
|
+
entries.append(f'\\textbf{{Explanation for example {i + 1}}}\n\n{explanation}')
|
258
|
+
return '\n\n'.join(entries)
|
259
|
+
|
260
|
+
|
261
|
+
def _get_notes_with_explanations(blocks: StatementBlocks) -> Optional[str]:
|
262
|
+
notes = blocks.blocks.get('notes')
|
263
|
+
explanations = blocks.explanations
|
264
|
+
if notes is None and not explanations:
|
265
|
+
return None
|
266
|
+
if notes is None:
|
267
|
+
return _get_explanations(blocks.explanations)
|
268
|
+
return notes + '\n\n' + _get_explanations(blocks.explanations)
|
269
|
+
|
270
|
+
|
253
271
|
def _upload_statement_resources(problem: api.Problem, statement: Statement):
|
254
272
|
assets = get_relative_assets(statement.path, statement.assets)
|
255
273
|
for asset, relative_asset in assets:
|
@@ -293,7 +311,7 @@ def _upload_statement(problem: api.Problem):
|
|
293
311
|
input=blocks.blocks.get('input'),
|
294
312
|
output=blocks.blocks.get('output'),
|
295
313
|
interaction=blocks.blocks.get('interaction'),
|
296
|
-
notes=blocks
|
314
|
+
notes=_get_notes_with_explanations(blocks),
|
297
315
|
)
|
298
316
|
problem.save_statement(
|
299
317
|
lang=code_to_langs([language])[0], problem_statement=polygon_statement
|
@@ -311,8 +329,8 @@ async def upload_problem(name: str):
|
|
311
329
|
name = _normalize_problem_name(name)
|
312
330
|
problem = _find_or_create_problem(name)
|
313
331
|
_update_problem_info(problem)
|
314
|
-
_update_checker(problem)
|
315
332
|
_update_rbx_header(problem)
|
333
|
+
_update_checker(problem)
|
316
334
|
|
317
335
|
if (
|
318
336
|
pkg.type == TaskType.COMMUNICATION
|
@@ -57,21 +57,32 @@ def get_app_path() -> pathlib.Path:
|
|
57
57
|
return pathlib.Path(app_dir)
|
58
58
|
|
59
59
|
|
60
|
-
def
|
61
|
-
|
60
|
+
def dump_schema_str(model: Type[BaseModel]) -> str:
|
61
|
+
return json.dumps(model.model_json_schema(), indent=4)
|
62
|
+
|
63
|
+
|
64
|
+
def dump_schema(model: Type[BaseModel], path: pathlib.Path):
|
62
65
|
path.parent.mkdir(parents=True, exist_ok=True)
|
63
|
-
schema =
|
66
|
+
schema = dump_schema_str(model)
|
64
67
|
path.write_text(schema)
|
68
|
+
|
69
|
+
|
70
|
+
def ensure_schema(model: Type[BaseModel]) -> pathlib.Path:
|
71
|
+
path = get_app_path() / 'schemas' / f'{model.__name__}.json'
|
72
|
+
dump_schema(model, path)
|
65
73
|
return path.resolve()
|
66
74
|
|
67
75
|
|
68
76
|
def model_json(model: BaseModel) -> str:
|
69
|
-
ensure_schema(model.__class__)
|
70
77
|
return model.model_dump_json(indent=4, exclude_unset=True, exclude_none=True)
|
71
78
|
|
72
79
|
|
80
|
+
def uploaded_schema_path(model: Type[BaseModel]) -> str:
|
81
|
+
return f'https://rsalesc.github.io/rbx/schemas/{model.__name__}.json'
|
82
|
+
|
83
|
+
|
73
84
|
def model_to_yaml(model: BaseModel) -> str:
|
74
|
-
path =
|
85
|
+
path = uploaded_schema_path(model.__class__)
|
75
86
|
return f'# yaml-language-server: $schema={path}\n\n' + yaml.dump(
|
76
87
|
model.model_dump(mode='json', exclude_unset=True, exclude_none=True),
|
77
88
|
sort_keys=False,
|
@@ -80,7 +91,6 @@ def model_to_yaml(model: BaseModel) -> str:
|
|
80
91
|
|
81
92
|
|
82
93
|
def model_from_yaml(model: Type[T], s: str) -> T:
|
83
|
-
ensure_schema(model)
|
84
94
|
return model(**yaml.safe_load(s))
|
85
95
|
|
86
96
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/contest/statement/contest.rbx.tex
RENAMED
File without changes
|
File without changes
|
{rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/contest/statement/template.rbx.tex
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/statement/projecao.png
RENAMED
File without changes
|
{rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/statement/statement.rbx.tex
RENAMED
File without changes
|
{rbx_cp-0.5.52 → rbx_cp-0.5.53}/rbx/resources/presets/default/problem/statement/template.rbx.tex
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|