rbx.cp 0.5.58__tar.gz → 0.5.61__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 (208) hide show
  1. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/PKG-INFO +1 -1
  2. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/pyproject.toml +1 -1
  3. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/checkers.py +13 -7
  4. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/code.py +1 -0
  5. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/environment.py +9 -0
  6. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/main.py +1 -1
  7. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/schema.py +0 -16
  8. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/solutions.py +9 -5
  9. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/tasks.py +3 -2
  10. rbx_cp-0.5.61/rbx/grading/limits.py +26 -0
  11. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/steps.py +3 -1
  12. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/LICENSE +0 -0
  13. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/README.md +0 -0
  14. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/__init__.py +0 -0
  15. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/annotations.py +0 -0
  16. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/autoenum.py +0 -0
  17. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/__init__.py +0 -0
  18. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/builder.py +0 -0
  19. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/cd.py +0 -0
  20. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/cli.py +0 -0
  21. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/compile.py +0 -0
  22. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/conftest.py +0 -0
  23. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/contest/__init__.py +0 -0
  24. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/contest/build_contest_statements.py +0 -0
  25. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/contest/contest_package.py +0 -0
  26. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/contest/contest_utils.py +0 -0
  27. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/contest/main.py +0 -0
  28. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/contest/schema.py +0 -0
  29. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/contest/statements.py +0 -0
  30. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/creation.py +0 -0
  31. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/deferred.py +0 -0
  32. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/download.py +0 -0
  33. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/dump_schemas.py +0 -0
  34. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/extensions.py +0 -0
  35. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/formatting.py +0 -0
  36. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/generators.py +0 -0
  37. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/generators_test.py +0 -0
  38. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/header.py +0 -0
  39. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/lazy_importing_main.py +0 -0
  40. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/lazy_importing_test.py +0 -0
  41. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/main.py +0 -0
  42. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/naming.py +0 -0
  43. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/package.py +0 -0
  44. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/boca/extension.py +0 -0
  45. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/boca/packager.py +0 -0
  46. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/boca/upload.py +0 -0
  47. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/contest_main.py +0 -0
  48. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/moj/packager.py +0 -0
  49. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/packager.py +0 -0
  50. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/polygon/packager.py +0 -0
  51. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/polygon/polygon_api.py +0 -0
  52. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/polygon/test.py +0 -0
  53. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/polygon/upload.py +0 -0
  54. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/packaging/polygon/xml_schema.py +0 -0
  55. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/presets/__init__.py +0 -0
  56. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/presets/fetch.py +0 -0
  57. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/presets/lock_schema.py +0 -0
  58. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/presets/schema.py +0 -0
  59. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/retries.py +0 -0
  60. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/sanitizers/warning_stack.py +0 -0
  61. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/setter_config.py +0 -0
  62. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/solutions_test.py +0 -0
  63. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/state.py +0 -0
  64. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/statements/__init__.py +0 -0
  65. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/statements/build_statements.py +0 -0
  66. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/statements/builders.py +0 -0
  67. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/statements/joiners.py +0 -0
  68. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/statements/latex.py +0 -0
  69. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/statements/latex_jinja.py +0 -0
  70. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/statements/schema.py +0 -0
  71. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/stresses.py +0 -0
  72. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/stressing/__init__.py +0 -0
  73. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/stressing/finder_parser.py +0 -0
  74. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/stressing/generator_parser.py +0 -0
  75. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/testcase_extractors.py +0 -0
  76. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/testcase_utils.py +0 -0
  77. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/testcases/__init__.py +0 -0
  78. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/testcases/main.py +0 -0
  79. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/__init__.py +0 -0
  80. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/captured_log.py +0 -0
  81. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/css/app.tcss +0 -0
  82. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/main.py +0 -0
  83. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/screens/__init__.py +0 -0
  84. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/screens/build.py +0 -0
  85. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/screens/command.py +0 -0
  86. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/screens/run.py +0 -0
  87. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/screens/run_explorer.py +0 -0
  88. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/screens/test_explorer.py +0 -0
  89. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/widgets/file_log.py +0 -0
  90. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/ui/widgets/rich_log_box.py +0 -0
  91. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/unit.py +0 -0
  92. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/validators.py +0 -0
  93. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/box/validators_test.py +0 -0
  94. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/checker.py +0 -0
  95. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/clone.py +0 -0
  96. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/config.py +0 -0
  97. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/conftest.py +0 -0
  98. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/console.py +0 -0
  99. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/create.py +0 -0
  100. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/edit.py +0 -0
  101. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/__init__.py +0 -0
  102. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/caching.py +0 -0
  103. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/conftest.py +0 -0
  104. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/__init__.py +0 -0
  105. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/cacher.py +0 -0
  106. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/digester.py +0 -0
  107. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/sandbox.py +0 -0
  108. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/sandboxes/__init__.py +0 -0
  109. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/sandboxes/isolate.py +0 -0
  110. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/sandboxes/stupid_sandbox.py +0 -0
  111. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/sandboxes/timeit.py +0 -0
  112. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/storage.py +0 -0
  113. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/test.py +0 -0
  114. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/judge/testiso.py +0 -0
  115. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/processing_context.py +0 -0
  116. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/steps_with_caching.py +0 -0
  117. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading/steps_with_caching_run_test.py +0 -0
  118. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/grading_utils.py +0 -0
  119. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/hydration.py +0 -0
  120. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/main.py +0 -0
  121. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/metadata.py +0 -0
  122. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/providers/__init__.py +0 -0
  123. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/providers/codeforces.py +0 -0
  124. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/providers/provider.py +0 -0
  125. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/checkers/boilerplate.cpp +0 -0
  126. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/default_config.json +0 -0
  127. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/default_setter_config.mac.yml +0 -0
  128. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/default_setter_config.yml +0 -0
  129. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/envs/default.rbx.yml +0 -0
  130. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/envs/isolate.rbx.yml +0 -0
  131. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/checker.sh +0 -0
  132. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compare.sh +0 -0
  133. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/c +0 -0
  134. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/cc +0 -0
  135. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/cpp +0 -0
  136. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/java +0 -0
  137. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/kt +0 -0
  138. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/pas +0 -0
  139. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/py2 +0 -0
  140. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/compile/py3 +0 -0
  141. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactive/c +0 -0
  142. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactive/cc +0 -0
  143. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactive/cpp +0 -0
  144. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactive/java +0 -0
  145. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactive/kt +0 -0
  146. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactive/py2 +0 -0
  147. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactive/py3 +0 -0
  148. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/interactor_compile.sh +0 -0
  149. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/bkp +0 -0
  150. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/c +0 -0
  151. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/cc +0 -0
  152. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/cpp +0 -0
  153. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/java +0 -0
  154. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/kt +0 -0
  155. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/py2 +0 -0
  156. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/boca/run/py3 +0 -0
  157. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/c/compile.sh +0 -0
  158. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/c/prep.sh +0 -0
  159. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/c/run.sh +0 -0
  160. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/compare.sh +0 -0
  161. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/cpp/compile.sh +0 -0
  162. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/cpp/prep.sh +0 -0
  163. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/cpp/run.sh +0 -0
  164. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/interactor_prep.sh +0 -0
  165. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/interactor_run.sh +0 -0
  166. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/java/compile.sh +0 -0
  167. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/java/prep.sh +0 -0
  168. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/java/run.sh +0 -0
  169. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/py2/compile.sh +0 -0
  170. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/py2/prep.sh +0 -0
  171. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/py2/run.sh +0 -0
  172. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/py3/compile.sh +0 -0
  173. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/py3/prep.sh +0 -0
  174. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/packagers/moj/scripts/py3/run.sh +0 -0
  175. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/contest/contest.rbx.yml +0 -0
  176. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/contest/statement/contest.rbx.tex +0 -0
  177. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/contest/statement/olymp.sty +0 -0
  178. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/contest/statement/template.rbx.tex +0 -0
  179. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/preset.rbx.yml +0 -0
  180. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/.gitignore +0 -0
  181. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/gen.cpp +0 -0
  182. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/problem.rbx.yml +0 -0
  183. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/random.py +0 -0
  184. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/random.txt +0 -0
  185. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/sols/main.cpp +0 -0
  186. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/sols/slow.cpp +0 -0
  187. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/sols/wa.cpp +0 -0
  188. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/statement/olymp.sty +0 -0
  189. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/statement/projecao.png +0 -0
  190. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/statement/statement.rbx.tex +0 -0
  191. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/statement/template.rbx.tex +0 -0
  192. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/tests/samples/000.in +0 -0
  193. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/tests/samples/001.in +0 -0
  194. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/validator.cpp +0 -0
  195. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/presets/default/problem/wcmp.cpp +0 -0
  196. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/templates/rbx.h +0 -0
  197. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/resources/templates/template.cpp +0 -0
  198. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/run.py +0 -0
  199. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/schema.py +0 -0
  200. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/submit.py +0 -0
  201. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/submitors/__init__.py +0 -0
  202. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/submitors/codeforces.py +0 -0
  203. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/submitors/submitor.py +0 -0
  204. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/test.py +0 -0
  205. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/testcase.py +0 -0
  206. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/testcase_rendering.py +0 -0
  207. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/testing_utils.py +0 -0
  208. {rbx_cp-0.5.58 → rbx_cp-0.5.61}/rbx/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.5.58
