rbx.cp 0.18.2__tar.gz → 0.18.3__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.
Files changed (230) hide show
  1. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/PKG-INFO +1 -1
  2. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/pyproject.toml +1 -1
  3. rbx_cp-0.18.3/rbx/__version__.py +1 -0
  4. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/environment.py +10 -3
  5. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/package.py +1 -1
  6. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/boca/boca_language_utils.py +7 -1
  7. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testing/testing_preset.py +1 -0
  8. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/boca/scraper.py +54 -0
  9. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/env.rbx.yml +6 -2
  10. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/preset.rbx.yml +1 -1
  11. rbx_cp-0.18.2/rbx/__version__.py +0 -1
  12. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/LICENSE +0 -0
  13. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/README.md +0 -0
  14. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/__init__.py +0 -0
  15. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/annotations.py +0 -0
  16. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/autoenum.py +0 -0
  17. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/__init__.py +0 -0
  18. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/builder.py +0 -0
  19. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/cd.py +0 -0
  20. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/checkers.py +0 -0
  21. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/cli.py +0 -0
  22. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/code.py +0 -0
  23. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/compile.py +0 -0
  24. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/contest/__init__.py +0 -0
  25. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/contest/build_contest_statements.py +0 -0
  26. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/contest/contest_package.py +0 -0
  27. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/contest/contest_utils.py +0 -0
  28. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/contest/main.py +0 -0
  29. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/contest/schema.py +0 -0
  30. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/contest/statements.py +0 -0
  31. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/creation.py +0 -0
  32. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/deferred.py +0 -0
  33. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/download.py +0 -0
  34. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/dump_schemas.py +0 -0
  35. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/extensions.py +0 -0
  36. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/fields.py +0 -0
  37. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/formatting.py +0 -0
  38. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/generators.py +0 -0
  39. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/git_utils.py +0 -0
  40. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/global_package.py +0 -0
  41. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/header.py +0 -0
  42. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/lang.py +0 -0
  43. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/lazy_importing_main.py +0 -0
  44. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/limits_info.py +0 -0
  45. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/linting.py +0 -0
  46. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/main.py +0 -0
  47. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/naming.py +0 -0
  48. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/__init__.py +0 -0
  49. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/boca/__init__.py +0 -0
  50. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/boca/boca_outcome_utils.py +0 -0
  51. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/boca/extension.py +0 -0
  52. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/boca/packager.py +0 -0
  53. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/contest_main.py +0 -0
  54. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/importer.py +0 -0
  55. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/main.py +0 -0
  56. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/moj/packager.py +0 -0
  57. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/packager.py +0 -0
  58. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/pkg/packager.py +0 -0
  59. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/polygon/importer.py +0 -0
  60. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/polygon/packager.py +0 -0
  61. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/polygon/polygon_api.py +0 -0
  62. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/polygon/test.py +0 -0
  63. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/polygon/upload.py +0 -0
  64. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/packaging/polygon/xml_schema.py +0 -0
  65. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/presets/__init__.py +0 -0
  66. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/presets/fetch.py +0 -0
  67. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/presets/lock_schema.py +0 -0
  68. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/presets/schema.py +0 -0
  69. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/remote.py +0 -0
  70. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/retries.py +0 -0
  71. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/sanitizers/issue_stack.py +0 -0
  72. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/sanitizers/warning_stack.py +0 -0
  73. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/schema.py +0 -0
  74. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/setter_config.py +0 -0
  75. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/solutions.py +0 -0
  76. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/state.py +0 -0
  77. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/__init__.py +0 -0
  78. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/build_statements.py +0 -0
  79. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/builders.py +0 -0
  80. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/expander.py +0 -0
  81. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/joiners.py +0 -0
  82. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/latex.py +0 -0
  83. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/latex_jinja.py +0 -0
  84. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/statements/schema.py +0 -0
  85. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/stats.py +0 -0
  86. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/stresses.py +0 -0
  87. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/stressing/__init__.py +0 -0
  88. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/stressing/finder_parser.py +0 -0
  89. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/stressing/generator_parser.py +0 -0
  90. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tasks.py +0 -0
  91. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testcase_extractors.py +0 -0
  92. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testcase_utils.py +0 -0
  93. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testcases/__init__.py +0 -0
  94. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testcases/main.py +0 -0
  95. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testing/__init__.py +0 -0
  96. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testing/testing_package.py +0 -0
  97. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/testing/testing_shared.py +0 -0
  98. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/timing.py +0 -0
  99. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/__init__.py +0 -0
  100. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/boca/__init__.py +0 -0
  101. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/boca/debug_utils.py +0 -0
  102. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/boca/main.py +0 -0
  103. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/boca/manual_scrape.py +0 -0
  104. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/boca/scrape.py +0 -0
  105. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/converter.py +0 -0
  106. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/tooling/main.py +0 -0
  107. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/__init__.py +0 -0
  108. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/captured_log.py +0 -0
  109. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/css/app.tcss +0 -0
  110. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/main.py +0 -0
  111. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/__init__.py +0 -0
  112. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/build.py +0 -0
  113. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/command.py +0 -0
  114. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/differ.py +0 -0
  115. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/error.py +0 -0
  116. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/rich_log_modal.py +0 -0
  117. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/run.py +0 -0
  118. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/run_explorer.py +0 -0
  119. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/run_test_explorer.py +0 -0
  120. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/selector.py +0 -0
  121. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/screens/test_explorer.py +0 -0
  122. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/utils/__init__.py +0 -0
  123. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/utils/run_ui.py +0 -0
  124. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/widgets/__init__.py +0 -0
  125. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/widgets/diff_box.py +0 -0
  126. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/widgets/file_log.py +0 -0
  127. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/widgets/interaction_box.py +0 -0
  128. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/widgets/rich_log_box.py +0 -0
  129. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/widgets/test_output_box.py +0 -0
  130. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/ui/widgets/two_sided_test_output_box.py +0 -0
  131. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/unit.py +0 -0
  132. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/box/validators.py +0 -0
  133. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/config.py +0 -0
  134. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/console.py +0 -0
  135. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/__init__.py +0 -0
  136. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/caching.py +0 -0
  137. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/debug_context.py +0 -0
  138. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/grading_context.py +0 -0
  139. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/__init__.py +0 -0
  140. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/cacher.py +0 -0
  141. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/digester.py +0 -0
  142. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/program.py +0 -0
  143. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/sandbox.py +0 -0
  144. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/sandboxes/__init__.py +0 -0
  145. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/sandboxes/stupid_sandbox.py +0 -0
  146. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/sandboxes/tee.py +0 -0
  147. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/judge/storage.py +0 -0
  148. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/limits.py +0 -0
  149. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/profiling.py +0 -0
  150. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/steps.py +0 -0
  151. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/grading/steps_with_caching.py +0 -0
  152. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/checkers/boilerplate.cpp +0 -0
  153. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/checkers/noop.cpp +0 -0
  154. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/default_config.json +0 -0
  155. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/default_setter_config.mac.yml +0 -0
  156. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/default_setter_config.yml +0 -0
  157. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/envs/default.rbx.yml +0 -0
  158. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/checker.sh +0 -0
  159. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compare.sh +0 -0
  160. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compile/c +0 -0
  161. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compile/cc +0 -0
  162. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compile/cpp +0 -0
  163. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compile/java +0 -0
  164. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compile/kt +0 -0
  165. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compile/py2 +0 -0
  166. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/compile/py3 +0 -0
  167. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactive/c +0 -0
  168. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactive/cc +0 -0
  169. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactive/cpp +0 -0
  170. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactive/java +0 -0
  171. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactive/kt +0 -0
  172. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactive/py2 +0 -0
  173. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactive/py3 +0 -0
  174. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactor_compile.sh +0 -0
  175. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/interactor_run.sh +0 -0
  176. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/bkp +0 -0
  177. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/c +0 -0
  178. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/cc +0 -0
  179. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/cpp +0 -0
  180. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/java +0 -0
  181. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/kt +0 -0
  182. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/py2 +0 -0
  183. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/run/py3 +0 -0
  184. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/safeexec.c +0 -0
  185. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/boca/safeexec_compile.sh +0 -0
  186. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/c/compile.sh +0 -0
  187. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/c/prep.sh +0 -0
  188. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/c/run.sh +0 -0
  189. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/compare.sh +0 -0
  190. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/cpp/compile.sh +0 -0
  191. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/cpp/prep.sh +0 -0
  192. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/cpp/run.sh +0 -0
  193. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/interactor_prep.sh +0 -0
  194. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/interactor_run.sh +0 -0
  195. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/java/compile.sh +0 -0
  196. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/java/prep.sh +0 -0
  197. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/java/run.sh +0 -0
  198. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/py2/compile.sh +0 -0
  199. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/py2/prep.sh +0 -0
  200. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/py2/run.sh +0 -0
  201. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/py3/compile.sh +0 -0
  202. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/py3/prep.sh +0 -0
  203. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/packagers/moj/scripts/py3/run.sh +0 -0
  204. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/contest/.gitignore +0 -0
  205. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/contest/contest.rbx.yml +0 -0
  206. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/contest/statement/contest.rbx.tex +0 -0
  207. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/contest/statement/info.rbx.tex +0 -0
  208. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/contest/statement/instructions.tex +0 -0
  209. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/contest/statement/logo.png +0 -0
  210. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/.gitignore +0 -0
  211. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/gens/gen.cpp +0 -0
  212. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/manual_tests/samples/000.in +0 -0
  213. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/manual_tests/samples/001.in +0 -0
  214. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/problem.rbx.yml +0 -0
  215. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/rbx.h +0 -0
  216. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/sols/main.cpp +0 -0
  217. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/sols/wa-overflow.cpp +0 -0
  218. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/statement/statement.rbx.tex +0 -0
  219. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/testlib.h +0 -0
  220. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/testplan/random.py +0 -0
  221. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/testplan/random.txt +0 -0
  222. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/validator.cpp +0 -0
  223. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/problem/wcmp.cpp +0 -0
  224. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/shared/contest_template.rbx.tex +0 -0
  225. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/shared/icpc.sty +0 -0
  226. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/presets/default/shared/problem_template.rbx.tex +0 -0
  227. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/templates/rbx.h +0 -0
  228. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/resources/templates/template.cpp +0 -0
  229. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/testing_utils.py +0 -0
  230. {rbx_cp-0.18.2 → rbx_cp-0.18.3}/rbx/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.18.2
