rbx.cp 0.16.0__tar.gz → 0.16.2__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.16.0 → rbx_cp-0.16.2}/PKG-INFO +1 -1
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/pyproject.toml +2 -2
- rbx_cp-0.16.2/rbx/__version__.py +1 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/git_utils.py +27 -3
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/polygon/xml_schema.py +4 -2
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/presets/__init__.py +38 -13
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/presets/fetch.py +9 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/preset.rbx.yml +1 -1
- rbx_cp-0.16.0/rbx/__version__.py +0 -1
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/LICENSE +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/README.md +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/annotations.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/autoenum.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/builder.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/cd.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/checkers.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/cli.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/code.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/compile.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/contest/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/contest/build_contest_statements.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/contest/contest_package.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/contest/contest_utils.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/contest/main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/contest/schema.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/contest/statements.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/creation.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/deferred.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/download.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/dump_schemas.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/environment.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/extensions.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/fields.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/formatting.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/generators.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/global_package.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/header.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/lang.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/lazy_importing_main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/limits_info.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/linting.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/naming.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/package.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/boca/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/boca/boca_language_utils.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/boca/boca_outcome_utils.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/boca/extension.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/boca/packager.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/contest_main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/importer.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/moj/packager.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/packager.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/pkg/packager.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/polygon/importer.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/polygon/packager.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/polygon/polygon_api.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/polygon/test.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/packaging/polygon/upload.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/presets/lock_schema.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/presets/schema.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/remote.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/retries.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/sanitizers/issue_stack.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/sanitizers/warning_stack.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/schema.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/setter_config.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/solutions.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/state.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/build_statements.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/builders.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/expander.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/joiners.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/latex.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/latex_jinja.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/statements/schema.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/stats.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/stresses.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/stressing/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/stressing/finder_parser.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/stressing/generator_parser.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tasks.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testcase_extractors.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testcase_utils.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testcases/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testcases/main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testing/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testing/testing_package.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testing/testing_preset.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/testing/testing_shared.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/timing.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/boca/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/boca/debug_utils.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/boca/main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/boca/manual_scrape.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/boca/scrape.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/boca/scraper.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/converter.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/tooling/main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/captured_log.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/css/app.tcss +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/main.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/build.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/command.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/differ.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/error.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/rich_log_modal.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/run.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/run_explorer.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/run_test_explorer.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/selector.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/screens/test_explorer.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/utils/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/utils/run_ui.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/widgets/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/widgets/diff_box.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/widgets/file_log.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/widgets/interaction_box.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/widgets/rich_log_box.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/widgets/test_output_box.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/ui/widgets/two_sided_test_output_box.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/unit.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/box/validators.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/config.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/console.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/caching.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/debug_context.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/grading_context.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/cacher.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/digester.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/program.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/sandbox.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/sandboxes/__init__.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/sandboxes/stupid_sandbox.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/sandboxes/tee.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/judge/storage.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/limits.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/profiling.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/steps.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/grading/steps_with_caching.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/checkers/boilerplate.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/checkers/noop.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/default_config.json +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/default_setter_config.mac.yml +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/default_setter_config.yml +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/envs/default.rbx.yml +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/checker.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compare.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compile/c +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compile/cc +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compile/cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compile/java +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compile/kt +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compile/py2 +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/compile/py3 +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactive/c +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactive/cc +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactive/cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactive/java +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactive/kt +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactive/py2 +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactive/py3 +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactor_compile.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/interactor_run.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/bkp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/c +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/cc +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/java +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/kt +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/py2 +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/run/py3 +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/safeexec.c +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/boca/safeexec_compile.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/c/compile.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/c/prep.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/c/run.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/compare.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/cpp/compile.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/cpp/prep.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/cpp/run.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/interactor_prep.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/interactor_run.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/java/compile.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/java/prep.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/java/run.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/py2/compile.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/py2/prep.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/py2/run.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/py3/compile.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/py3/prep.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/packagers/moj/scripts/py3/run.sh +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/.gitignore +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/contest.rbx.yml +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/statement/contest.rbx.tex +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/statement/info.rbx.tex +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/statement/instructions.tex +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/statement/logo.png +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/env.rbx.yml +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/.gitignore +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/gens/gen.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/manual_tests/samples/000.in +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/manual_tests/samples/001.in +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/problem.rbx.yml +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/rbx.h +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/sols/main.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/sols/wa-overflow.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/statement/statement.rbx.tex +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/testlib.h +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/testplan/random.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/testplan/random.txt +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/validator.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/wcmp.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/shared/contest_template.rbx.tex +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/shared/icpc.sty +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/shared/problem_template.rbx.tex +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/templates/rbx.h +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/templates/template.cpp +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/testing_utils.py +0 -0
- {rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "rbx.cp"
|
3
|
-
version = "0.16.
|
3
|
+
version = "0.16.2"
|
4
4
|
description = ""
|
5
5
|
packages = [
|
6
6
|
{include = "rbx"}
|
@@ -86,7 +86,7 @@ major_version_zero = true
|
|
86
86
|
annotated_tag = true
|
87
87
|
version_files = [
|
88
88
|
"rbx/__version__.py",
|
89
|
-
"rbx/resources/presets/default/preset.rbx.yml:^
|
89
|
+
"rbx/resources/presets/default/preset.rbx.yml:^min_version",
|
90
90
|
]
|
91
91
|
|
92
92
|
[build-system]
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = '0.16.2'
|
@@ -48,9 +48,33 @@ def ls_remote_tags(uri: str) -> List[str]:
|
|
48
48
|
]
|
49
49
|
|
50
50
|
|
51
|
-
def
|
51
|
+
def ls_version_remote_tags(uri: str) -> List[str]:
|
52
52
|
tags = ls_remote_tags(uri)
|
53
53
|
valid_tags = [tag for tag in tags if semver.Version.is_valid(tag)]
|
54
|
-
|
54
|
+
return valid_tags
|
55
|
+
|
56
|
+
|
57
|
+
def latest_remote_tag(
|
58
|
+
uri: str, before: Optional[str] = None, after: Optional[str] = None
|
59
|
+
) -> str:
|
60
|
+
tags = ls_version_remote_tags(uri)
|
61
|
+
if not tags:
|
55
62
|
raise ValueError(f'No valid tags found for {uri}')
|
56
|
-
|
63
|
+
if before is not None:
|
64
|
+
tags = [
|
65
|
+
tag
|
66
|
+
for tag in tags
|
67
|
+
if semver.VersionInfo.parse(tag) <= semver.VersionInfo.parse(before)
|
68
|
+
]
|
69
|
+
if after is not None:
|
70
|
+
tags = [
|
71
|
+
tag
|
72
|
+
for tag in tags
|
73
|
+
if semver.VersionInfo.parse(tag) >= semver.VersionInfo.parse(after)
|
74
|
+
]
|
75
|
+
return sorted(tags, key=semver.VersionInfo.parse)[-1]
|
76
|
+
|
77
|
+
|
78
|
+
def has_remote_tag(uri: str, tag: str) -> bool:
|
79
|
+
tags = ls_remote_tags(uri)
|
80
|
+
return tag in tags
|
@@ -27,12 +27,14 @@ class File(BaseXmlModel):
|
|
27
27
|
|
28
28
|
|
29
29
|
class Test(BaseXmlModel):
|
30
|
-
method: Literal['manual', 'generated'] = attr()
|
30
|
+
method: Literal['manual', 'generated'] = attr(default='manual')
|
31
31
|
|
32
32
|
sample: Optional[bool] = attr(default=None)
|
33
33
|
|
34
34
|
description: Optional[str] = attr(default=None)
|
35
35
|
|
36
|
+
verdict: Optional[str] = attr(default=None)
|
37
|
+
|
36
38
|
|
37
39
|
class Testset(BaseXmlModel):
|
38
40
|
name: Optional[str] = attr(default=None)
|
@@ -60,7 +62,7 @@ class Judging(BaseXmlModel):
|
|
60
62
|
|
61
63
|
class Checker(BaseXmlModel):
|
62
64
|
name: Optional[str] = attr(default=None)
|
63
|
-
type: Literal['testlib'] = attr()
|
65
|
+
type: Literal['testlib'] = attr(default='testlib')
|
64
66
|
source: File = element()
|
65
67
|
binary: Optional[File] = element(default=None)
|
66
68
|
cpy: Optional[File] = element(tag='copy', default=None)
|
@@ -11,7 +11,7 @@ import semver
|
|
11
11
|
import typer
|
12
12
|
|
13
13
|
from rbx import console, utils
|
14
|
-
from rbx.box import cd
|
14
|
+
from rbx.box import cd, git_utils
|
15
15
|
from rbx.box.git_utils import latest_remote_tag
|
16
16
|
from rbx.box.presets.fetch import (
|
17
17
|
PresetFetchInfo,
|
@@ -605,7 +605,18 @@ def _install_preset_from_remote(
|
|
605
605
|
console.console.print(
|
606
606
|
f'Cloning preset from [item]{fetch_info.fetch_uri}[/item]...'
|
607
607
|
)
|
608
|
-
git.Repo.clone_from(fetch_info.fetch_uri, d)
|
608
|
+
repo = git.Repo.clone_from(fetch_info.fetch_uri, d)
|
609
|
+
if fetch_info.tool_tag is not None:
|
610
|
+
console.console.print(
|
611
|
+
f'Checking out tool tag [item]{fetch_info.tool_tag}[/item]...'
|
612
|
+
)
|
613
|
+
try:
|
614
|
+
repo.git.checkout(fetch_info.tool_tag)
|
615
|
+
except Exception as e:
|
616
|
+
console.console.print(
|
617
|
+
f'[error]Could not checkout tool tag [item]{fetch_info.tool_tag}[/item] for preset [item]{fetch_info.name}[/item].[/error]'
|
618
|
+
)
|
619
|
+
raise typer.Exit(1) from e
|
609
620
|
pd = pathlib.Path(d)
|
610
621
|
if fetch_info.inner_dir:
|
611
622
|
console.console.print(
|
@@ -719,14 +730,32 @@ def _install_preset_from_fetch_info(
|
|
719
730
|
update=update,
|
720
731
|
)
|
721
732
|
return
|
722
|
-
if
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
733
|
+
if fetch_info.is_tool():
|
734
|
+
# Fallback to the remote tool tag if it exists.
|
735
|
+
assert fetch_info.tool_tag is not None
|
736
|
+
remote_fetch_info = get_preset_fetch_info(
|
737
|
+
get_remote_uri_from_tool_preset(fetch_info.name)
|
738
|
+
)
|
739
|
+
assert remote_fetch_info is not None
|
740
|
+
remote_fetch_info.tool_tag = fetch_info.tool_tag
|
741
|
+
|
742
|
+
_install_preset_from_remote(
|
743
|
+
remote_fetch_info,
|
744
|
+
dest,
|
745
|
+
ensure_contest=ensure_contest,
|
746
|
+
ensure_problem=ensure_problem,
|
747
|
+
update=update,
|
748
|
+
)
|
729
749
|
return
|
750
|
+
|
751
|
+
# if _install_preset_from_resources(
|
752
|
+
# fetch_info,
|
753
|
+
# dest,
|
754
|
+
# ensure_contest=ensure_contest,
|
755
|
+
# ensure_problem=ensure_problem,
|
756
|
+
# update=update,
|
757
|
+
# ):
|
758
|
+
# return
|
730
759
|
console.console.print(
|
731
760
|
f'[error]Preset [item]{fetch_info.name}[/item] not found.[/error]'
|
732
761
|
)
|
@@ -895,8 +924,6 @@ def _sync(try_update: bool = False, force: bool = False, symlinks: bool = False)
|
|
895
924
|
def copy_tree_normalizing_gitdir(
|
896
925
|
src_path: pathlib.Path, dst_path: pathlib.Path, update: bool = False
|
897
926
|
):
|
898
|
-
from rbx.box import git_utils
|
899
|
-
|
900
927
|
shutil.copytree(str(src_path), str(dst_path), dirs_exist_ok=update, symlinks=True)
|
901
928
|
|
902
929
|
if not (src_path / '.git').is_file():
|
@@ -918,8 +945,6 @@ def copy_local_preset(
|
|
918
945
|
):
|
919
946
|
copy_tree_normalizing_gitdir(preset_path, dest_path / '.local.rbx')
|
920
947
|
|
921
|
-
from rbx.box import git_utils
|
922
|
-
|
923
948
|
preset_repo = git_utils.get_repo_or_nil(preset_path)
|
924
949
|
current_repo = git_utils.get_repo_or_nil(
|
925
950
|
pathlib.Path.cwd(), search_parent_directories=True
|
@@ -4,6 +4,8 @@ from typing import Optional
|
|
4
4
|
|
5
5
|
from pydantic import BaseModel
|
6
6
|
|
7
|
+
_RBX_REMOTE_URI = 'https://github.com/rsalesc/rbx'
|
8
|
+
|
7
9
|
|
8
10
|
class PresetFetchInfo(BaseModel):
|
9
11
|
# The actual name of this preset.
|
@@ -18,12 +20,18 @@ class PresetFetchInfo(BaseModel):
|
|
18
20
|
# Inner directory from where to pull the preset.
|
19
21
|
inner_dir: str = ''
|
20
22
|
|
23
|
+
# Tool tag.
|
24
|
+
tool_tag: Optional[str] = None
|
25
|
+
|
21
26
|
def is_remote(self) -> bool:
|
22
27
|
return self.fetch_uri is not None
|
23
28
|
|
24
29
|
def is_local_dir(self) -> bool:
|
25
30
|
return bool(self.inner_dir) and not self.is_remote()
|
26
31
|
|
32
|
+
def is_tool(self) -> bool:
|
33
|
+
return self.tool_tag is not None
|
34
|
+
|
27
35
|
|
28
36
|
def get_inner_dir_from_tool_preset(tool_preset: str) -> str:
|
29
37
|
return f'rbx/resources/presets/{tool_preset}'
|
@@ -78,6 +86,7 @@ def get_preset_fetch_info(uri: Optional[str]) -> Optional[PresetFetchInfo]:
|
|
78
86
|
match = compiled.match(s)
|
79
87
|
if match is None:
|
80
88
|
return None
|
89
|
+
# Treat as a plain local preset name (no implicit tool tag resolution).
|
81
90
|
return PresetFetchInfo(name=s)
|
82
91
|
|
83
92
|
extractors = [
|
rbx_cp-0.16.0/rbx/__version__.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = '0.16.0'
|
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
|
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.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/statement/contest.rbx.tex
RENAMED
File without changes
|
{rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/statement/info.rbx.tex
RENAMED
File without changes
|
{rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/contest/statement/instructions.tex
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/manual_tests/samples/000.in
RENAMED
File without changes
|
{rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/manual_tests/samples/001.in
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/problem/statement/statement.rbx.tex
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/shared/contest_template.rbx.tex
RENAMED
File without changes
|
File without changes
|
{rbx_cp-0.16.0 → rbx_cp-0.16.2}/rbx/resources/presets/default/shared/problem_template.rbx.tex
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|