Releases: Kattis/problemtools
v1.20251128
Release summary
We use a new rendering engine (lualatex instead of pdflatex) for problem2pdf. This means we now support problem statements with greek and cyrillic characters, as well as emojis. Layout does end up a bit different, and uses a bit more space. If someone is aware of tweaks to make lualatex output closer to the old pdflatex output, patches are very welcome.
Initial support for multipass problem has been added.
We've added some minor i18n - the strings we insert for samples in problem statements are now translated for Icelandic and Swedish statements. Patches for further translations are very welcome.
default_validator has been updated to not emit exteremly long messages if the answer and output differs in a long token (e.g., the submission forgot to print spaces).
There's now a --version flag in our command line tools.
... plus a lot more:
What's Changed
- Fix multithreading crash by @Matistjati in #342
- Better message if judge answer file gets judge error by @Matistjati in #343
- Fuzz input validators for trailing whitespace by @Matistjati in #347
- Fuzz output validators by @Matistjati in #348
- Multipass support by @Matistjati in #350
- More deterministic input fuzzing by @Matistjati in #351
- Sanity check the parsed author names by @Matistjati in #355
- Make oddecho worth 100 points and use symlinks by @Matistjati in #353
- Allow .timelimit, .git, and .gitignore files in problem packages #354 by @gkreitz in #362
- Add --version flag to command line tools by @gkreitz in #361
- Add back support for plainproblemname by @gkreitz in #360
- Don't write to parent dir when rendering problem statement by @gkreitz in #359
- Lualatex and emojis by @gkreitz in #363
- Add test coverage of default_validator by @gkreitz in #365
- Truncate long tokens in default_validator's judge message. #346 by @gkreitz in #366
- Load language config from parent of problem dir, if present #178 by @gkreitz in #367
- Update timelimit computation to new standard (also applying the change to legacy packages) by @gkreitz in #369
- Add translations for strings related to sample I/O in Swedish and Icelandic #150 by @gkreitz in #368
- Use updated, more permissive, regex for file and directory names by @gkreitz in #371
- Release 1.20251128 by @gkreitz in #372
Full Changelog: v1.20250606...v1.20251128
v1.20250606
A quick bugfix release. In the release yesterday, problem2{html,pdf} had a bug where sample data was not included.
What's Changed
Full Changelog: v1.20250605...v1.20250606
v1.20250605
Release summary
It's been almost two years since the last release, so this is a large one. A few highlights:
- Work has begun to support the 2023-07-draft version of the problem package format. This is far from complete, but we can now:
- Parse and check
problem.yaml - Deal with moved directories (e.g.,
problem_statementmoving tostatement) - Render markdown statements
- Parse and check
- There's now a
-jflag for multi-threaded validation - Warnings and errors from
verifyproblemnow have color - Releases are now uploaded to PyPi
If someone (outside of Kattis) is using problemtools as a python library, note that this release contains several breaking changes. The most important is that verifyproblem.Problem.config.get() is now replaced by verifyproblem.Problem.metadata. If there are users, please let us know. We're currently working on the assumption that this is mostly used as a command line tool outside of Kattis.
What's Changed
- Add python type annotations to
problem2{html,pdf}andverifyproblemby @JoelNiemela in #240 - Arch installation instructions by @SvartaHjarta in #243
- Support overwriting directories within submissions with included directories by @Tagl in #241
- Set working directory for submission by @Tagl in #238
- Update README.md by @JoelNiemela in #245
- Update kotlin to version 1.8.10 by @JoelNiemela in #246
- Fix not showing WA test case verifyproblem.py by @hairez in #248
- Fix crash in verifyproblem when in or ans files are not utf-8 by @gkreitz in #251
- Restructure problem2html and problem2pdf by @pehrsoderman in #252
- Improved logging, fix unicode error, include_dir buildrun by @incaseoftrouble in #253
- Fix missed init, add test case by @incaseoftrouble in #256
- Restore command line logging behaviour by @incaseoftrouble in #259
- Replace Travis CI with Github actions by @gkreitz in #262
- Check that all symlinks point to something existing within the problem package by @gkreitz in #261
- Add -j flag for multi-threaded validation by @simonlindholm in #263
- Adding sanity checks for file sizes. by @pehrsoderman in #264
- Add UUID as an optional field in problem.yaml by @pehrsoderman in #265
- Fix running of tests using pybuild by @pehrsoderman in #266
- Warn if sample is empty by @pehrsoderman in #267
- Change team to user for default validator by @niemela in #268
- Add a dependency on dvisvgm, which was missing by @pehrsoderman in #269
- Remove non-standard
judgeerror.txtfrom example problems by @gkreitz in #270 - Bump the language versions for c and c++ by @pehrsoderman in #271
- Explicitly set language versions for Java and Kotlin in languages.yaml by @mpsijm in #257
- Bump the language versions for Java by @pehrsoderman in #272
- GCC should use gnu17 by @pehrsoderman in #273
- Update languages.yaml by @pehrsoderman in #275
- Run interactive validation with submission's working directory by @Tagl in #278
- Change Rust compilation flags by @Matistjati in #281
- Update default_validator; add custom error when user output is empty by @JoelNiemela in #283
- Remove deprecated functionality of legacy format by @square-cylinder in #284
- Fix CI tests by @gkreitz in #288
- Implement new system for defining problem-formats by @square-cylinder in #286
- Add back warning/error logging by @Matistjati in #290
- Add type checking in our CI tests using
mypyby @gkreitz in #292 - Allow verifying statements according to the new problem format by @ElliotRipa in #289
- Fix mypy errors by @gkreitz in #293
- Update problemtools packaging by @gkreitz in #298
- Support 2023-07 config by @gkreitz in #300
- Move tests to root of repository by @gkreitz in #301
- Clean-up: Fix everything flagged by
ruff check, and a few other small fixes by @gkreitz in #303 - Apply ruff formatting by @gkreitz in #304
- Add ruff in CI and pre-commit by @gkreitz in #305
- Run all of verifyproblem for 2023-07 problems (even if we do not support many 2023-07 features) by @gkreitz in #306
- Suggest a new UUID when missing from config by @gkreitz in #307
- Markdown support by @Matistjati in #274
- Refactor metadata loading by @gkreitz in #308
- Add missing build requirements to debian build by @pehrsoderman in #313
- Convert some example problems to 2023-07-draft by @Matistjati in #309
- Refactor statement handling by @gkreitz in #311
- Update pyproject by @pehrsoderman in #314
- Add some documentation in the readme regarding current state of format versions by @gkreitz in #316
- Replace formatversion.FormatData with a StrEnum by @gkreitz in #315
- Colorlog and small fixes by @gkreitz in #317
- Improve image handling in markdown statements by @gkreitz in #318
- Restructure setup error handling by @gkreitz in #319
- Restore most of the old API offered by
problemtools.verifyproblem.Problemby @gkreitz in #320 - Fix how we check for incorrect statement/output validator directory by @gkreitz in #324
- Pypi preparation by @gkreitz in #323
- Restructure docker build by @gkreitz in #321
- Run verifyproblem on all examples in CI by @gkreitz in #326
- Improved checks for types, interaction samples, and output validator language by @gkreitz in #327
- Remove generatedata by @gkreitz in #328
- Fix docker build by @gkreitz in #329
- Workflow that builds and pushes a package to testpypi by @gkreitz in #332
- Fix version computation when we build pypi packages by @gkreitz in #333
- Fix syntax error in github workflow file by @gkreitz in #334
- A few small fixes / extra checks by @gkreitz in #330
- Prepare for release 1.20250605 and for moving development from
develtomasterby @gkreitz in #337 - Merge
developintomasterby @gkreitz in #338
New Contributors
- @SvartaHjarta made their first contribution in #243
- @hairez made their first contribution in #248
- @gkreitz made their first contribution in #251
- @incaseoftrouble made their first contribution in #253
- @Matistjati made their first contribution in #281
- @square-cylinder made their first contribution in #284
- @ElliotRipa made their first contribution in #289
Full Changelog: v1.20231016...v1.20250605