-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsubmission_autograder.py
30 lines (25 loc) · 8.8 KB
/
submission_autograder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
from codecs import open
import os, ssl
if (not os.environ.get('PYTHONHTTPSVERIFY', '') and getattr(ssl, '_create_unverified_context', None)):
ssl._create_default_https_context = ssl._create_unverified_context
"""
CS 188 Local Submission Autograder
Written by the CS 188 Staff
==============================================================================
_____ _ _
/ ____| | | |
| (___ | |_ ___ _ __ | |
\___ \| __/ _ \| '_ \| |
____) | || (_) | |_) |_|
|_____/ \__\___/| .__/(_)
| |
|_|
Modifying or tampering with this file is a violation of course policy.
If you're having trouble running the autograder, please contact the staff.
==============================================================================
"""
import bz2, base64
exec(bz2.decompress(base64.b64decode('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')))