3
+ Version: 0.5.61
4
4
  Summary:
5
5
  Author: Roberto Sales
6
6
  Requires-Python: >=3.9,<4.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "rbx.cp"
3
- version = "0.5.58"
3
+ version = "0.5.61"
4
4
  description = ""
5
5
  packages = [
6
6
  {include = "rbx"}
@@ -60,8 +60,6 @@ def _any_failed(logs: List[Optional[RunLog]]) -> bool:
60
60
 
61
61
 
62
62
  def _check_pre_output(run_log: Optional[RunLog]) -> CheckerResult:
63
- pkg = package.find_problem_package_or_die()
64
-
65
63
  is_sanitized = (
66
64
  run_log is not None
67
65
  and run_log.metadata is not None
@@ -71,7 +69,11 @@ def _check_pre_output(run_log: Optional[RunLog]) -> CheckerResult:
71
69
  if run_log is None:
72
70
  return CheckerResult(outcome=Outcome.INTERNAL_ERROR)
73
71
 
74
- timelimit = pkg.timelimit_for_language(run_log.get_run_language())
72
+ timelimit = (
73
+ run_log.metadata.limits.get_expanded_tl()
74
+ if run_log.metadata is not None
75
+ else None
76
+ )
75
77
  is_tl_unbounded = (
76
78
  run_log is not None
77
79
  and run_log.metadata is not None
@@ -81,7 +83,7 @@ def _check_pre_output(run_log: Optional[RunLog]) -> CheckerResult:
81
83
  if (
82
84
  run_log.time is not None
83
85
  and timelimit is not None
84
- and run_log.time * 1000 > timelimit * 2
86
+ and run_log.time * 1000 > timelimit
85
87
  and not is_sanitized
86
88
  and not is_tl_unbounded
87
89
  ):
@@ -104,12 +106,16 @@ def _convert_tle(result: CheckerResult, run_log: Optional[RunLog]) -> CheckerRes
104
106
  if result.outcome == Outcome.TIME_LIMIT_EXCEEDED:
105
107
  # This already is a TLE outcome.
106
108
  return result
107
- pkg = package.find_problem_package_or_die()
108
109
  is_sanitized = (
109
110
  run_log is not None
110
111
  and run_log.metadata is not None
111
112
  and run_log.metadata.is_sanitized
112
113
  )
114
+ timelimit = (
115
+ run_log.metadata.limits.time
116
+ if run_log is not None and run_log.metadata is not None
117
+ else None
118
+ )
113
119
  is_tl_unbounded = (
114
120
  run_log is not None
115
121
  and run_log.metadata is not None
@@ -118,8 +124,8 @@ def _convert_tle(result: CheckerResult, run_log: Optional[RunLog]) -> CheckerRes
118
124
  if (
119
125
  run_log is not None
120
126
  and run_log.time is not None
121
- and run_log.time * 1000
122
- >= pkg.timelimit_for_language(run_log.get_run_language())
127
+ and timelimit is not None
128
+ and run_log.time * 1000 >= timelimit
123
129
  and not is_sanitized
124
130
  and not is_tl_unbounded
125
131
  ):
@@ -357,6 +357,7 @@ def _prepare_run(
357
357
  is_sanitized=sanitized,
358
358
  timeLimit=sandbox_params.timeout,
359
359
  memoryLimit=sandbox_params.address_space,
360
+ limits=execution_options.problemLimits,
360
361
  retryIndex=retry_index,
361
362
  ),
362
363
  )
@@ -11,6 +11,7 @@ from rbx.box.extensions import Extensions, LanguageExtensions
11
11
  from rbx.grading.judge.sandbox import SandboxBase, SandboxParams
12
12
  from rbx.grading.judge.sandboxes.isolate import IsolateSandbox
13
13
  from rbx.grading.judge.sandboxes.stupid_sandbox import StupidSandbox
14
+ from rbx.grading.limits import Limits
14
15
 
15
16
  T = TypeVar('T', bound=BaseModel)
16
17
 
@@ -104,6 +105,9 @@ class ExecutionConfig(BaseModel):
104
105
  # Sandbox configuration to use when executing for this language.
105
106
  sandbox: Optional[EnvironmentSandbox] = None
106
107
 
108
+ # Original limits of the problem.
109
+ problemLimits: Limits = Field(default_factory=Limits)
110
+
107
111
 
108
112
  class EnvironmentLanguage(BaseModel):
109
113
  model_config = ConfigDict(extra='forbid')
@@ -280,6 +284,7 @@ def merge_execution_configs(
280
284
  ) -> ExecutionConfig:
281
285
  merged_cfg = ExecutionConfig()
282
286
  merged_cfg.sandbox = EnvironmentSandbox()
287
+ merged_cfg.problemLimits = Limits()
283
288
  for cfg in execution_configs:
284
289
  if cfg is None:
285
290
  continue
@@ -288,6 +293,10 @@ def merge_execution_configs(
288
293
  merged_cfg.sandbox = _merge_shallow_models(
289
294
  EnvironmentSandbox, merged_cfg.sandbox, cfg.sandbox
290
295
  )
296
+ if cfg.problemLimits is not None:
297
+ merged_cfg.problemLimits = _merge_shallow_models(
298
+ Limits, merged_cfg.problemLimits, cfg.problemLimits
299
+ )
291
300
  return merged_cfg
292
301
 
293
302
 
@@ -107,7 +107,7 @@ async def boca(
107
107
  if upload:
108
108
  from rbx.box.packaging.boca.upload import BocaUploader
109
109
 
110
- uploader = BocaUploader('http://137.184.1.39/boca', 'admin', 'boca')
110
+ uploader = BocaUploader()
111
111
  uploader.login_and_upload(result_path)
112
112
 
113
113
 
@@ -325,22 +325,6 @@ class Stress(BaseModel):
325
325
  )
326
326
 
327
327
 
328
- class Limits(BaseModel):
329
- time: Optional[int] = Field(
330
- default=None, description='Value to override time limit with, in milliseconds.'
331
- )
332
- memory: Optional[int] = Field(
333
- default=None, description='Value to override memory limit with, in MB.'
334
- )
335
- output: Optional[int] = Field(
336
- default=None, description='Value to override output limit with, in KB.'
337
- )
338
-
339
- isDoubleTL: bool = Field(
340
- default=False, description='Whether to use double TL for this language.'
341
- )
342
-
343
-
344
328
  class LimitModifiers(BaseModel):
345
329
  timeMultiplier: Optional[float] = Field(
346
330
  default=None, description='Multiplier for time limit.'
@@ -36,7 +36,6 @@ from rbx.box.generators import (
36
36
  from rbx.box.schema import (
37
37
  ExpectedOutcome,
38
38
  GeneratorCall,
39
- Limits,
40
39
  Solution,
41
40
  TaskType,
42
41
  Testcase,
@@ -53,6 +52,7 @@ from rbx.box.testcase_utils import (
53
52
  parse_interaction,
54
53
  print_interaction,
55
54
  )
55
+ from rbx.grading.limits import Limits
56
56
  from rbx.grading.steps import (
57
57
  Evaluation,
58
58
  Outcome,
@@ -736,10 +736,12 @@ def get_capped_evals_formatted_time(
736
736
  max_time = _get_evals_time_in_ms(evals)
737
737
  has_tle = any(eval.result.outcome == Outcome.TIME_LIMIT_EXCEEDED for eval in evals)
738
738
  timelimits = [
739
- eval.log.metadata.timeLimit
739
+ eval.log.metadata.limits.get_expanded_tl()
740
740
  for eval in evals
741
- if eval.log.metadata is not None and eval.log.metadata.timeLimit is not None
741
+ if eval.log.metadata is not None
742
742
  ]
743
+ timelimits = [tl for tl in timelimits if tl is not None]
744
+
743
745
  tl = None
744
746
  if timelimits:
745
747
  tl = min(timelimits)
@@ -954,10 +956,12 @@ async def _print_timing(
954
956
  # Get solution TL.
955
957
  solution_time = _get_evals_time_in_ms(all_evals)
956
958
  solution_tls = [
957
- eval.log.metadata.timeLimit
959
+ eval.log.metadata.limits.get_expanded_tl()
958
960
  for eval in all_evals
959
- if eval.log.metadata is not None and eval.log.metadata.timeLimit is not None
961
+ if eval.log.metadata is not None
960
962
  ]
963
+ solution_tls = [tl for tl in solution_tls if tl is not None]
964
+
961
965
  solution_tl = 0
962
966
  if solution_tls:
963
967
  solution_tl = min(solution_tls)
@@ -5,8 +5,9 @@ from rbx.box import checkers, package, state
5
5
  from rbx.box.code import CommunicationItem, run_communication, run_item
6
6
  from rbx.box.environment import EnvironmentSandbox, ExecutionConfig, VerificationLevel
7
7
  from rbx.box.retries import Retrier
8
- from rbx.box.schema import Limits, Solution, Testcase
8
+ from rbx.box.schema import Solution, Testcase
9
9
  from rbx.grading.judge.sandbox import SandboxBase
10
+ from rbx.grading.limits import Limits
10
11
  from rbx.grading.steps import (
11
12
  DigestOrDest,
12
13
  DigestOrSource,
@@ -146,7 +147,7 @@ def _get_execution_config(
146
147
  sandbox.wallTimeLimit = sandbox.timeLimit * 2
147
148
  sandbox.memoryLimit = limits.memory
148
149
  sandbox.fileSizeLimit = limits.output
149
- return ExecutionConfig(sandbox=sandbox)
150
+ return ExecutionConfig(sandbox=sandbox, problemLimits=limits)
150
151
 
151
152
 
152
153
  async def _run_communication_solution_on_testcase(
@@ -0,0 +1,26 @@
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, Field
4
+
5
+
6
+ class Limits(BaseModel):
7
+ time: Optional[int] = Field(
8
+ default=None, description='Value to override time limit with, in milliseconds.'
9
+ )
10
+ memory: Optional[int] = Field(
11
+ default=None, description='Value to override memory limit with, in MB.'
12
+ )
13
+ output: Optional[int] = Field(
14
+ default=None, description='Value to override output limit with, in KB.'
15
+ )
16
+
17
+ isDoubleTL: bool = Field(
18
+ default=False, description='Whether to use double TL for this language.'
19
+ )
20
+
21
+ def get_expanded_tl(self) -> Optional[int]:
22
+ if self.time is None:
23
+ return None
24
+ if self.isDoubleTL:
25
+ return self.time * 2
26
+ return self.time
@@ -15,7 +15,7 @@ from enum import Enum
15
15
  from typing import IO, Any, Dict, Iterable, List, Optional, Tuple, Union
16
16
 
17
17
  import typer
18
- from pydantic import BaseModel
18
+ from pydantic import BaseModel, Field
19
19
  from rich.text import Text
20
20
 
21
21
  from rbx import utils
@@ -24,6 +24,7 @@ from rbx.console import console
24
24
  from rbx.grading import processing_context
25
25
  from rbx.grading.judge.sandbox import SandboxBase, SandboxParams
26
26
  from rbx.grading.judge.storage import Storage, copyfileobj
27
+ from rbx.grading.limits import Limits
27
28
 
28
29
  MAX_STDOUT_LEN = 1024 * 1024 * 128 # 128 MB
29
30
 
@@ -188,6 +189,7 @@ class TestcaseIO(BaseModel):
188
189
  class RunLogMetadata(BaseModel):
189
190
  language: Optional[str] = None
190
191
  is_sanitized: bool = False
192
+ limits: Limits = Field(default_factory=Limits)
191
193
  timeLimit: Optional[int] = None
192
194
  memoryLimit: Optional[int] = None
193
195
  retryIndex: Optional[int] = None
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes