The official Python SDK for Judge0.
Project description
Judge0 Python SDK
The official Python SDK for Judge0.
>>> import judge0
>>> result = judge0.run(source_code="print('hello, world')")
>>> result.stdout
'hello, world\n'
>>> result.time
0.987
>>> result.memory
52440
>>> for f in result:
... f.name
... f.content
...
'script.py'
b"print('hello, world')"
Installation
pip install judge0
Requirements
- Python 3.9+
Quick Start
Getting The API Key
Get your API key from Sulu, Rapid, or ATD.
Notes
- [Recommended] Choose Sulu if you need pay-as-you-go (pey-per-use) pricing.
- Choose Rapid or ATD if you need a quota-based (volume-based) plan.
- Judge0 has two flavors: Judge0 CE and Judge0 Extra CE, and their difference is just in the languages they support. When choosing Sulu, your API key will work for both flavors, but for Rapid and ATD you will need to explicitly subscribe to both flavors if you want to use both.
Using Your API Key
Option 1: Explicit Client Object
Explicitly create a client object with your API key and pass it to Judge0 Python SDK functions.
import judge0
client = judge0.SuluJudge0CE(api_key="xxx")
result = judge0.run(client=client, source_code="print('hello, world')")
print(result.stdout)
Other options include:
judge0.RapidJudge0CEjudge0.ATDJudge0CEjudge0.SuluJudge0ExtraCEjudge0.RapidJudge0ExtraCEjudge0.ATDJudge0ExtraCE
Option 2: Implicit Client Object
Put your API key in one of the following environment variables, respectable to the provider that issued you the API key: JUDGE0_SULU_API_KEY, JUDGE0_RAPID_API_KEY, or JUDGE0_ATD_API_KEY.
Judge0 Python SDK will automatically detect the environment variable and use it to create a client object that will be used for all API calls if you do not explicitly pass a client object.
import judge0
result = judge0.run(source_code="print('hello, world')")
print(result.stdout)
Examples
Running C Programming Language
import judge0
source_code = """
#include <stdio.h>
int main() {
printf("hello, world\\n");
return 0;
}
"""
result = judge0.run(source_code=source_code, language=judge0.C)
print(result.stdout)
Running Java Programming Language
import judge0
source_code = """
public class Main {
public static void main(String[] args) {
System.out.println("hello, world");
}
}
"""
result = judge0.run(source_code=source_code, language=judge0.JAVA)
print(result.stdout)
Reading From Standard Input
import judge0
source_code = """
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d\\n", a + b);
char name[10];
scanf("%s", name);
printf("Hello, %s!\\n", name);
return 0;
}
"""
stdin = """
3 5
Bob
"""
result = judge0.run(source_code=source_code, stdin=stdin, language=judge0.C)
print(result.stdout)
Test Cases
import judge0
results = judge0.run(
source_code="print(f'Hello, {input()}!')",
test_cases=[
("Bob", "Hello, Bob!"), # Test Case #1. Tuple with first value as standard input, second value as expected output.
{ # Test Case #2. Dictionary with "input" and "expected_output" keys.
"input": "Alice",
"expected_output": "Hello, Alice!"
},
["Charlie", "Hello, Charlie!"], # Test Case #3. List with first value as standard input and second value as expected output.
],
)
for i, result in enumerate(results):
print(f"--- Test Case #{i + 1} ---")
print(result.stdout)
print(result.status)
Test Cases And Multiple Languages
import judge0
submissions = [
judge0.Submission(
source_code="print(f'Hello, {input()}!')",
language=judge0.PYTHON,
),
judge0.Submission(
source_code="""
#include <stdio.h>
int main() {
char name[10];
scanf("%s", name);
printf("Hello, %s!\\n", name);
return 0;
}
""",
language=judge0.C,
),
]
test_cases=[
("Bob", "Hello, Bob!"),
("Alice", "Hello, Alice!"),
("Charlie", "Hello, Charlie!"),
]
results = judge0.run(submissions=submissions, test_cases=test_cases)
for i in range(len(submissions)):
print(f"--- Submission #{i + 1} ---")
for j in range(len(test_cases)):
result = results[i * len(test_cases) + j]
print(f"--- Test Case #{j + 1} ---")
print(result.stdout)
print(result.status)
Asynchronous Execution
import judge0
submission = judge0.async_run(source_code="print('hello, world')")
print(submission.stdout) # Prints 'None'
judge0.wait(submissions=submission) # Wait for the submission to finish.
print(submission.stdout) # Prints 'hello, world'
Get Languages
import judge0
client = judge0.get_client()
print(client.get_languages())
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file judge0-0.0.4.tar.gz.
File metadata
- Download URL: judge0-0.0.4.tar.gz
- Upload date:
- Size: 25.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dddf558de7efa52514524fbed78828c71194e1d319defccbb9047358db55ca85
|
|
| MD5 |
10e726ea9928eace84c195896a5b3df5
|
|
| BLAKE2b-256 |
3a17d0a755fd09b5bc63afaf0f1db7688ca894983a8b2510b07c557448e56685
|
File details
Details for the file judge0-0.0.4-py3-none-any.whl.
File metadata
- Download URL: judge0-0.0.4-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a628686e52029627312c801f9af7a9df2a922f07daede15449bcfcd459d9ab22
|
|
| MD5 |
d3b6b6e6c8c20e028b8fb0a5033c5fb7
|
|
| BLAKE2b-256 |
33cb89f78641f16b1124035208c0150aca614539671858636ee8381758e5addb
|