Hi everyone!
Many of you probably know tcframe, the test case generation framework developed by IA TOKI (Ikatan Alumni TOKI, the alumni association of Indonesia's national olympiad in informatics team). Over the past week, I kept wondering why it only supports Linux. To use it on Windows, you have to install WSL and run everything from there, which can be a hassle, especially for newcomers.
I also came across a few issues on the tcframe repository from problem setters outside the C++ world. They found tcframe hard to work with and asked whether a Python version was possible.
So I decided to port tcframe to Python, so that it works the same on Windows, macOS, and Linux. Getting started takes two steps:
pip install tcframe
from tcframe import *
and you're good to go!
Your spec runs as plain Python (no compilation needed), and your solution still runs as a native executable. As a bonus, Python's big integers work out of the box, so something like 10**1000 in a test case just works.
Full documentation and examples are here: https://github.com/mie-intel/tcframe-python/
The package already covers most of the features of the C++ version. It's still in an early stage, though, and I haven't tested every feature thoroughly yet. One known limitation: grading interactive problems (with a communicator) doesn't work on Windows yet; it's planned for a future release.
Big thanks to fushar and IA TOKI for creating tcframe and making it open source. This port is built on their design and documentation. Feedback, bug reports, and contributions are very welcome. Thanks for reading!








Auto comment: topic has been updated by HahahaHihihi (previous revision, new revision, compare).
Interesting
Auto comment: topic has been updated by HahahaHihihi (previous revision, new revision, compare).
Wow, this could actually simplify the flow for windows users. I am also curious, will porting it to python have significant impact on speed when generating TC?
Actually no. The tcframe-python performance has no significant difference compared to the original (c++) one. My main goal on developing this is just to simplify the installation and spec writing process. Not speed up the program performance. And another reason why I choose python because I believe there are more people out there that use python as their first language compared to the other.
Huge W for windows users