3
+ Version: 0.18.3
4
4
  Summary:
5
5
  Author: Roberto Sales
6
6
  Requires-Python: >=3.9.1,<4.0.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "rbx.cp"
3
- version = "0.18.2"
3
+ version = "0.18.3"
4
4
  description = ""
5
5
  packages = [
6
6
  {include = "rbx"}
@@ -0,0 +1 @@
1
+ __version__ = '0.18.3'
@@ -294,11 +294,18 @@ def get_environment(env: Optional[str] = None) -> Environment:
294
294
 
295
295
 
296
296
  @functools.cache
297
- def get_language(name: str) -> EnvironmentLanguage:
297
+ def get_language_or_nil(name: str) -> Optional[EnvironmentLanguage]:
298
298
  for lang in get_environment().languages:
299
299
  if lang.name == name:
300
300
  return lang
301
- console.console.print(f'Language [item]{name}[/item] not found.', style='error')
301
+ return None
302
+
303
+
304
+ def get_language(name: str) -> EnvironmentLanguage:
305
+ lang = get_language_or_nil(name)
306
+ if lang is not None:
307
+ return lang
308
+ console.console.print(f'[error]Language [item]{name}[/item] not found.[/error]')
302
309
  raise typer.Exit()
303
310
 
304
311
 
@@ -315,7 +322,7 @@ def get_language_by_extension(extension: str) -> EnvironmentLanguage:
315
322
  if lang is not None:
316
323
  return lang
317
324
  console.console.print(
318
- f'Language with extension [item]{extension}[/item] not found.', style='error'
325
+ f'[error]Language with extension [item]{extension}[/item] not found.[/error]'
319
326
  )
320
327
  raise typer.Exit()
321
328
 
@@ -356,7 +356,7 @@ def get_solutions(root: pathlib.Path = pathlib.Path()) -> List[Solution]:
356
356
  relative_file = file.relative_to(root)
357
357
  if (
358
358
  entry.language is not None
359
- or get_language_by_extension(relative_file.suffix) is not None
359
+ or get_language_by_extension(relative_file.suffix[1:]) is not None
360
360
  ):
361
361
  add_solution(
362
362
  Solution.model_copy(
@@ -5,12 +5,18 @@ from rbx.box.packaging.boca.extension import BocaLanguage, BocaLanguageExtension
5
5
 
6
6
 
7
7
  def get_rbx_language_from_boca_language(boca_language: BocaLanguage) -> str:
8
+ # First by BOCA language name.
8
9
  for language in get_environment().languages:
9
10
  language_extension = language.get_extension_or_default(
10
- language.name, BocaLanguageExtension
11
+ 'boca', BocaLanguageExtension
11
12
  )
12
13
  if language_extension.bocaLanguage == boca_language:
13
14
  return language.name
15
+ # Then by rbx language extension.
16
+ for language in get_environment().languages:
17
+ if language.extension == boca_language:
18
+ return language.name
19
+ # Then by rbx language name.
14
20
  return boca_language
15
21
 
16
22
 
@@ -9,6 +9,7 @@ class TestingPreset(TestingShared):
9
9
  def __init__(self, root: PathOrStr):
10
10
  super().__init__(root)
11
11
  self._yml = None
12
+ self.initialize()
12
13
 
13
14
  def initialize(self):
14
15
  if not self.yml_path.exists():
@@ -16,6 +16,13 @@ from throttlex import Throttler
16
16
 
17
17
  from rbx import console, utils
18
18
  from rbx.box import naming
19
+ from rbx.box.environment import (
20
+ get_environment,
21
+ get_language_or_nil,
22
+ )
23
+ from rbx.box.packaging.boca.boca_language_utils import (
24
+ get_rbx_language_from_boca_language,
25
+ )
19
26
  from rbx.box.tooling.boca.debug_utils import pretty_print_request_data
20
27
  from rbx.grading.steps import Outcome
21
28
 
@@ -104,6 +111,24 @@ class BocaDetailedRun(BocaRun):
104
111
  autojudge_answer: str
105
112
 
106
113
 
114
+ def get_boca_languages() -> List[BocaLanguage]:
115
+ env = get_environment()
116
+ res = []
117
+ for bocaLanguage in env.extensions.boca.languages:
118
+ rbxLanguage = get_rbx_language_from_boca_language(bocaLanguage)
119
+ rbxLanguage = get_language_or_nil(rbxLanguage)
120
+ if rbxLanguage is None:
121
+ continue
122
+ res.append(
123
+ BocaLanguage(
124
+ index=len(res) + 1,
125
+ name=rbxLanguage.readableName,
126
+ extension=bocaLanguage,
127
+ )
128
+ )
129
+ return res
130
+
131
+
107
132
  class BocaScraper:
108
133
  def __init__(
109
134
  self,
@@ -778,6 +803,35 @@ class BocaScraper:
778
803
  self.open(req)
779
804
  self.log('Main site configured successfully')
780
805
 
806
+ def configure_languages(self, languages: List[BocaLanguage]):
807
+ self.open(
808
+ f'{self.base_url}/admin/language.php',
809
+ error_msg='Error while configuring languages in BOCA',
810
+ )
811
+ try:
812
+ self.br.select_form(name='form1')
813
+ except mechanize.FormNotFoundError:
814
+ self.error(
815
+ 'Languages configuration form not found in BOCA website. This might happen when the login failed.'
816
+ )
817
+
818
+ reqs = []
819
+ for language in languages:
820
+ form = typing.cast(mechanize.HTMLForm, self.br.form)
821
+ form.set_all_readonly(False)
822
+ form['confirmation'] = 'confirm'
823
+
824
+ form['langnumber'] = f'{language.index}'
825
+ form['langname'] = language.name
826
+ form['langextension'] = language.extension
827
+
828
+ reqs.append(self.br.click(name='Submit3', type='submit'))
829
+
830
+ for req in reqs:
831
+ pretty_print_request_data(req)
832
+ self.open(req)
833
+ self.log('Languages configured successfully')
834
+
781
835
  def create_judge_account(self, password: str = 'boca'):
782
836
  _, html = self.open(
783
837
  f'{self.base_url}/admin/user.php',
@@ -22,6 +22,9 @@ languages:
22
22
  command: "./{executable}"
23
23
  fileMapping:
24
24
  compilable: "compilable.cpp"
25
+ extensions:
26
+ boca:
27
+ bocaLanguage: "cc"
25
28
  - name: "c"
26
29
  readableName: "C"
27
30
  extension: "c"
@@ -55,7 +58,7 @@ languages:
55
58
  fileMapping:
56
59
  compilable: "Main.java"
57
60
  executable: "Main.jar"
58
- - name: "kotlin"
61
+ - name: "kt"
59
62
  readableName: "Kotlin"
60
63
  extension: "kt"
61
64
  compilation:
@@ -70,8 +73,9 @@ languages:
70
73
  executable: "Main.jar"
71
74
  extensions:
72
75
  boca:
73
- languages: ["c", "cpp", "java", "py3", "kt"]
76
+ languages: ["c", "cc", "cpp", "java", "py3", "kt"]
74
77
  flags:
75
78
  c: "-O2 -lm -static"
79
+ cc: "-std=c++20 -O2 -lm -static"
76
80
  cpp: "-std=c++20 -O2 -lm -static"
77
81
  preferContestLetter: true
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  # yaml-language-server: $schema=https://rsalesc.github.io/rbx/schemas/Preset.json
3
3
  name: "default"
4
- min_version: "0.18.2"
4
+ min_version: "0.18.3"
5
5
  uri: "rsalesc/rbx/rbx/resources/presets/default"
6
6
  problem: "problem"
7
7
  contest: "contest"
@@ -1 +0,0 @@
1
- __version__ = '0.18.2'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes