rbx.cp 0.5.47__tar.gz → 0.5.48__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 (194) hide show
  1. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/PKG-INFO +1 -1
  2. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/pyproject.toml +1 -1
  3. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/environment.py +1 -1
  4. rbx_cp-0.5.48/rbx/box/naming.py +22 -0
  5. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/boca/extension.py +1 -0
  6. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/boca/packager.py +10 -4
  7. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/moj/packager.py +2 -12
  8. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/packager.py +8 -1
  9. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/statements/build_statements.py +2 -1
  10. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/steps.py +1 -1
  11. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/LICENSE +0 -0
  12. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/README.md +0 -0
  13. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/__init__.py +0 -0
  14. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/annotations.py +0 -0
  15. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/autoenum.py +0 -0
  16. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/__init__.py +0 -0
  17. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/builder.py +0 -0
  18. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/cd.py +0 -0
  19. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/checkers.py +0 -0
  20. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/cli.py +0 -0
  21. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/code.py +0 -0
  22. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/compile.py +0 -0
  23. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/conftest.py +0 -0
  24. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/contest/__init__.py +0 -0
  25. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/contest/build_contest_statements.py +0 -0
  26. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/contest/contest_package.py +0 -0
  27. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/contest/contest_utils.py +0 -0
  28. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/contest/main.py +0 -0
  29. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/contest/schema.py +0 -0
  30. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/contest/statements.py +0 -0
  31. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/creation.py +0 -0
  32. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/deferred.py +0 -0
  33. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/download.py +0 -0
  34. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/extensions.py +0 -0
  35. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/formatting.py +0 -0
  36. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/generators.py +0 -0
  37. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/generators_test.py +0 -0
  38. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/lazy_importing_main.py +0 -0
  39. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/lazy_importing_test.py +0 -0
  40. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/main.py +0 -0
  41. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/package.py +0 -0
  42. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/contest_main.py +0 -0
  43. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/main.py +0 -0
  44. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/polygon/packager.py +0 -0
  45. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/polygon/test.py +0 -0
  46. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/packaging/polygon/xml_schema.py +0 -0
  47. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/presets/__init__.py +0 -0
  48. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/presets/fetch.py +0 -0
  49. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/presets/lock_schema.py +0 -0
  50. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/presets/schema.py +0 -0
  51. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/retries.py +0 -0
  52. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/sanitizers/warning_stack.py +0 -0
  53. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/schema.py +0 -0
  54. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/setter_config.py +0 -0
  55. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/solutions.py +0 -0
  56. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/solutions_test.py +0 -0
  57. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/state.py +0 -0
  58. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/statements/__init__.py +0 -0
  59. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/statements/builders.py +0 -0
  60. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/statements/joiners.py +0 -0
  61. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/statements/latex.py +0 -0
  62. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/statements/latex_jinja.py +0 -0
  63. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/statements/schema.py +0 -0
  64. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/stresses.py +0 -0
  65. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/stressing/__init__.py +0 -0
  66. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/stressing/finder_parser.py +0 -0
  67. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/stressing/generator_parser.py +0 -0
  68. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/tasks.py +0 -0
  69. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/testcase_extractors.py +0 -0
  70. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/testcase_utils.py +0 -0
  71. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/testcases/__init__.py +0 -0
  72. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/testcases/main.py +0 -0
  73. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/ui/__init__.py +0 -0
  74. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/ui/captured_log.py +0 -0
  75. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/ui/css/app.tcss +0 -0
  76. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/ui/main.py +0 -0
  77. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/ui/run.py +0 -0
  78. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/unit.py +0 -0
  79. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/validators.py +0 -0
  80. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/box/validators_test.py +0 -0
  81. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/checker.py +0 -0
  82. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/clone.py +0 -0
  83. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/config.py +0 -0
  84. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/conftest.py +0 -0
  85. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/console.py +0 -0
  86. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/create.py +0 -0
  87. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/edit.py +0 -0
  88. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/__init__.py +0 -0
  89. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/caching.py +0 -0
  90. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/conftest.py +0 -0
  91. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/__init__.py +0 -0
  92. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/cacher.py +0 -0
  93. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/digester.py +0 -0
  94. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/sandbox.py +0 -0
  95. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/sandboxes/__init__.py +0 -0
  96. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/sandboxes/isolate.py +0 -0
  97. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/sandboxes/stupid_sandbox.py +0 -0
  98. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/sandboxes/timeit.py +0 -0
  99. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/storage.py +0 -0
  100. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/test.py +0 -0
  101. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/judge/testiso.py +0 -0
  102. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/processing_context.py +0 -0
  103. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/steps_with_caching.py +0 -0
  104. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading/steps_with_caching_run_test.py +0 -0
  105. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/grading_utils.py +0 -0
  106. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/hydration.py +0 -0
  107. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/main.py +0 -0
  108. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/metadata.py +0 -0
  109. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/providers/__init__.py +0 -0
  110. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/providers/codeforces.py +0 -0
  111. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/providers/provider.py +0 -0
  112. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/checkers/boilerplate.cpp +0 -0
  113. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/default_config.json +0 -0
  114. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/default_setter_config.mac.yml +0 -0
  115. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/default_setter_config.yml +0 -0
  116. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/envs/default.rbx.yml +0 -0
  117. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/envs/isolate.rbx.yml +0 -0
  118. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/checker.sh +0 -0
  119. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compare.sh +0 -0
  120. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/c +0 -0
  121. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/cc +0 -0
  122. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/cpp +0 -0
  123. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/java +0 -0
  124. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/kt +0 -0
  125. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/pas +0 -0
  126. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/py2 +0 -0
  127. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/compile/py3 +0 -0
  128. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactive/c +0 -0
  129. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactive/cc +0 -0
  130. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactive/cpp +0 -0
  131. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactive/java +0 -0
  132. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactive/kt +0 -0
  133. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactive/py2 +0 -0
  134. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactive/py3 +0 -0
  135. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/interactor_compile.sh +0 -0
  136. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/bkp +0 -0
  137. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/c +0 -0
  138. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/cc +0 -0
  139. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/cpp +0 -0
  140. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/java +0 -0
  141. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/kt +0 -0
  142. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/py2 +0 -0
  143. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/boca/run/py3 +0 -0
  144. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/c/compile.sh +0 -0
  145. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/c/prep.sh +0 -0
  146. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/c/run.sh +0 -0
  147. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/compare.sh +0 -0
  148. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/cpp/compile.sh +0 -0
  149. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/cpp/prep.sh +0 -0
  150. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/cpp/run.sh +0 -0
  151. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/interactor_prep.sh +0 -0
  152. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/interactor_run.sh +0 -0
  153. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/java/compile.sh +0 -0
  154. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/java/prep.sh +0 -0
  155. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/java/run.sh +0 -0
  156. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/py2/compile.sh +0 -0
  157. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/py2/prep.sh +0 -0
  158. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/py2/run.sh +0 -0
  159. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/py3/compile.sh +0 -0
  160. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/py3/prep.sh +0 -0
  161. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/packagers/moj/scripts/py3/run.sh +0 -0
  162. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/contest/contest.rbx.yml +0 -0
  163. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/contest/statement/contest.rbx.tex +0 -0
  164. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/contest/statement/olymp.sty +0 -0
  165. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/contest/statement/template.rbx.tex +0 -0
  166. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/preset.rbx.yml +0 -0
  167. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/.gitignore +0 -0
  168. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/gen.cpp +0 -0
  169. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/problem.rbx.yml +0 -0
  170. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/random.py +0 -0
  171. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/random.txt +0 -0
  172. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/sols/main.cpp +0 -0
  173. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/sols/slow.cpp +0 -0
  174. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/sols/wa.cpp +0 -0
  175. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/statement/olymp.sty +0 -0
  176. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/statement/projecao.png +0 -0
  177. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/statement/statement.rbx.tex +0 -0
  178. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/statement/template.rbx.tex +0 -0
  179. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/tests/samples/000.in +0 -0
  180. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/tests/samples/001.in +0 -0
  181. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/validator.cpp +0 -0
  182. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/presets/default/problem/wcmp.cpp +0 -0
  183. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/resources/templates/template.cpp +0 -0
  184. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/run.py +0 -0
  185. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/schema.py +0 -0
  186. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/submit.py +0 -0
  187. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/submitors/__init__.py +0 -0
  188. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/submitors/codeforces.py +0 -0
  189. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/submitors/submitor.py +0 -0
  190. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/test.py +0 -0
  191. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/testcase.py +0 -0
  192. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/testcase_rendering.py +0 -0
  193. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/testing_utils.py +0 -0
  194. {rbx_cp-0.5.47 → rbx_cp-0.5.48}/rbx/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.5.47
