一些辅助工具,用于帮助编写校对机器人,由hackinscience.org使用。
项目描述
Correction Helper
项目
这是一个Python中用于编写校对机器人的工具集合。
它用于hackinscience,但也可以在其他地方使用。
安全考虑
运行学生代码可能非常不安全,除非您信任学生不会为您设置后门。
本项目不提供任何安全支持,如果您有信任问题,可以查看firejail(是的,您可以在firejail中使用correction-helper
)。
用法
要安装它,运行: pip install correction-helper
。
在您的检查代码中,您可以使用它如下
student_code
装饰器
此装饰器的目的是捕获学生代码中可能出现的所有问题,简单地使用它即可
with student_code():
their_function()
在examples/
目录中可以找到一个更完整的示例。
student_code
允许的参数及其默认值
exception_prefix="我遇到了一个异常:"
在异常之前打印,如果有的话。
允许提供一个字符串列表,在这种情况下,它们将通过"\n\n"
分隔,这对于渲染Markdown段落很有用。
print_prefix="您的代码打印了:"
在学生打印之前显示的消息(如果print_allowed
为False
或None
)。
允许提供一个字符串列表,在这种情况下,它们将通过"\n\n"
分隔,这对于渲染Markdown段落很有用。
too_slow_message="您的程序看起来运行得太慢,看起来像是一个无限循环。"
如果代码运行速度慢于给定的timeout
(默认为1秒),则显示的消息。
允许提供一个字符串列表,在这种情况下,它们将通过"\n\n"
分隔,这对于渲染Markdown段落很有用。
prefix=()
print_prefix
、exception_prefix
和too_slow_message
的前缀,用于去重字符串,如
with student_code(
prefix="While calling blahblah('bar')",
print_prefix="it printed:",
exception_prefix="it raised:",
too_slow_message="it took more than 1s, had to kill it.",
):
blahblah('bar')
friendly=False
使用时,选择使用 friendly-traceback 而不是裸 Python 异常。
print_allowed=True
允许或拒绝学生将输出打印到 stdout 和 stderr。
True
:允许打印(并显示)。None
:允许打印(但不显示)。False
:不允许打印(并显示)。
在所有情况下,您都可以使用上下文管理器的值来读取他们打印的内容。
with student_code(print_allowed=None) as run:
their_function()
assert run.err == ""
assert run.out == "42"
良好实践
像为您的代码编写单元测试一样编写学生检查代码。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。