Tool for developing tasks for programming competitions.
Project description
Pisek ⌛
Tool for developing tasks for programming competitions. Currently used by:
Install
Pisek requires Python ≥ 3.11. Install with pip:
pip install pisek
For upgrading add --upgrade
:
pip install pisek --upgrade
Testing tasks
First create a config
file as documented here.
You can also reference the examples for
Kasiopea mode
and CMS mode.
pisek
This command tests the task in the current directory. It tests all task parts (generator, checker, solutions and judge).
Task testing overview
What pisek verifies (roughly in order):
- Samples exist and are not empty
- The generator generates inputs
- In Kasiopea mode the generator respects the seed and is deterministic
- The checker accepts all inputs
- It rejects inputs for harder subtasks
- The judge works
- It accepts the samples
- It doesn't crash on malicious output
- The solutions finish as expected
- They get the expected number of points
- They succeed/fail on each subtask as expected
- Data files (inputs and outputs) are valid
- They are in the correct encoding
- They don't contain unprintable characters
- They have a newline at the end
- In Kasiopea mode the files are reasonably small
Testing given programs
For fast testing of only the solution solve_cool.cpp
use:
pisek test solution solve_cool
For testing on multiple inputs use (only in Kasiopea mode) use:
pisek test solution solve_cool -n 42
Similarly the generator can be tested using:
pisek test generator
Useful options
Test all solutions, don't stop on first failure:
pisek --full
Test each solution on all inputs, even when the result is clear:
pisek --all-inputs
Use a different time limit (in seconds) for testing solutions:
pisek --timeout 5
Interpret warnings as failures (for a final check):
pisek --strict
Cleaning
Pisek can create a lot of files used for testing. Remove them by running:
pisek clean
Visualization
For visualizing the running time for each solution and testcase:
pisek --testing-log # test the task
pisek visualize # visualize
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Copyright (c) 2019 - 2022 Václav Volhejn <vaclav.volhejn@gmail.com>
Copyright (c) 2019 - 2022 Jiří Beneš <mail@jiribenes.com>
Copyright (c) 2020 - 2022 Michal Töpfer <michal.topfer@gmail.com>
Copyright (c) 2022 Jiří Kalvoda <jirikalvoda@kam.mff.cuni.cz>
Copyright (c) 2023 Daniel Skýpala <skipy@kam.mff.cuni.cz>
Copyright (c) 2024 Benjamin Swart <benjaminswart@email.cz>
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pisek-1.1.0.tar.gz
.
File metadata
- Download URL: pisek-1.1.0.tar.gz
- Upload date:
- Size: 132.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10953dcce1ee1bcd40aeae5b92fb24a8ddc9c85f50ab3c38edd542e1fc382128 |
|
MD5 | af98aaafaca63ab020c0d1cb072b80ce |
|
BLAKE2b-256 | 459b3af8018cc7b5ade0169c4a609264923883e070d963a4aceaa90a754e327a |
File details
Details for the file pisek-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: pisek-1.1.0-py3-none-any.whl
- Upload date:
- Size: 162.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6426e7711d610d1470a573c62eba290f8c030f3de1fd3022ba80318e66516776 |
|
MD5 | 53b7896cb2fe77898e7564cc04ed90da |
|
BLAKE2b-256 | 56256aa2993e73d4fde5667e49d7b574725df92f44cdb094f9a660b1ae9da6b6 |