Skip to main content

A simple ejudge for Python. Supports several languages and sandboxing.

Project description

`ejudge` is a library that implements a basic electronic judge/grader for code.
It can run Python, Ruby, C, and C++ code in a sandbox and supporting other
languages is easy.

This library uses the ``iospec`` format for specifying the expected inputs and
outputs for the some program execution. For more info, refer to the iospec_
manual.

.. _iospec: https://readthedocs.org/iospec/


Command line
============

The ``ejudge`` accepts two sub-commands:

``$ ejudge run <source> <inputs>``:
Runs the given input source code and passes all inputs defined
in the <inputs> file. The inputs may be either a simple text file with one
input per line or an IoSpec source file with an `.iospec` extension.
``$ ejudge grade <source> <iospec inputs>``:
Runs the input source code and compares the result with the given IoSpec
test cases. It than returns a feedback message telling if the code ran as
expected and, in case of errors, what are the probable problems.

Library
=======

The main entry points in the :mod:`ejudge` module are the :func:`ejudge.run` and
:func:`ejudge.grade` functions. The first is responsible for running code against
a set of inputs and collect the resulting IO. The second function runs code and
compares it with the expected iospec result.

>>> from ejudge import run
>>> src = 'print("hello %s!" % input("name: "))'
>>> inputs = ['john']
>>> spec = run(src, inputs, lang='python')
>>> list(spec[0]) # fetch the first test case
[Out('name: '), In('john'), Out('hello john!')]

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

ejudge-0.5.16.tar.gz (24.3 kB view details)

Uploaded Source

File details

Details for the file ejudge-0.5.16.tar.gz.

File metadata

  • Download URL: ejudge-0.5.16.tar.gz
  • Upload date:
  • Size: 24.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ejudge-0.5.16.tar.gz
Algorithm Hash digest
SHA256 031698844d28723b03326ec5389d3da6b65e9906730a456922af3f28ad2df5ee
MD5 394d81236e63fb779bbf6dee55da926d
BLAKE2b-256 f9a3dbfd15318c24cf58d9f83ab37d03e0f8f4d66c0f45b0ce21788bd7b7123b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page