コード例 #1
0
ファイル: autograder.py プロジェクト: isabella232/autograder
def grade(src_names, test_names):

    # create config and test files required by ok
    create_ok_files(src_names, test_names)

    args = assignment.Settings(
        verbose=
        True,  # prints out ALL tests but only sends JSON results up to first fail
        config=CONFIG_NAME  # config file to use
    )

    r, w = os.pipe()

    # parent
    if os.fork() > 0:
        # wait for child to finish
        childProcExitInfo = os.wait()

        # read grading results from child
        os.close(w)
        r = os.fdopen(r)
        data = r.read()
        r.close()
        return data

    # child
    os.close(r)

    # fork because this ignores subsequent submissions
    assign = assignment.load_assignment(args.config, args)

    os.dup2(w, 1)  # stdout goes to w
    msgs = messages.Messages()
    for name, proto in assign.protocol_map.items():
        if name == 'grading':  # only run grading protocol
            proto.run(msgs)
    os._exit(1)
コード例 #2
0
        },
    )
    with open('ok', 'rb') as f:
        github_asset = post_request(
            'https://uploads.github.com/repos/{}/releases/{}/assets'.format(
                GITHUB_REPO, github_release['id']),
            params={'name': 'ok'},
            headers={
                'Authorization': 'token ' + github_token,
                'Content-Type': 'application/octet-stream',
            },
            data=f,
        )

    print('Updating version on {}...'.format(OK_SERVER_URL))
    args = assignment.Settings(server=OK_SERVER_URL)
    access_token = auth.authenticate(args, force=True)
    post_request(
        'https://{}/api/v3/version/ok-client'.format(OK_SERVER_URL),
        headers={
            'Authorization': 'Bearer ' + access_token,
        },
        json={
            'current_version': new_release,
            'download_link': github_asset['browser_download_url'],
        },
    )

    print('Uploading release to PyPI...')
    shell('python setup.py sdist bdist_wheel upload')
コード例 #3
0
from client.api.notebook import Notebook
from client.api import assignment
from client.utils import auth

args = assignment.Settings(
    server='clewolffautook21.eastus.cloudapp.azure.com/okpy')
ok = Notebook('./lecture.ok', args)