rbx.cp 0.17.2__tar.gz → 0.17.4__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.17.2 → rbx_cp-0.17.4}/PKG-INFO +1 -1
  2. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/pyproject.toml +1 -1
  3. rbx_cp-0.17.4/rbx/__version__.py +1 -0
  4. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/cli.py +8 -0
  5. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/package.py +1 -1
  6. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/packager.py +1 -0
  7. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/polygon/xml_schema.py +15 -11
  8. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/stresses.py +4 -0
  9. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/stressing/generator_parser.py +1 -1
  10. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/unit.py +2 -2
  11. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/sandbox.py +1 -1
  12. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/storage.py +1 -1
  13. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/preset.rbx.yml +1 -1
  14. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/utils.py +13 -0
  15. rbx_cp-0.17.2/rbx/__version__.py +0 -1
  16. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/LICENSE +0 -0
  17. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/README.md +0 -0
  18. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/__init__.py +0 -0
  19. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/annotations.py +0 -0
  20. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/autoenum.py +0 -0
  21. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/__init__.py +0 -0
  22. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/builder.py +0 -0
  23. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/cd.py +0 -0
  24. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/checkers.py +0 -0
  25. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/code.py +0 -0
  26. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/compile.py +0 -0
  27. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/contest/__init__.py +0 -0
  28. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/contest/build_contest_statements.py +0 -0
  29. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/contest/contest_package.py +0 -0
  30. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/contest/contest_utils.py +0 -0
  31. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/contest/main.py +0 -0
  32. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/contest/schema.py +0 -0
  33. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/contest/statements.py +0 -0
  34. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/creation.py +0 -0
  35. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/deferred.py +0 -0
  36. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/download.py +0 -0
  37. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/dump_schemas.py +0 -0
  38. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/environment.py +0 -0
  39. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/extensions.py +0 -0
  40. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/fields.py +0 -0
  41. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/formatting.py +0 -0
  42. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/generators.py +0 -0
  43. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/git_utils.py +0 -0
  44. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/global_package.py +0 -0
  45. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/header.py +0 -0
  46. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/lang.py +0 -0
  47. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/lazy_importing_main.py +0 -0
  48. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/limits_info.py +0 -0
  49. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/linting.py +0 -0
  50. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/main.py +0 -0
  51. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/naming.py +0 -0
  52. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/__init__.py +0 -0
  53. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/boca/__init__.py +0 -0
  54. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/boca/boca_language_utils.py +0 -0
  55. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/boca/boca_outcome_utils.py +0 -0
  56. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/boca/extension.py +0 -0
  57. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/boca/packager.py +0 -0
  58. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/contest_main.py +0 -0
  59. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/importer.py +0 -0
  60. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/main.py +0 -0
  61. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/moj/packager.py +0 -0
  62. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/pkg/packager.py +0 -0
  63. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/polygon/importer.py +0 -0
  64. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/polygon/packager.py +0 -0
  65. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/polygon/polygon_api.py +0 -0
  66. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/polygon/test.py +0 -0
  67. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/packaging/polygon/upload.py +0 -0
  68. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/presets/__init__.py +0 -0
  69. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/presets/fetch.py +0 -0
  70. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/presets/lock_schema.py +0 -0
  71. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/presets/schema.py +0 -0
  72. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/remote.py +0 -0
  73. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/retries.py +0 -0
  74. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/sanitizers/issue_stack.py +0 -0
  75. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/sanitizers/warning_stack.py +0 -0
  76. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/schema.py +0 -0
  77. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/setter_config.py +0 -0
  78. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/solutions.py +0 -0
  79. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/state.py +0 -0
  80. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/__init__.py +0 -0
  81. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/build_statements.py +0 -0
  82. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/builders.py +0 -0
  83. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/expander.py +0 -0
  84. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/joiners.py +0 -0
  85. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/latex.py +0 -0
  86. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/latex_jinja.py +0 -0
  87. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/statements/schema.py +0 -0
  88. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/stats.py +0 -0
  89. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/stressing/__init__.py +0 -0
  90. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/stressing/finder_parser.py +0 -0
  91. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tasks.py +0 -0
  92. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testcase_extractors.py +0 -0
  93. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testcase_utils.py +0 -0
  94. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testcases/__init__.py +0 -0
  95. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testcases/main.py +0 -0
  96. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testing/__init__.py +0 -0
  97. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testing/testing_package.py +0 -0
  98. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testing/testing_preset.py +0 -0
  99. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/testing/testing_shared.py +0 -0
  100. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/timing.py +0 -0
  101. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/__init__.py +0 -0
  102. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/boca/__init__.py +0 -0
  103. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/boca/debug_utils.py +0 -0
  104. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/boca/main.py +0 -0
  105. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/boca/manual_scrape.py +0 -0
  106. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/boca/scrape.py +0 -0
  107. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/boca/scraper.py +0 -0
  108. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/converter.py +0 -0
  109. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/tooling/main.py +0 -0
  110. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/__init__.py +0 -0
  111. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/captured_log.py +0 -0
  112. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/css/app.tcss +0 -0
  113. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/main.py +0 -0
  114. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/__init__.py +0 -0
  115. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/build.py +0 -0
  116. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/command.py +0 -0
  117. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/differ.py +0 -0
  118. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/error.py +0 -0
  119. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/rich_log_modal.py +0 -0
  120. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/run.py +0 -0
  121. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/run_explorer.py +0 -0
  122. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/run_test_explorer.py +0 -0
  123. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/selector.py +0 -0
  124. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/screens/test_explorer.py +0 -0
  125. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/utils/__init__.py +0 -0
  126. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/utils/run_ui.py +0 -0
  127. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/widgets/__init__.py +0 -0
  128. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/widgets/diff_box.py +0 -0
  129. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/widgets/file_log.py +0 -0
  130. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/widgets/interaction_box.py +0 -0
  131. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/widgets/rich_log_box.py +0 -0
  132. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/widgets/test_output_box.py +0 -0
  133. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/ui/widgets/two_sided_test_output_box.py +0 -0
  134. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/box/validators.py +0 -0
  135. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/config.py +0 -0
  136. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/console.py +0 -0
  137. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/__init__.py +0 -0
  138. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/caching.py +0 -0
  139. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/debug_context.py +0 -0
  140. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/grading_context.py +0 -0
  141. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/__init__.py +0 -0
  142. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/cacher.py +0 -0
  143. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/digester.py +0 -0
  144. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/program.py +0 -0
  145. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/sandboxes/__init__.py +0 -0
  146. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/sandboxes/stupid_sandbox.py +0 -0
  147. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/judge/sandboxes/tee.py +0 -0
  148. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/limits.py +0 -0
  149. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/profiling.py +0 -0
  150. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/steps.py +0 -0
  151. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/grading/steps_with_caching.py +0 -0
  152. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/checkers/boilerplate.cpp +0 -0
  153. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/checkers/noop.cpp +0 -0
  154. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/default_config.json +0 -0
  155. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/default_setter_config.mac.yml +0 -0
  156. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/default_setter_config.yml +0 -0
  157. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/envs/default.rbx.yml +0 -0
  158. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/checker.sh +0 -0
  159. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compare.sh +0 -0
  160. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compile/c +0 -0
  161. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compile/cc +0 -0
  162. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compile/cpp +0 -0
  163. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compile/java +0 -0
  164. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compile/kt +0 -0
  165. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compile/py2 +0 -0
  166. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/compile/py3 +0 -0
  167. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactive/c +0 -0
  168. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactive/cc +0 -0
  169. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactive/cpp +0 -0
  170. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactive/java +0 -0
  171. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactive/kt +0 -0
  172. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactive/py2 +0 -0
  173. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactive/py3 +0 -0
  174. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactor_compile.sh +0 -0
  175. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/interactor_run.sh +0 -0
  176. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/bkp +0 -0
  177. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/c +0 -0
  178. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/cc +0 -0
  179. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/cpp +0 -0
  180. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/java +0 -0
  181. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/kt +0 -0
  182. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/py2 +0 -0
  183. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/run/py3 +0 -0
  184. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/safeexec.c +0 -0
  185. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/boca/safeexec_compile.sh +0 -0
  186. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/c/compile.sh +0 -0
  187. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/c/prep.sh +0 -0
  188. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/c/run.sh +0 -0
  189. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/compare.sh +0 -0
  190. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/cpp/compile.sh +0 -0
  191. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/cpp/prep.sh +0 -0
  192. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/cpp/run.sh +0 -0
  193. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/interactor_prep.sh +0 -0
  194. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/interactor_run.sh +0 -0
  195. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/java/compile.sh +0 -0
  196. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/java/prep.sh +0 -0
  197. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/java/run.sh +0 -0
  198. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/py2/compile.sh +0 -0
  199. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/py2/prep.sh +0 -0
  200. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/py2/run.sh +0 -0
  201. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/py3/compile.sh +0 -0
  202. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/py3/prep.sh +0 -0
  203. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/packagers/moj/scripts/py3/run.sh +0 -0
  204. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/contest/.gitignore +0 -0
  205. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/contest/contest.rbx.yml +0 -0
  206. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/contest/statement/contest.rbx.tex +0 -0
  207. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/contest/statement/info.rbx.tex +0 -0
  208. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/contest/statement/instructions.tex +0 -0
  209. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/contest/statement/logo.png +0 -0
  210. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/env.rbx.yml +0 -0
  211. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/.gitignore +0 -0
  212. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/gens/gen.cpp +0 -0
  213. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/manual_tests/samples/000.in +0 -0
  214. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/manual_tests/samples/001.in +0 -0
  215. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/problem.rbx.yml +0 -0
  216. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/rbx.h +0 -0
  217. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/sols/main.cpp +0 -0
  218. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/sols/wa-overflow.cpp +0 -0
  219. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/statement/statement.rbx.tex +0 -0
  220. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/testlib.h +0 -0
  221. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/testplan/random.py +0 -0
  222. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/testplan/random.txt +0 -0
  223. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/validator.cpp +0 -0
  224. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/problem/wcmp.cpp +0 -0
  225. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/shared/contest_template.rbx.tex +0 -0
  226. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/shared/icpc.sty +0 -0
  227. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/presets/default/shared/problem_template.rbx.tex +0 -0
  228. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/templates/rbx.h +0 -0
  229. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/resources/templates/template.cpp +0 -0
  230. {rbx_cp-0.17.2 → rbx_cp-0.17.4}/rbx/testing_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbx.cp
3
- Version: 0.17.2
3
+ Version: 0.17.4
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.17.2"
3
+ version = "0.17.4"
4
4
  description = ""
5
5
  packages = [
6
6
  {include = "rbx"}
@@ -0,0 +1 @@
1
+ __version__ = '0.17.4'
@@ -673,6 +673,13 @@ async def stress(
673
673
  '-d',
674
674
  help='Optional description of the stress test.',
675
675
  ),
676
+ print_descriptors: bool = typer.Option(
677
+ False,
678
+ '--descriptors',
679
+ '-D',
680
+ help='Whether to print descriptors of the stress test.',
681
+ hidden=True,
682
+ ),
676
683
  ):
677
684
  if finder and not generator_args or generator_args and not finder:
678
685
  console.console.print(
@@ -693,6 +700,7 @@ async def stress(
693
700
  progress=s,
694
701
  verbose=verbose,
695
702
  sanitized=sanitized,
703
+ print_descriptors=print_descriptors,
696
704
  )
697
705
 
698
706
  stresses.print_stress_report(report)
@@ -352,7 +352,7 @@ def get_solutions(root: pathlib.Path = pathlib.Path()) -> List[Solution]:
352
352
 
353
353
  for entry in package.solutions:
354
354
  if '*' in str(entry.path):
355
- for file in root.glob(str(entry.path)):
355
+ for file in sorted(root.glob(str(entry.path))):
356
356
  relative_file = file.relative_to(root)
357
357
  add_solution(
358
358
  Solution.model_copy(
@@ -105,6 +105,7 @@ class BasePackager(ABC):
105
105
  statement = self.get_statement_for_language_or_null(lang)
106
106
  if statement is None:
107
107
  raise ValueError(f'No statement for language {lang} found.')
108
+ return statement
108
109
 
109
110
 
110
111
  class BaseContestPackager(ABC):
@@ -3,13 +3,13 @@ from typing import List, Literal, Optional
3
3
  from pydantic_xml import BaseXmlModel, attr, element, wrapped
4
4
 
5
5
 
6
- class Name(BaseXmlModel):
6
+ class Name(BaseXmlModel, search_mode='unordered'):
7
7
  language: str = attr()
8
8
  value: str = attr()
9
9
  main: bool = attr(default=False)
10
10
 
11
11
 
12
- class Statement(BaseXmlModel):
12
+ class Statement(BaseXmlModel, search_mode='unordered'):
13
13
  charset: Optional[str] = attr(default=None)
14
14
 
15
15
  language: str = attr()
@@ -21,12 +21,16 @@ class Statement(BaseXmlModel):
21
21
  type: Literal['application/x-tex', 'application/pdf', 'text/html'] = attr()
22
22
 
23
23
 
24
- class File(BaseXmlModel):
24
+ class Tutorial(BaseXmlModel, search_mode='unordered'):
25
+ pass
26
+
27
+
28
+ class File(BaseXmlModel, search_mode='unordered'):
25
29
  path: str = attr()
26
30
  type: Optional[str] = attr(default=None)
27
31
 
28
32
 
29
- class Test(BaseXmlModel):
33
+ class Test(BaseXmlModel, search_mode='unordered'):
30
34
  method: Literal['manual', 'generated'] = attr(default='manual')
31
35
 
32
36
  sample: Optional[bool] = attr(default=None)
@@ -36,7 +40,7 @@ class Test(BaseXmlModel):
36
40
  verdict: Optional[str] = attr(default=None)
37
41
 
38
42
 
39
- class Testset(BaseXmlModel):
43
+ class Testset(BaseXmlModel, search_mode='unordered'):
40
44
  name: Optional[str] = attr(default=None)
41
45
 
42
46
  timelimit: Optional[int] = element('time-limit', default=1000)
@@ -53,14 +57,14 @@ class Testset(BaseXmlModel):
53
57
  )
54
58
 
55
59
 
56
- class Judging(BaseXmlModel):
60
+ class Judging(BaseXmlModel, search_mode='unordered'):
57
61
  inputFile: str = attr(default='')
58
62
  outputFile: str = attr(default='')
59
63
 
60
64
  testsets: List[Testset] = element(tag='testset', default_factory=list)
61
65
 
62
66
 
63
- class Checker(BaseXmlModel):
67
+ class Checker(BaseXmlModel, search_mode='unordered'):
64
68
  name: Optional[str] = attr(default=None)
65
69
  type: Literal['testlib'] = attr(default='testlib')
66
70
  source: File = element()
@@ -70,11 +74,11 @@ class Checker(BaseXmlModel):
70
74
  testset: Optional[Testset] = element(default=None)
71
75
 
72
76
 
73
- class Interactor(BaseXmlModel):
77
+ class Interactor(BaseXmlModel, search_mode='unordered'):
74
78
  source: File = element()
75
79
 
76
80
 
77
- class Problem(BaseXmlModel, tag='problem'):
81
+ class Problem(BaseXmlModel, tag='problem', search_mode='unordered'):
78
82
  short_name: str = attr('short-name')
79
83
 
80
84
  names: List[Name] = wrapped('names', element(tag='name'), default_factory=list)
@@ -102,12 +106,12 @@ class Problem(BaseXmlModel, tag='problem'):
102
106
  )
103
107
 
104
108
 
105
- class ContestProblem(BaseXmlModel):
109
+ class ContestProblem(BaseXmlModel, search_mode='unordered'):
106
110
  index: str = attr()
107
111
  path: str = attr()
108
112
 
109
113
 
110
- class Contest(BaseXmlModel, tag='contest'):
114
+ class Contest(BaseXmlModel, tag='contest', search_mode='unordered'):
111
115
  names: List[Name] = wrapped('names', element(tag='name'), default_factory=list)
112
116
 
113
117
  statements: List[Statement] = wrapped(
@@ -56,6 +56,7 @@ async def run_stress(
56
56
  verbose: bool = False,
57
57
  progress: Optional[StatusProgress] = None,
58
58
  sanitized: bool = False,
59
+ print_descriptors: bool = False,
59
60
  ) -> StressReport:
60
61
  pkg = package.find_problem_package_or_die()
61
62
 
@@ -134,6 +135,9 @@ async def run_stress(
134
135
  if time.monotonic() - startTime > timeoutInSeconds:
135
136
  break
136
137
 
138
+ if print_descriptors:
139
+ utils.print_open_fd_count()
140
+
137
141
  executed += 1
138
142
 
139
143
  if progress:
@@ -46,7 +46,7 @@ TEXT: (/[^ \t\f\r\n\[\]\(\)\<\>\|\`]/ | ESCAPED_STRING)+
46
46
  // Whitespace
47
47
  _WS: WS
48
48
 
49
- RECNAME: /[a-zA-Z0-9_]/+ /(\.[a-zA-Z0-9_])/*
49
+ RECNAME: /[a-zA-Z0-9_]/+ /(\.[a-zA-Z0-9_]+)/*
50
50
 
51
51
  %import common.WS
52
52
  %import common.CNAME
@@ -45,7 +45,7 @@ def extract_validator_test_entries(
45
45
  ) -> List[ValidatorTestEntry]:
46
46
  res: List[ValidatorTestEntry] = []
47
47
  for test in tests:
48
- for input in pathlib.Path().glob(str(test.glob)):
48
+ for input in sorted(pathlib.Path().glob(str(test.glob))):
49
49
  if not input.is_file():
50
50
  continue
51
51
  res.append(
@@ -60,7 +60,7 @@ def extract_checker_test_entries(tests: List[CheckerTest]) -> List[CheckerTestEn
60
60
  res: List[CheckerTestEntry] = []
61
61
  seen: Set[pathlib.Path] = set()
62
62
  for test in tests:
63
- for file in pathlib.Path().glob(str(test.glob)):
63
+ for file in sorted(pathlib.Path().glob(str(test.glob))):
64
64
  if not file.is_file():
65
65
  continue
66
66
  if file.suffix not in ['.in', '.out', '.ans']:
@@ -559,7 +559,7 @@ class SandboxBase(abc.ABC):
559
559
  def glob(self, glob_expr: str) -> List[pathlib.Path]:
560
560
  return [
561
561
  path.relative_to(self.get_root_path())
562
- for path in self.get_root_path().glob(glob_expr)
562
+ for path in sorted(self.get_root_path().glob(glob_expr))
563
563
  ]
564
564
 
565
565
  @abc.abstractmethod
@@ -360,7 +360,7 @@ class FilesystemStorage(Storage):
360
360
  def list_metadata(self, filename: str) -> List[str]:
361
361
  return [
362
362
  path.stem.split('__')[1]
363
- for path in (self.path / '.metadata').glob(f'{filename}__*.json')
363
+ for path in sorted((self.path / '.metadata').glob(f'{filename}__*.json'))
364
364
  ]
365
365
 
366
366
  def exists(self, filename: str) -> bool:
@@ -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.17.2"
4
+ min_version: "0.17.4"
5
5
  uri: "rsalesc/rbx/rbx/resources/presets/default"
6
6
  problem: "problem"
7
7
  contest: "contest"
@@ -75,6 +75,19 @@ def check_version_compatibility(required: str) -> SemVerCompatibility:
75
75
  return check_version_compatibility_between(installed, required)
76
76
 
77
77
 
78
+ def print_open_fd_count() -> int:
79
+ import psutil
80
+
81
+ try:
82
+ current_process = psutil.Process()
83
+ open_fds = len(current_process.open_files())
84
+ print(f'Number of opened file descriptors: {open_fds}')
85
+ except psutil.AccessDenied:
86
+ print('Access denied. Run with appropriate permissions (e.g., sudo) if needed.')
87
+ except Exception as e:
88
+ print(f'An error occurred: {e}')
89
+
90
+
78
91
  def create_and_write(path: pathlib.Path, *args, **kwargs):
79
92
  path.parent.mkdir(parents=True, exist_ok=True)
80
93
  path.write_text(*args, **kwargs)
@@ -1 +0,0 @@
1
- __version__ = '0.17.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