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)
}, ) 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')
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)