Releases: jupyter/nbgrader
nbgrader v0.6.0
nbgrader version 0.6.0 is a major release, involving over 100 PRs and 60 issues. This includes many bug fixes, small enhancements, and improved docs. The major new features include:
- Better support for multiple classes with JupyterHub. In particular, a new "Course List" extension has been added which provides instructors access to separate formgrader instances for all the classes they can manage. Additionally, JupyterHub authentication is used to control which students have access to which assignments.
- Better LMS integration (for example, adding a
lms_user_id
column in theStudent
table of the database). - Better support for feedback. In particular, there is now the ability to generate and return feedback to students through nbgrader with the
generate_feedback
andrelease_feedback
commands, and the ability for students to fetch feedback with thefetch_feedback
command. This functionality is also available through the formgrader and Assignment List extensions. - Instructions for how to do grading inside a Docker container, for increased protection against malicious code submitted by students.
- A new type of nbgrader cell called a "task" cell which supports more open-ended solutions which may span multiple cells.
Important: Users updating from 0.5.x to 0.6.0 should be aware that they
will need to do the following (please make sure to back up your files before doing so, just in case anything goes wrong!):
- Update their nbgrader database using
nbgrader db upgrade
. - Update the metadata in their assignments using
nbgrader update
. - Reinstall the nbgrader extensions (see :doc:
/user_guide/installation
).
Please also note that some of the nbgrader commands have been renamed, for consistency with the new feedback commands:
nbgrader assign
is nownbgrader generate_assignment
nbgrader release
is nownbgrader release_assignment
nbgrader fetch
is nownbgrader fetch_assignment
The full list of PRs is:
- PR #1191: Allow access to formgrader when not using JuptyerHub auth
- PR #1190: Add JupyterHub demos
- PR #1186: Remove student_id and change root to cache, permission check to only execute
- PR #1184: Move the fetch feedback API from formgrader to assignment_list
- PR #1183: Feedback: update fetch_feedback command line help
- PR #1180: Fix versions of pytest and nbconvert
- PR #1179: Add CourseDir.student_id_exclude option to exclude students
- PR #1169: Fix minor typo in js extension helper text
- PR #1164: assignment_dir: Add into several missing places
- PR #1152: Rename 'nbgrader fetch' to 'nbgrader fetch_assignment'
- PR #1151: Rename 'nbgrader release' to 'nbgrader release_assignment'
- PR #1147: Add test to ensure that db upgrade succeeds before running assign
- PR #1145: Rename nbgrader feedback to nbgrader generate_feedback
- PR #1140: A few more updates to the docs for multiple classes
- PR #1139: Additional docs sanitization
- PR #1138: Ensure that cell type changes result in valid nbgrader metadata
- PR #1137: Rename "nbgrader assign" to "nbgrader generate_assignment"
- PR #1135: section on grading in docker container
- PR #1131: Better support for multiple classes
- PR #1127: Better documentation of nbgrader_config.py
- PR #1126: Remove the third party resources page
- PR #1125: Check that the course directory is a subdirectory of the notebook dir
- PR #1124: Only run nbextensions tests on oldest and newest versions of python
- PR #1123: Ensure course directory root path has no trailing slashes
- PR #1122: Fix incorrect usage of Exchange.course_id
- PR #1121: Fix logfile
- PR #1120: Integrate feedback distribution within nbgrader
- PR #1119: added a sanatizing step to the doc creation.
- PR #1118: Integrate course_id into the api and apps
- PR #1116: Autograde & Assign: create missing students/assignments by default
- PR #1115: Fix typo in tmp filename prefix in conftest.py
- PR #1114: Documentation for multiple classes
- PR #1113: Add a course list extension that shows all courses an instructor can manage
- PR #1112: Locate all configurable classes for generate_config subcommand
- PR #1111: Optional consistency check between owner and student_id upon collect
- PR #1110: Systematic use of utils.get_username instead of $USER
- PR #1109: naming the temporary directories in tests
- PR #1108: Extended support for filtering files copied in the exchange
- PR #1106: Remove testing of python 3.4
- PR #1105: Remove extra keys in nbgrader metadata and better schema mismatch errors
- PR #1102: Only build docs with one version of python
- PR #1101: Add jupyter education book to third party resources
- PR #1100: Run test in the
python
group in parallel using pytest-xdist - PR #1099: Add course table, add course_id column to assignment
- PR #1098: Customizable student ID in
nbgrader submit
- PR #1094: Update license
- PR #1093: Add authentication plugin support
- PR #1090: partial credit for autograde test cells
- PR #1088: Remove version requirement from urllib3
- PR #1084: Fix miscellaneous bugs
- PR #1080: compatibility with SQLAlchemy 1.3+
- PR #1075: Give ExecutePreprocessor the Traitlets config during validation
- PR #1071: student and assignment selection in exportapp implemented
- PR #1064: Validate all cells
- PR #1061: Set env var NBGRADER_VALIDATING when validating
- PR #1054: Raise error when executed task fails
- PR #1053: Remove changes to sitecustomize.py and dependency on invoke
- PR #1051: Remove spellcheck and enchant dependency
- PR #1040: Restrict access for students to different courses
- PR #1036: Add a general lms user id column to the student table
- PR #1032: fix: return info of reper function is wrong in api.py
- PR #1029: Documentation fix to add info re: timeout errors.
- PR #1028: Some improvements to the contributor list script
- PR #1026: Mark test_same_part_navigation as flaky
- PR #1025: Fixing failing tests, take 2
- PR #1024: Fix deprecation warning with timezones
- PR #1023: Ensure nbgrader list still works with random strings
- PR #1021: Fix tests, all of which are failing :(
- PR #1019: Make nbgrader quickstart work with existing directories
- PR #1018: Add missing close > for url to display correctly
- PR #1017: Fix all redirection
- PR #1014: a mistake in comment
- PR #1005: Add random string to submission filenames for better hiding
- PR #1002: Change to notebook directory when validating (repeat of #880)
- PR #1001: Allow setting a different assignment dir for students than the root notebook directory
- PR #1000: Allow instructors to share files via shared group id
- PR #994: Add link to jupyter in education map
- PR #991: Fix broken documentation
- PR #990: Include section on mocking (autograding resources)
- PR #989: Update developer installation instructions
- PR #984: Adding global graded tasks
- PR #975: Fix the link to the activity magic
- PR #972: Use mathjax macro for formgrader
- PR #967: Added note in FAQ about changing cell ids
- PR #964: Added "if name == "main":"
- PR #963: Add third party resources to the documentation
- PR #962: Add grant_extension method to the gradebook
- PR #959: Allow apps to use -f and --force
- PR #958: Do some amount of fuzzy problem set name matching
- PR #957: Remove underscores from task names
- PR #955: Ignore .pytest_cache in .gitignore
- PR #954: Fix bug in find_all_files that doesn't properly ignore directories
- PR #953: update log.warn (deprecated) to log.warning
- PR #948: Move config file generation to a separate app
- PR #947: Exclude certain assignment files from being overwritten during autograding
- PR #946: Fix failing tests
- PR #937: Strip whitespace from assignment, student, and course ids
- PR #936: Switch from PhamtomJS to Firefox
- PR #934: Skip filtering notebooks when ExchangeSubmit.strict == True
- PR #933: Fix failing tests
- PR #932: Prevent assignments from being created with invalid names
- PR #911: Update installation.rst
- PR #909: Friendlier error messages when encountering a schema mismatch
- PR #908: Better validation errors when cell type changes
- PR #906: Resolves issues with UTF-8
- PR #905: Update changelog and rebuild docs from 0.5.4
- PR #900: Improve issue template to explain logic behind filling it out
- PR #899: Help for csv import
- PR #897: Give more details on how to use formgrader and jupyterhub
- PR #892: Format code blocks in installation instructions
- PR #886: Add nbval for non-Windows tests/CI
- PR #877: Create issue_template.md
- PR #871: Fix NbGraderAPI.timezone handling
- PR #870: added java, matlab, and octave codestubs to clearsolutions.py
- PR #853: Update changelog from 0.5.x releases
- PR #838: Fetch multiple assignments in one command
Huge thanks to the following users who submitted PRs or reported issues that were merged or fixed for the 0.6.0 release:
- 00Kai0
- Alexanderallenbrown
- aliandra
- amellinger
- BertR
- Carreau
- cdvv7788
- Ciemaar
- consideRatio
- damianavila
- danielmaitre
- DavidNemeskey
- davidpwilliamson
- davis68
- ddbourgin
- ddland
- dechristo
- destitutus
- dsblank
- edouardtheron
- fenwickipedia
- fm75
- FranLucchini
- gertingold
- hcastilho
- JanBobolz
- jedbrown
- jhamrick
- jnak12
- kcranston
- kthyng
- lgpage
- liffiton
- mikezawitkowski
- mozebdi
- mpacer
- nabriis
- nthiery
- perllaghu
- QuantumEntangledAndy
- rgerkin
- rkdarst
- Ruin0x11
- rwest
- ryanlovett
- samhinshaw
- Sefriol
- sigurdurb
- slel
- soldis
- swarnava
- takluyver
- thotypous
- vahtras
- VETURISRIRAM
- vidartf
- willingc
- yangkky
- zonca
nbgrader v0.5.6
nbgrader version 0.5.6 is a small release that only unpins the version of IPython and Jupyter console.
nbgrader v0.5.5
nbgrader version 0.5.5 is a release for the Journal of Open Source education,
with the following PRs merged:
- PR #1057: Ensure consistency in capitalizing Jupyter Notebook
- PR #1049: Update test builds on Travis
- PR #1047: JOSE paper bib updates
- PR #1045: Dev requirements and spelling tests
- PR #1016: Fix anaconda link
- PR #973: Create a paper on nbgrader
Thanks to the following users who submitted PRs or reported issues that were fixed for the 0.5.5 release:
- jedbrown
- jhamrick
- swarnava
- willingc
nbgrader v0.5.4
nbgrader version 0.5.3 is a bugfix release, with the following PRs merged:
- PR #898: Make sure validation is run in the correct directory
- PR #895: Add test and fix for parsing csv key names with spaces
- PR #888: Fix overwritekernelspec preprocessor and update tests
- PR #880: change directory when validating notebooks
- PR #873: Fix issue with student dictionaries when assignments have zero points
Thanks to the following users who submitted PRs or reported issues that were fixed for the 0.5.4 release:
- jcsutherland
- jhamrick
- lgpage
- misolietavec
- mpacer
- ncclementi
- randy3k
nbgrader v0.5.3
nbgrader version 0.5.3 is a bugfix release, with the following PRs merged:
- PR #868: Fix travis to work with trusty
- PR #867: Change to the root of the course directory before running nbgrader converters
- PR #866: Set nbgrader url prefix to be relative to notebook_dir
- PR #865: Produce warnings if the exchange isn't set up correctly
- PR #864: Fix link to jupyterhub docs
- PR #861: fix the html to ipynb in docs
Thanks to the following users who submitted PRs or reported issues that were fixed for the 0.5.3 release:
- jhamrick
- misolietavec
- mpacer
- rdpratti
nbgrader v0.5.2
nbgrader version 0.5.2 is a bugfix release, with most of the bugs being discovered and subsequently fixed by the sprinters at SciPy 2017! The following PRs were merged:
- PR #852: Fix spelling wordlist, again
- PR #850: Include extension with feedback template filename
- PR #848: Add links to the scipy talk
- PR #847: Fix html export config options to avoid warnings
- PR #846: Disallow negative point values
- PR #845: Don't install assignment list on windows
- PR #844: Reveal ids if names aren't set
- PR #843: Update spelling wordlist
- PR #840: Avoid extension errors when exchange is missing
- PR #839: Always raise on convert failure
- PR #837: Report mismatch extension versions
- PR #836: Add documentation for course_id and release
- PR #835: DOC: correct Cell Toolbar location
- PR #833: Include quickstart .ipynb header
- PR #831: Fix typo on Managing assignment docs
- PR #830: Print out app subcommands by default
- PR #825: Add directory structure example
- PR #824: Add FAQ sections
- PR #823: Typo fix.
- PR #819: Update install instructions
- PR #816: Add jupyter logo
- PR #802: Fix bug with autograding when there is no timestamp
Thanks to the following users who submitted PRs or reported issues that were fixed for the 0.5.2 release:
- arcticbarra
- BjornFJohansson
- hetland
- ixjlyons
- jhamrick
- katyhuff
- ksunden
- lgpage
- ncclementi
- Ruin0x11
nbgrader v0.5.1
nbgrader v0.5.0
nbgrader version 0.5.0 is another very large release with some very exciting new features! The highlights include:
- The formgrader is now an extension to the notebook, rather than a standalone service.
- The formgrader also includes functionality for running
nbgrader assign
,nbgrader release
,nbgrader collect
, andnbgrader autograde
directly from the browser. - A new command
nbgrader zip_collect
, which helps with collecting assignment files downloaded from a LMS. - Hidden test cases are now supported.
- A lot of functionality has moved into standalone objects that can be called directly from Python, as well as a high-level Python API in
nbgrader.apps.NbGraderAPI
(see http://nbgrader.readthedocs.io/en/latest/api/high_level_api.html ). - A new Validate notebook extension, which allows students to validate an assignment notebook from the notebook itself (this is equivalent functionality to the "Validate" button in the Assignment List extension, but without requiring students to be using the Assignment List).
- A new command
nbgrader db upgrade
, which allows you to migrate your nbgrader database to the latest version without having to manually execute SQL commands. - New cells when using the Create Assignment extension will automatically given randomly generated ids, so you don't have to set them yourself.
- You can assign extra credit when using the formgrader.
Important: Users updating from 0.4.x to 0.5.0 should be aware that they will need to update their nbgrader database using nbgrader db upgrade
and will need to reinstall the nbgrader extensions (see http://nbgrader.readthedocs.io/en/latest/user_guide/installation.html ). Additionally, the configuration necessary to use the formgrader with JupyterHub has changed, though it is now much more straightforward (see http://nbgrader.readthedocs.io/en/latest/configuration/jupyterhub_config.html ).
The full list of merged PRs includes:
- PR #789: Fix more inaccurate nbextension test failures after reruns
- PR #788: Fix inaccurate nbextension test failures after reruns
- PR #787: Fix slow API calls
- PR #786: Update documentation for nbgrader as a webapp
- PR #784: Fix race condition in validate extension tests
- PR #782: Implement nbgrader as a webapp
- PR #781: Assign missing notebooks a score of zero and mark as not needing grading
- PR #780: Create a new high-level python API for nbgrader
- PR #779: Update the year!
- PR #778: Create and set permissions for exchange directory when using
nbgrader release
- PR #774: Add missing config options
- PR #772: Standalone versions of nbgrader assign, autograde, and feedback
- PR #771: Fix mathjax rendering
- PR #770: Better cleanup when nbconvert-based apps crash
- PR #769: Fix nbgrader validate globbing for real this time
- PR #768: Extra credit
- PR #766: Make sure validation works with notebook globs
- PR #764: Migrate database with alembic
- PR #762: More robust saving of the notebook in create assignment tests
- PR #761: Validate assignment extension
- PR #759: Fix nbextension tests
- PR #758: Set random cell ids
- PR #756: Fix deprecations and small bugs
- PR #755: Fast validate
- PR #754: Set correct permissions when submitting assignments
- PR #752: Add some more informative error messages in zip collect
- PR #751: Don't create the gradebook database until formgrader is accessed
- PR #750: Add documentation for how to pass numeric ids
- PR #747: Skip over students with empty submissions
- PR #746: Fix bug with --to in custom exporters
- PR #738: Refactor the filtering of existing submission notebooks for formgrader
- PR #735: Add DataTables functionality to existing formgrade tables
- PR #732: Fix the collecting of submission files for multiple attempts of multiple notebook assignments
- PR #731: Reset late submission penalty before checking if submission is late or not
- PR #717: Update docs regarding solution delimeters
- PR #714: Preserve kernelspec when autograding
- PR #713: Use new exchange functionality in assignment list app
- PR #712: Move exchange functionality into non-application classes
- PR #711: Move some config options into a CourseDirectory object.
- PR #709: Fix formgrader tests link for 0.4.x branch (docs)
- PR #707: Force rerun nbgrader commands
- PR #704: Fix nbextension tests
- PR #701: Set proxy-type=none in phantomjs
- PR #700: use check_call for extension installation in tests
- PR #698: Force phantomjs service to terminate in Linux
- PR #696: Turn the gradebook into a context manager
- PR #695: Use sys.executable when executing nbgrader
- PR #693: Update changelog from 0.4.0
- PR #681: Hide tests in "Autograder tests" cells
- PR #622: Integrate the formgrader into the notebook
- PR #526: Processing of LMS downloaded submission files
Thanks to the following contributors who submitted PRs or reported
issues that were merged/closed for the 0.5.0 release:
- AnotherCodeArtist
- dementrock
- dsblank
- ellisonbg
- embanner
- huwf
- jhamrick
- jilljenn
- lgpage
- minrk
- suchow
- Szepi
- whitead
- ZelphirKaltstahl
- zpincus
nbgrader v0.4.0
nbgrader version 0.4.0 is a substantial release with lots of changes and several new features. The highlights include:
- Addition of a command to modify students and assignments in the database (
nbgrader db
) - Validation of nbgrader metadata, and a command to automatically upgrade said metadata from the previous version (
nbgrader update
) - Support for native Jupyter nbextension and serverextension installation, and deprecation of the
nbgrader nbextension
command - Buttons to reveal students' names in the formgrader
- Better reporting of errors and invalid submissions in the "Assignment List" extension
- Addition of a menu to change between different courses in the "Assignment List" extension
- Support to run the formgrader as an official JupyterHub service
- More flexible code and text stubs when creating assignments
- More thorough documentations
Important: Users updating from 0.3.x to 0.4.0 should be aware that they will need to update the metadata in their assignments using nbgrader update
and will need to reinstall the nbgrader extensions (see http://nbgrader.readthedocs.io/en/stable/user_guide/installation.html#nbgrader-extensions). Additionally, the configuration necessary to use the formgrader with JupyterHub has changed, though it is now much less brittle (see http://nbgrader.readthedocs.io/en/stable/configuration/jupyterhub_config.html).
The full list of merged PRs includes:
- PR #689: Add cwd to path for all nbgrader apps
- PR #688: Make sure the correct permissions are set on released assignments
- PR #687: Add display_data_priority option to GetGrades preprocessor
- PR #679: Get Travis-CI to build
- PR #678: JUPYTERHUB_SERVICE_PREFIX is already the full URL prefix
- PR #672: Undeprecate --create in assign and autograde
- PR #670: Fix deprecation warnings for config options
- PR #665: Preventing URI Encoding of the base-url in the assignment_list extension
- PR #656: Update developer installation docs
- PR #655: Fix saving notebook in create assignment tests
- PR #652: Make 0.4.0 release
- PR #651: Update changelog with changes from 0.3.3 release
- PR #650: Print warning when no config file is found
- PR #649: Bump the number of test reruns even higher
- PR #646: Fix link to marr paper
- PR #645: Fix coverage integration by adding codecov.yml
- PR #644: Add AppVeyor CI files
- PR #643: Add command to update metadata
- PR #642: Handle case where points is an empty string
- PR #639: Add and use a Gradebook contextmanager for DbApp and DbApp tests
- PR #637: Update conda channel to conda-forge
- PR #635: Remove conda recipe and document nbgrader-feedstock
- PR #633: Remove extra level of depth in schema per @ellisonbg
- PR #630: Don't fail
test_check_version
test on'import sitecustomize' failed error
- PR #629: Update changelog for 0.3.1 and 0.3.2
- PR #628: Make sure to include schema files
- PR #625: Add "nbgrader db" app for modifying the database
- PR #623: Move server extensions into their own directory
- PR #621: Replace tabs with spaces in installation docs
- PR #620: Document when needs manual grade is set
- PR #619: Add CI tests for python 3.6
- PR #618: Implement formgrader as a jupyterhub service
- PR #617: Add ability to show student names in formgrader
- PR #616: Rebuild docs
- PR #615: Display assignment list errors
- PR #614: Don't be as strict about solution delimeters
- PR #613: Update FAQ with platform information
- PR #612: Update to new traitlets syntax
- PR #611: Add metadata schema and documentation
- PR #610: Clarify formgrader port and suppress notebook output
- PR #607: Set instance variables in base auth class before running super init
- PR #598: Conda recipe - nbextension link / unlink scripts
- PR #597: Re-submitting nbextension work from previous PR
- PR #594: Revert "Use jupyter nbextension/serverextension for installation/activation"
- PR #591: Test empty and invalid timestamp strings
- PR #590: Processing of invalid
notebook_id
s - PR #585: Add catches for empty timestamp files and invalid timestamp strings
- PR #581: Update docs with invoke test group commands
- PR #571: Convert readthedocs links for their .org -> .io migration for hosted projects
- PR #567: Handle autograding failures better
- PR #566: Add support for true read-only cells
- PR #565: Add option to nbgrader fetch for replacing missing files
- PR #564: Update documentation pertaining to the assignment list extension
- PR #563: Add ability to switch between courses in assignment list extension
- PR #562: Add better support to transfer apps for multiple courses
- PR #550: Add documentation regarding how validation works
- PR #545: Document how to customize the student version of an assignment
- PR #538: Use official HubAuth from JupyterHub
- PR #536: Create a "nbgrader export" command
- PR #523: Allow code stubs to be language specific
Thanks to the following contributors who submitted PRs or reported issues that were merged/closed for the 0.4.0 release:
- adamchainz
- AstroMike
- ddbourgin
- dlsun
- dsblank
- ellisonbg
- huwf
- jhamrick
- lgpage
- minrk
- olgabot
- randy3k
- whitead
- whositwhatnow
- willingc
nbgrader v0.3.3
Version 0.3.3 of nbgrader is a minor bugfix release that fixes an issue with
running nbgrader fetch
on JupyterHub. The following PR was merged for the 0.3.3 milestone:
- PR #600: missing sys.executable, "-m", on fetch_assignment
Thanks to the following contributors who submitted PRs or reported issues that were merged/closed for the 0.3.3 release:
- alikasamanli
- hetland