跳转到主要内容

一些辅助工具,用于帮助编写校对机器人,由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_allowedFalseNone)。

允许提供一个字符串列表,在这种情况下,它们将通过"\n\n"分隔,这对于渲染Markdown段落很有用。

too_slow_message="您的程序看起来运行得太慢,看起来像是一个无限循环。"

如果代码运行速度慢于给定的timeout(默认为1秒),则显示的消息。

允许提供一个字符串列表,在这种情况下,它们将通过"\n\n"分隔,这对于渲染Markdown段落很有用。

prefix=()

print_prefixexception_prefixtoo_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"

良好实践

像为您的代码编写单元测试一样编写学生检查代码。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

correction-helper-2024.1.tar.gz (8.2 kB 查看哈希值)

上传时间

构建分发

correction_helper-2024.1-py3-none-any.whl (7.7 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面