3
+ Version: 0.5.48
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.47"
3
+ version = "0.5.48"
4
4
  description = ""
5
5
  packages = [
6
6
  {include = "rbx"}
@@ -343,7 +343,7 @@ def get_extension(name: str, _: Type[T]) -> Optional[T]:
343
343
  pkg = get_environment()
344
344
  if pkg.extensions is None:
345
345
  return None
346
- if hasattr(pkg.extensions, name):
346
+ if not hasattr(pkg.extensions, name):
347
347
  return None
348
348
  return getattr(pkg.extensions, name)
349
349
 
@@ -0,0 +1,22 @@
1
+ from typing import Optional
2
+
3
+ from rbx.box import package
4
+ from rbx.box.contest import contest_package
5
+
6
+
7
+ def get_problem_shortname() -> Optional[str]:
8
+ contest = contest_package.find_contest_package()
9
+ if contest is None:
10
+ return None
11
+ problem_path = package.find_problem()
12
+ contest_path = contest_package.find_contest()
13
+
14
+ for problem in contest.problems:
15
+ if problem.path is None:
16
+ continue
17
+ if (problem_path / 'problem.rbx.yml').samefile(
18
+ contest_path / problem.path / 'problem.rbx.yml'
19
+ ):
20
+ return problem.short_name
21
+
22
+ return None
@@ -11,6 +11,7 @@ class BocaExtension(BaseModel):
11
11
  languages: typing.List[BocaLanguage] = list(typing.get_args(BocaLanguage))
12
12
  flags: typing.Dict[BocaLanguage, str] = {}
13
13
  maximumTimeError: float = _MAX_REP_ERROR
14
+ preferContestLetter: bool = False
14
15
 
15
16
  def flags_with_defaults(self) -> typing.Dict[BocaLanguage, str]:
16
17
  res: typing.Dict[BocaLanguage, str] = {
@@ -6,7 +6,7 @@ from typing import List
6
6
  import typer
7
7
 
8
8
  from rbx import console
9
- from rbx.box import package
9
+ from rbx.box import naming, package
10
10
  from rbx.box.environment import get_extension_or_default
11
11
  from rbx.box.packaging.boca.extension import BocaExtension, BocaLanguage
12
12
  from rbx.box.packaging.packager import BasePackager, BuiltStatement
@@ -52,14 +52,20 @@ class BocaPackager(BasePackager):
52
52
  raise typer.Exit(1)
53
53
 
54
54
  def _get_problem_name(self) -> str:
55
- pkg = package.find_problem_package_or_die()
56
55
  # BOCA forces Java class names to be the name of the problem.
57
- return pkg.name.replace('-', '_')
56
+ return self.package_basename().replace('-', '_')
57
+
58
+ def _get_problem_basename(self) -> str:
59
+ extension = get_extension_or_default('boca', BocaExtension)
60
+ shortname = naming.get_problem_shortname()
61
+ if extension.preferContestLetter and shortname is not None:
62
+ return shortname
63
+ return self._get_problem_name()
58
64
 
59
65
  def _get_problem_info(self) -> str:
60
66
  statement = self._get_main_statement()
61
67
  return (
62
- f'basename={self._get_problem_name()}\n'
68
+ f'basename={self._get_problem_basename()}\n'
63
69
  f'fullname={statement.title}\n'
64
70
  f'descfile={self._get_problem_name()}.pdf\n'
65
71
  )
@@ -24,14 +24,6 @@ class MojPackager(BocaPackager):
24
24
  def task_types(cls) -> List[TaskType]:
25
25
  return [TaskType.COMMUNICATION, TaskType.BATCH]
26
26
 
27
- def _get_problem_info(self) -> str:
28
- statement = self._get_main_statement()
29
- return (
30
- f'basename={self._get_problem_name()}\n'
31
- f'fullname={statement.title}\n'
32
- f'descfile={self._get_problem_name()}.pdf\n'
33
- )
34
-
35
27
  def _get_tl(self) -> str:
36
28
  extension = get_extension_or_default('boca', BocaExtension)
37
29
 
@@ -237,8 +229,6 @@ class MojPackager(BocaPackager):
237
229
  (outputs_path / f'{i + 1:03d}').touch()
238
230
 
239
231
  # Zip all.
240
- shutil.make_archive(
241
- str(build_path / self._get_problem_name()), 'zip', into_path
242
- )
232
+ shutil.make_archive(str(build_path / self.package_basename()), 'zip', into_path)
243
233
 
244
- return (build_path / self._get_problem_name()).with_suffix('.zip')
234
+ return (build_path / self.package_basename()).with_suffix('.zip')
@@ -3,7 +3,7 @@ import pathlib
3
3
  from abc import ABC, abstractmethod
4
4
  from typing import List, Tuple
5
5
 
6
- from rbx.box import package
6
+ from rbx.box import naming, package
7
7
  from rbx.box.contest import contest_package
8
8
  from rbx.box.contest.schema import ContestProblem, ContestStatement
9
9
  from rbx.box.generators import get_all_built_testcases
@@ -50,6 +50,13 @@ class BasePackager(ABC):
50
50
  res.add(statement.language)
51
51
  return list(res)
52
52
 
53
+ def package_basename(self):
54
+ pkg = package.find_problem_package_or_die()
55
+ shortname = naming.get_problem_shortname()
56
+ if shortname is not None:
57
+ return f'{shortname}-{pkg.name}'
58
+ return pkg.name
59
+
53
60
  def statement_types(self) -> List[StatementType]:
54
61
  return [StatementType.PDF]
55
62
 
@@ -7,7 +7,7 @@ import syncer
7
7
  import typer
8
8
 
9
9
  from rbx import annotations, console
10
- from rbx.box import environment, package
10
+ from rbx.box import environment, naming, package
11
11
  from rbx.box.schema import Package
12
12
  from rbx.box.statements.builders import (
13
13
  BUILDER_LIST,
@@ -291,6 +291,7 @@ def build_statement(
291
291
  output_type=output_type,
292
292
  use_samples=use_samples,
293
293
  is_editorial=is_editorial,
294
+ short_name=naming.get_problem_shortname(),
294
295
  )
295
296
  statement_path = (
296
297
  package.get_build_path()
@@ -332,7 +332,7 @@ def _expand_part(part: str, sandbox: SandboxBase) -> List[str]:
332
332
 
333
333
  def _split_and_expand(command: str, sandbox: SandboxBase) -> List[str]:
334
334
  res = []
335
- parts = shlex.split(command.format(memory=sandbox.params.address_space))
335
+ parts = shlex.split(command.format(memory=sandbox.params.address_space or 2048))
336
336
  for part in parts:
337
337
  res.extend(_expand_part(part, sandbox))
338
338
  return res
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes