Skip to content

Latest commit

 

History

History
417 lines (285 loc) · 19.9 KB

CHANGELOG.md

File metadata and controls

417 lines (285 loc) · 19.9 KB

Changelog

v4.3.1:

  • Change sklearn to scikit-learn in requirements files generated by Otter Generate

4.3.0:

  • Support dictionary and tuple assignments in solution substitution in Otter Assign per #587
  • Add the pdf argument to ottr::export in R assignments created with Otter Assign per #440

v4.2.1:

  • Update Otter Grade image tag when the base image changes per #583
  • Make gspread an optional dependency per #577

v4.2.0:

  • Added configuration files for Otter Assign per #565
  • Fixed log execution bug from Slack as described in #571

v4.1.2:

  • Added ipython to install_requires

v4.1.1:

  • Added MANIFEST.in

v4.1.0:

  • Display emojis with test results to more clearly show which tests pass and which fail, as per #533.
  • Allow users to specify a Python version in Otter Generate and Otter Assign
  • Round results.json point values to 5 decimal places per #538
  • Optionally display PDF generation/submission failures to students via results.json per #494
  • Added the force_public_test_summary key to the autograder config per #539
  • Made the "Public Tests" section on Gradescope appear as failing when not all public tests passed per #539

v4.0.2:

  • Close temporary file handle before removal when checking tests in otter.Notebook.export
  • Fixed bug caused by unspecified encoding in Windows JSON loads per #524
  • Updated autograder zip setup.sh file and r-base version per #514
  • Fix point value filtering for student tests in Otter Assign per #503

v4.0.1:

  • Fix Otter Grade Dockerfile per #517
  • Fix display of Public Tests output on Gradescope due to new output format
  • Updated Otter Export to only import the HTML exporter and its dependencies when an HTML export is indicated per #520

v4.0.0:

  • Added a new test file format based on raising exceptions per #95
  • Refactored execution internals to remove mocks and AST parsing
  • Added use of tempfile to store the executed source for compilation per #229
  • Added use of wrapt for otter.Notebook method decorators
  • Set export_cell: run_tests: true and check_all_cell: false as new defaults for Otter Assign per #378
  • Made the v1 format of Otter Assign the default and added the --v0 flag to the CLI
  • Converted logging in some of Otter's tooling from print statements to the logging library, and added verbosity flags to each command
  • Updated containerized grading to better handle grading single files
  • Made Otter compatible with Jupyterlite per #458
  • Added Otter Assign R Markdown format v1 per #491
  • Refactored Otter Assign internals per #491
  • Converted user-supplied configuration management and documentation to fica per #485
  • Added assignment names to Otter Assign and Otter Generate that can be verified by Otter Run to prevent students from submitting to the wrong autograder per #497
  • Set the default version of ottr to v1.2.0

v3.3.0:

  • Made otter.check.utils.save_notebook compatible with JupyterLab and RetroLab per #448
  • Add libmagick++-dev to Gradescope R autograding image

v3.2.1:

  • Display instructor-specified messages ahead of doctest messages per #441
  • Round point values for display to 5 decimal places in Otter Assign per #457

v3.2.0:

  • Changed Otter Generate to accept the path to the zip file to write as the output argument rather than a directory in which to write a file called autograder.zip
  • Changed the file name of the zip file generated by Otter Assign to include the master notebook basename and a timestamp per #401
  • Made xeCJK in Otter Export's LaTeX templates optional per #411
  • Removed concise error messages and debug mode from Otter Export, instead opting to always display the full error message, per #407
  • Upgraded to Ottr v1.1.3
  • Set the default for the --ext option for Otter Grade to ipynb per #418
  • Fixed the display of success messages when all tests cases pass per #425
  • Added an error when the expected notebook file does not exist in otter.Notebook per #433
  • Allow unset conda channel_priority in R setup.sh files per #430
  • Reset all cell execution counts in Assign student notebook per #422

v3.1.4:

  • Added the question name to the otter.assign.utils.AssignNotebookFormatException per #398
  • Switched from manual install of the fandol font in grading images to installing the texlive-lang-chinese package
  • Allowed submission zip to be exported even when PDF generation fails per #403
  • Fixed bug in Otter Assign that fails when a notebook has no tests

v3.1.3:

  • Fixed #389 by closing file handles in Otter Grade before removing them
  • Fixed R image builds by setting Conda channel_priority to strict in R setup.sh files per #386
  • Fix loading docker images after building
  • Added the --ext option to Otter Grade per #386

v3.1.2:

  • Specify UTF-8 encoding in all open calls used for reading JSON for Windows compatibility per #380
  • Fixed incorrect prompt substitution in R notebooks and Rmd assignments

v3.1.1:

  • Added libgomp to R environment.yml

v3.1.0:

  • Added a tool to convert Assign v0-formatted notebooks to v1 format
  • Added xeCJK to the LaTeX exporter template and Docker images
  • Added PDF generation and submission in R per #302
  • Updated intercell seeding in R per #302
  • Fixed bug in test case point values for Assign R assignments per #360
  • Enabled solutions_pdf and template_pdf in Assign R assignments per #364
  • Added options to limit execution time of grading and permit network access
  • Refactored R submission reformatting per #369
  • Added export cells for R notebooks in Otter Assign per #369
  • Updated the default version of Ottr to v1.1.1
  • Changed prompts in R notebooks to match Rmd documents
  • Added filtering of notebook cells with syntax errors during R notebook execution
  • Enured that "empty" tokens are ignored in Otter Generate per #361
  • Prevented save text when export_cell: force_save: true is specified in Otter Assign assignment metadata per #332

v3.0.6: re-release of v3.0.5

v3.0.5:

  • Refactored Otter's execution internals
  • Added intercell seeding via seed variables per #346
  • Made Otter Run compatible with ZIP submissions
  • Fixed argument bug in Otter Run per #349

v3.0.4:

  • Fixed bug in Otter Assign format v1 for closing exports when the last question is manually-graded
  • Removed cell IDs in Otter Assign output notebooks per #340
  • Changed submission zip download link to use the HTML download attribute per #339

v3.0.3:

  • Fix some minor bugs using docker for grading
  • Added support for test config blocks in R assignments
  • Fixed use of autograder_files in Otter Assign
  • Removed the generate: pdfs key from Otter Assign assignment configurations
  • Converted from Docker-py to Python on Whales for containerized grading

v3.0.2:

  • Made otter.Notebook.check_all compatible with metadata tests
  • Refactored logging in otter.Notebook
  • Fixed parsing of Windows newlines in Otter Assign

v3.0.1:

  • Updated the default version of Ottr to v1.0.0
  • Ensured that metadata tests for R notebooks are disabled

v3.0.0:

  • Added Colab support to otter.Notebook by disabling methods that require a notebook path and ensuring that a tests directory is present
  • Added Otter Assign format v1
  • Added FutureWarning for Otter Assign format v0
  • Default-disabled separate test files in Otter Assign v1 format
  • Fixed bug in Otter Assign for R causing point values in test files not to render
  • Added the check_cell key to question metadata in Otter Assign
  • Fixed installation of stringi in Gradescope R build per #259
  • Added support for Ottr v1.0.0.b0
  • Converted CLI to click from argparse
  • Converted documentation source from Markdown to RST, removing use of recommonmark
  • Added token argument to Otter Generate and Otter Assign
  • Implemented submission zip validation against local test cases in otter.Notebook
  • Removed metadata files for Otter Grade
  • Added flags for disabling file auto-inclusion in Otter Generate

v2.2.7:

  • Added student-visible error reporting in Gradescope results

v2.2.6:

  • Updated Otter Grade Dockerfile to simplify build process
  • Updated Otter Grade container management workflow
  • Updated setup.sh templates to reflect the new Dockerfile changes
  • Changed the display of failed test results in Otter Assign validation
  • Made rpy2 an optional depenency

v2.2.5:

  • Upgraded to Miniconda 4.10.3 in grading images
  • Fixed #272

v2.2.4:

  • Fixed total score printout for the use of the points_possible configuration

v2.2.3:

  • Added NotebookMetadataTestFile for reading tests from Jupyter Notebook metadata

  • Added optional storage of tests in notebook metadata for Otter Assign (default-off until v3)

  • Removed deprecated tool Otter Service

  • Added printout of total score to autograder output

v2.2.2:

  • Added show_all_public configuration for grading

v2.2.1:

  • Added metadata for each test case to Otter Assign format
  • Added success and failure messages for test cases
  • Added Gmail notifications plugin
  • Added timestamps to otter.Notebook.export filenames

v2.2.0:

  • Changed grouping of results to be per-question rather than per-test case

v2.1.8:

  • Fixed bug in total score calculation when the grade override plugin is used

v2.1.7:

  • Swapped IPython.core.inputsplitter.IPythonInputSplitter for IPython.core.inputtransformer2.TransformerManager in otter.execute.execute_notebook

v2.1.6:

  • Fixed try/except statements in tests per #228
  • Added error handling in GoogleSheetsGradeOverride plugin for when the Google API hits a rate-limit error

v2.1.5:

  • Added custom environment.yml files in autograder per #103
  • Set display.max_rows to None for pandas to print all rows in summary per #224

v2.1.4:

  • Added otter.utils.nullcontext to be compatible with Python<3.7

v2.1.3:

  • Added the notebook_export plugin event
  • Fixed plugin bug resulting from running tests in Otter Assign
  • Added creation of plugin collection resulting from Otter Generate for running tests in Otter Assign

v2.1.2:

  • Added otter.Notebook.export format support for Otter Grade
  • Fixed tutorial in documentation
  • Added force_save argument to otter.Notebook.export to make notebook force-save optional

v2.1.1:

  • Fixed UnboundLocalError with log in otter.run.run_autograder.run_autograder

v2.1.0:

  • Added nb_conda_kernels to template environment.yml
  • Fixed duplicate token calls when using Otter Assign to call Otter Generate
  • Updated grading image to Miniconda 4.9.2 with Python 3.8
  • Changed Otter conda environment name to otter-env
  • Added warnings import to otter.check.notebook

v2.0.8:

  • Passed plugin collection while running tests in Otter Assign
  • Fixed adding directories in files with Otter Generate

v2.0.7:

  • Changed scripts to entry_points in setup.py for Windows compatibility and removed bin/otter
  • Added otter.check.utils.save_notebook for autosaving notebooks on export calls
  • Updated OK format to allow points key to be a list of length equal to the number of test cases

v2.0.6:

  • Fixed requirements not found error for R notebooks in Otter Assign
  • Removed use of re in overriding Notebook test directory override in otter.execute.execute_notebook by adding otter.Notebook._test_dir_override

v2.0.5:

  • Fixed NoneType issue in PluginCollection.generate_report

v2.0.4:

  • Added ignoreable lines in Otter Assign
  • Added error handling for log deserialization per #190
  • Added plugin data storage per #191

v2.0.3:

  • Fixed positional arg count in otter.plugins.builtin.GoogleSheetsGradeOverride
  • Fixed working directory in otter.plugins.builtin.GoogleSheetsGradeOverride during Otter Assign

v2.0.2:

v2.0.1:

  • Added the each key to points in question metadata for Otter Assign

v2.0.0:

  • Changed granularity of results to be test case-by-test case rather than by file
  • Added ability to list requirements directly in assignment metadata w/out requirements.txt file
  • Unified assignment grading workflow and converted local grading to container-per-submission
  • Exposed grading internals for non-containerized grading via otter run and otter.api
  • Added plugins for altering grades and execution, incl. built-in plugins
  • Added ignorable cells to Otter Assign
  • Added autograder_files configuration for Otter Assign
  • Added passdown of assignment configurations to Otter Generate from Otter Assign
  • Fixed whitespace bug in Assign solution parsing
  • Resolved conflicts with nbconvert>=6.0.0, removed version pin
  • Added otter.assign.utils.patch_copytree as a patch for shutil.copytee on WSL
  • Refactored Otter Generate to use zipfile to generate zips
  • Refactored CLI to allow creation of programmatic API
  • Changed otter generate autograder to otter generate
  • Removed otter generate token as all interaction with otter.generate.token.APIClient can be handled elsewhere
  • Added intercell seeding for R Jupyter Notebooks
  • Added ValueError on unexpected config in otter.assign.assignment.Assignment
  • Added --username, --password flags to Otter Assign and Otter Generate
  • Added support for Python files
  • Removed FutureWarning for deprecated global hidden key of OK tests
  • Add missing file specifier in environment template

v1.1.6:

  • Fixed ZeroDivisionError when an assignment has 0 points total

v1.1.5:

  • Fixed error in parsing requirements when using Otter Grade

v1.1.4:

  • Fixed KeyError when kernelspec unparsable from notebook in Otter Assign

v1.1.3:

  • Changed Rmd code prompt to NULL # YOUR CODE HERE for assignment statements and # YOUR CODE HERE for whole-line and block removal

v1.1.2:

  • Made requirements specification always throw an error if a user-specified path is not found
  • Pinned nbconvert<6.0.0 as a temporary measure due to new templating issues in that release

v1.1.1:

  • Fixed handling variable name collisions with already-tested test files
  • Added --no-pdfs flag to Otter Assign

v1.1.0:

  • Moved Gradescope grading to inside conda env within container due to change in Gradescope's grading image
  • Added ability to specify additional tests to be run in cell metadata without need of explicit Notebook.check cells

v1.0.1:

  • Fixed bug with specification of overwriting requirements in Otter Generate

v1.0.0:

  • Changed structure of CLI into six main commands: otter assign, otter check, otter export, otter generate, otter grade, and otter service
  • Added R autograding integrations with autograding package ottr
  • Added Otter Assign, a forked version of jassign that works with Otter
  • Added Otter Export, a forked version of nb2pdf and gsExport for generating PDFs of notebooks
  • Added Otter Service, a deployable grading service that students can POST their submissions to
  • Added logging to otter.Notebook and Otter Check, incl. environment serialization for grading
  • Changed filenames inside the package so that names match commands (e.g. otter/cli.py is now otter/grade.py)
  • Added intercell seeding
  • Moved all argparse calls into otter.argparser and the logic for routing Otter commands to otter.run
  • Made several fixes to otter check, incl. ability to grade notebooks with it
  • otter generate and otter grade now remove tmp directories on failure
  • Fixed otter.ok_parser.CheckCallWrapper finding and patching instances of otter.Notebook
  • Changed behavior of hidden test cases to use individual case "hidden" key instead of global "hidden" key
  • Made use of metadata files in otter grade optional
  • Added otter_ignore cell tag to flag a cell to be ignored during notebook execution

v0.4.8:

  • added import of IPython.display.display to otter/grade.py
  • patched Gradescope metadata parser for group submissions

v0.4.7:

  • fix relative import issue on Gradescope (again, sigh)

v0.4.6: re-release of v0.4.5

v0.4.5:

  • added missing patch of otter.Notebook.export in otter/grade.py
  • added __version__ global in otter/__init__.py
  • fixed relative import issue when running on Gradescope
  • fixed not finding/rerunning tests on Gradescope with otter.Notebook.check

v0.4.4:

  • fixed template escape bug in otter/gs_generator.py

v0.4.3:

  • fixed dead link in docs/gradescope.md
  • updated to Python 3.7 in setup.sh for Gradescope
  • made otter and otter gen CLIs find ./requirements.txt automatically if it exists
  • fix bug where GS generator fails if no -r flag specified