jupyter / nbgrader

A system for assigning and grading notebooks
https://nbgrader.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
1.28k stars 316 forks source link

Error generating assignment and managing students #857

Closed jcsutherland closed 7 years ago

jcsutherland commented 7 years ago

Firstly, I apologize if this is not the proper place to report issues like this. I am exploring nbgrader, and have had some trouble getting it to work.

I have installed nbgrader on a local Jupyterhub installation and have been working through the example notebooks.

I had to create a ~/.jupyter/nbgrader_config.py file that has the following contents:

c = get_config()
c.CourseDirectory.root = '~/Jupyter/ChEn6703_test_nbgrader'

(note that I used the full path above, but replaced the prefix with ~ for security reasons)

There are a few strange things going on though:

Problems with student entries

  1. When I go to the Manage Students section of nbgrader, it doesn't show any students.
  2. When I do nbgrader db student list --log-level='DEBUG' I get something which is inconsistent with the empty list in the Manage Students dialog.
    [DbStudentListApp | DEBUG] Searching ['~/Jupyter/ChEn6703_test_nbgrader', '~/.jupyter', '/usr/etc/jupyter', '/usr/local/etc/jupyter', '/etc/jupyter'] for config files
    [DbStudentListApp | DEBUG] Looking for jupyter_config in /etc/jupyter
    [DbStudentListApp | DEBUG] Looking for jupyter_config in /usr/local/etc/jupyter
    [DbStudentListApp | DEBUG] Looking for jupyter_config in /usr/etc/jupyter
    [DbStudentListApp | DEBUG] Looking for jupyter_config in ~/.jupyter
    [DbStudentListApp | DEBUG] Looking for jupyter_config in ~/Jupyter/ChEn6703_test_nbgrader
    [DbStudentListApp | DEBUG] Looking for nbgrader_config in /etc/jupyter
    [DbStudentListApp | DEBUG] Looking for nbgrader_config in /usr/local/etc/jupyter
    [DbStudentListApp | DEBUG] Looking for nbgrader_config in /usr/etc/jupyter
    [DbStudentListApp | DEBUG] Looking for nbgrader_config in ~/.jupyter
    [DbStudentListApp | DEBUG] Loaded config file: ~/.jupyter/nbgrader_config.py
    [DbStudentListApp | DEBUG] Looking for nbgrader_config in ~/Jupyter/ChEn6703_test_nbgrader
    [DbStudentListApp | DEBUG] Loaded config file: ~/Jupyter/ChEn6703_test_nbgrader/nbgrader_conf
    ig.py
    [DbStudentListApp | DEBUG] Looking for nbgrader_config in ~/Jupyter/ChEn6703_test_nbgrader
    [DbStudentListApp | DEBUG] Loaded config file: ~/Jupyter/ChEn6703_test_nbgrader/nbgrader_conf
    ig.py
    There are 1 students in the database:
    1 (Flinstone, Fred) -- None
  3. If I manually enter a student in the Manage Students dialog, the student shows up and then disappears.

Problems when generating the assignment

When I go to Manage Assignments and click on the Generate icon for the example ps1 assignment, I get:

[INFO] Copying ~/Jupyter/ChEn6703_test_nbgrader/source/./ps1/jupyter.png -> ~/Jupyter/ChEn6703_test_nbgrader/release/./ps1/jupyter.png
[INFO] Updating/creating assignment 'ps1': {}
[INFO] Converting notebook ~/Jupyter/ChEn6703_test_nbgrader/source/./ps1/problem1.ipynb
[ERROR] There was an error processing assignment: ~/Jupyter/ChEn6703_test_nbgrader/source/./ps1
[ERROR] Traceback (most recent call last):
      File "/usr/local/lib/python3.5/dist-packages/nbgrader/converters/base.py", line 288, in convert_notebooks
        self.convert_single_notebook(notebook_filename)
      File "/usr/local/lib/python3.5/dist-packages/nbgrader/converters/base.py", line 244, in convert_single_notebook
        output, resources = self.exporter.from_filename(notebook_filename, resources=resources)
      File "/usr/local/lib/python3.5/dist-packages/nbconvert/exporters/exporter.py", line 172, in from_filename
        return self.from_file(f, resources=resources, **kw)
      File "/usr/local/lib/python3.5/dist-packages/nbconvert/exporters/exporter.py", line 190, in from_file
        return self.from_notebook_node(nbformat.read(file_stream, as_version=4), resources=resources, **kw)
      File "/usr/local/lib/python3.5/dist-packages/nbconvert/exporters/notebook.py", line 31, in from_notebook_node
        nb_copy, resources = super(NotebookExporter, self).from_notebook_node(nb, resources, **kw)
      File "/usr/local/lib/python3.5/dist-packages/nbconvert/exporters/exporter.py", line 132, in from_notebook_node
        nb_copy, resources = self._preprocess(nb_copy, resources)
      File "/usr/local/lib/python3.5/dist-packages/nbconvert/exporters/exporter.py", line 309, in _preprocess
        nbc, resc = preprocessor(nbc, resc)
      File "/usr/local/lib/python3.5/dist-packages/nbconvert/preprocessors/base.py", line 47, in __call__
        return self.preprocess(nb,resources)
      File "/usr/local/lib/python3.5/dist-packages/nbgrader/preprocessors/headerfooter.py", line 23, in preprocess
        with open(self.header, 'r') as fh:
    FileNotFoundError: [Errno 2] No such file or directory: 'source/header.ipynb'

[WARNING] Removing failed assignment: ~/Jupyter/ChEn6703_test_nbgrader/release/ps1
[ERROR] There was an error processing assignment 'ps1' for student '.'
[ERROR] Please see the the above traceback for details on the specific errors on the above failures.
Traceback

I have tried regenerating the entire class and this issue persists.

If I try the command line approach: nbgrader assign source/ps1/ I get:

[AssignApp | ERROR] No notebooks were matched by ~/Jupyter/ChEn6703_test_nbgrader/source/./s

Note the source/./s which seems problematic.

Any ideas on this?

rdpratti commented 7 years ago

jc,

I received your traceback error in the past, nbgrader is looking for a header file to place at the beginning of the assignment.

In the nbgrader_config.py file, you will probably see this line:

c.IncludeHeaderFooter.header = 'source/header.ipynb'

If you comment out this line (# in position 1), it should produce the assignment without a heading.

I wanted the heading, so I provided a full path to the file and it worked fine: The file should be in your source directory under your course directory. Here is an example for my windows install: c.IncludeHeaderFooter.header = 'C:\Jupyter\Notebooks\courses\CSC343\source\header.ipynb'

My caveat, I am only a new user to nbgrader (not a developer).

Hope this helps,

rd

jcsutherland commented 7 years ago

rd,

Thanks for the tip. I followed your suggestion, but it didn't fix the problem. In fact, there is a file source/header.ipynb that is generated as part of the ps1 demo homework, although nbgrader doesn't seem to find it. I wonder if there is some sort of path or configuration error so that nbgrader is searching in the wrong place for the file.

There also remains the issues of student management, which seems broken as well.

jhamrick commented 7 years ago

If I manually enter a student in the Manage Students dialog, the student shows up and then disappears.

Hmm, curious. Can you run the notebook server with --log-level=DEBUG and paste any output from the notebook server when you enter a student into the database?

Problems when generating the assignment

This seems to be an bug with nbgrader not properly looking for the header relative to the root of the course directory. Thanks for reporting it!

jcsutherland commented 7 years ago

I ran jupyter notebook --log-level=DEBUG on a local installation (not our JupyterHub server as I am not a sysadmin there), and it demonstrates the same problem in adding a student.

The log shows a lot of entries like:

[D 15:19:48.142 NotebookApp] 304 GET /formgrader (::1) 0.99ms
[C 15:19:48.271 NotebookApp] Unwritable directory, please contact your instructor: /srv/nbgrader/exchange
[D 15:19:48.619 NotebookApp] 304 GET /formgrader/api/assignments (::1) 349.39ms
[D 15:19:57.369 NotebookApp] 304 GET /formgrader/manage_students (::1) 1.17ms
[C 15:19:57.444 NotebookApp] Unwritable directory, please contact your instructor: /srv/nbgrader/exchange
[D 15:19:57.455 NotebookApp] 304 GET /formgrader/api/students (::1) 13.59ms
[C 15:20:05.232 NotebookApp] Unwritable directory, please contact your instructor: /srv/nbgrader/exchange

The student I added remained until I tried to generate the ps1 example assignment at which point the same error occurred that I observed on our JupyterHub installation. At that point, the student is gone from the Manage Students section in my browser. However, if I do nbgrader db student list in a terminal, the student does show up. Curiously, none of the sample students that are supposedly created in the quickstart are there in either nbgrader db student list or in the browser view.

Here is the log generated during those steps:

[I 15:22:02.159 NotebookApp] Copying /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/source/./ps1/jupyter.png -> /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/release/./ps1/jupyter.png
[I 15:22:02.160 NotebookApp] Updating/creating assignment 'ps1': {}
[I 15:22:02.179 NotebookApp] Converting notebook /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/source/./ps1/problem1.ipynb
[D 15:22:02.179 NotebookApp] Student: .
[D 15:22:02.179 NotebookApp] Assignment: ps1
[D 15:22:02.180 NotebookApp] Notebook: problem1
[D 15:22:02.188 NotebookApp] Applying preprocessor: IncludeHeaderFooter
[E 15:22:02.188 NotebookApp] There was an error processing assignment: /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/source/./ps1
[E 15:22:02.188 NotebookApp] Traceback (most recent call last):
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbgrader/converters/base.py", line 288, in convert_notebooks
        self.convert_single_notebook(notebook_filename)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbgrader/converters/base.py", line 244, in convert_single_notebook
        output, resources = self.exporter.from_filename(notebook_filename, resources=resources)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbconvert/exporters/exporter.py", line 171, in from_filename
        return self.from_file(f, resources=resources, **kw)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbconvert/exporters/exporter.py", line 189, in from_file
        return self.from_notebook_node(nbformat.read(file_stream, as_version=4), resources=resources, **kw)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbconvert/exporters/notebook.py", line 31, in from_notebook_node
        nb_copy, resources = super(NotebookExporter, self).from_notebook_node(nb, resources, **kw)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbconvert/exporters/exporter.py", line 131, in from_notebook_node
        nb_copy, resources = self._preprocess(nb_copy, resources)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbconvert/exporters/exporter.py", line 308, in _preprocess
        nbc, resc = preprocessor(nbc, resc)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbconvert/preprocessors/base.py", line 47, in __call__
        return self.preprocess(nb,resources)
      File "/Users/james/anaconda/lib/python3.6/site-packages/nbgrader/preprocessors/headerfooter.py", line 23, in preprocess
        with open(self.header, 'r') as fh:
    FileNotFoundError: [Errno 2] No such file or directory: 'source/header.ipynb'

[W 15:22:02.189 NotebookApp] Removing failed assignment: /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/release/ps1
[E 15:22:02.189 NotebookApp] There was an error processing assignment 'ps1' for student '.'
[E 15:22:02.189 NotebookApp] Please see the the above traceback for details on the specific errors on the above failures.
jhamrick commented 7 years ago

I am still not exactly sure what is going on here, but I have one observation, and there's another piece of information that would be helpful to have.

First, it seems like you might be using nbgrader with two different versions of python. Notice in the first traceback you posted, it's finding nbgrader through python 3.5: /usr/local/lib/python3.5/dist-packages/nbgrader/preprocessors/headerfooter.py but then in the second traceback, it's finding it through python 3.6: /Users/james/anaconda/lib/python3.6/site-packages/nbgrader/preprocessors/headerfooter.py. If the command line is finding a different python than the extension, this can cause problems and could be the cause. I would recommend uninstalling all versions of nbgrader and then installing it only in one of your pythons, so that you don't run into this issue.

Second, when you run nbgrader with debug, it should print out some information about where it's looking for the configuration files, for example:

$ nbgrader db student list --log-level=DEBUG
[DbStudentListApp | DEBUG] Searching ['/private/tmp/course101', '/Users/jhamrick/.jupyter', '/Users/jhamrick/miniconda3/envs/nbgrader/etc/jupyter', '/usr/local/etc/jupyter', '/etc/jupyter'] for config files
[DbStudentListApp | DEBUG] Looking for jupyter_config in /etc/jupyter
[DbStudentListApp | DEBUG] Looking for jupyter_config in /usr/local/etc/jupyter
[DbStudentListApp | DEBUG] Looking for jupyter_config in /Users/jhamrick/miniconda3/envs/nbgrader/etc/jupyter
[DbStudentListApp | DEBUG] Looking for jupyter_config in /Users/jhamrick/.jupyter
[DbStudentListApp | DEBUG] Looking for jupyter_config in /private/tmp/course101
[DbStudentListApp | DEBUG] Looking for nbgrader_config in /etc/jupyter
[DbStudentListApp | DEBUG] Looking for nbgrader_config in /usr/local/etc/jupyter
[DbStudentListApp | DEBUG] Looking for nbgrader_config in /Users/jhamrick/miniconda3/envs/nbgrader/etc/jupyter
[DbStudentListApp | DEBUG] Looking for nbgrader_config in /Users/jhamrick/.jupyter
[DbStudentListApp | DEBUG] Looking for nbgrader_config in /private/tmp/course101
[DbStudentListApp | DEBUG] Loaded config file: /private/tmp/course101/nbgrader_config.py
[DbStudentListApp | DEBUG] Looking for nbgrader_config in /private/tmp/course101
[DbStudentListApp | DEBUG] Loaded config file: /private/tmp/course101/nbgrader_config.py

I would like to confirm that both the extension and the command line are finding the same config file. Can you find these lines printed out when you use the extension and when you use the command line and paste them here?

jcsutherland commented 7 years ago

Thanks for the tip on the clashing nbgrader installations. I removed it from both and started fresh through anaconda with the python 3.x installation.

I hope that I am providing the information you need. Let me know if you want me to try anything different.

Recipe & Output:

  1. nbgrader quickstart ChEn6703-nbgrader
  2. create a ~/.jupyter/nbgrader_config.py file that has the following contents:
    c = get_config()
    c.CourseDirectory.root = '~/Jupyter/ChEn6703_test_nbgrader'
  3. Launch jupyter notebook --log-level=DEBUG. See below for the output.
  4. Attempt to generate the pre-populated assignment ps1 using the Generate button through Manage Assignments in the browser.
    • This fails, presumably related to issue #867.
  5. Attempt to add a new student.
    • When adding a new student through the Manage Students section of the browser interface, the student is created, but when I navigate away (e.g. to Manage Assignments) and then back to Manage Students it is gone.
    • After manually adding a student in the web interface, I did: nbgrader db student list --log-level=DEBUG which resulted in:
      [DbStudentListApp | DEBUG] Searching ['/Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader', '/Users/james/.jupyter', '/Users/james/anaconda/etc/jupyter', '/usr/local/etc/jupyter', '/etc/jupyter'] for config files
      [DbStudentListApp | DEBUG] Looking for jupyter_config in /etc/jupyter
      [DbStudentListApp | DEBUG] Looking for jupyter_config in /usr/local/etc/jupyter
      [DbStudentListApp | DEBUG] Looking for jupyter_config in /Users/james/anaconda/etc/jupyter
      [DbStudentListApp | DEBUG] Looking for jupyter_config in /Users/james/.jupyter
      [DbStudentListApp | DEBUG] Looking for jupyter_config in /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader
      [DbStudentListApp | DEBUG] Looking for nbgrader_config in /etc/jupyter
      [DbStudentListApp | DEBUG] Looking for nbgrader_config in /usr/local/etc/jupyter
      [DbStudentListApp | DEBUG] Looking for nbgrader_config in /Users/james/anaconda/etc/jupyter
      [DbStudentListApp | DEBUG] Looking for nbgrader_config in /Users/james/.jupyter
      [DbStudentListApp | DEBUG] Loaded config file: /Users/james/.jupyter/nbgrader_config.py
      [DbStudentListApp | DEBUG] Looking for nbgrader_config in /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader
      [DbStudentListApp | DEBUG] Loaded config file: /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/nbgrader_config.py
      [DbStudentListApp | DEBUG] Looking for nbgrader_config in /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader
      [DbStudentListApp | DEBUG] Loaded config file: /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/nbgrader_config.py
      There are 1 students in the database:
      1 (Flinstone, Fred) -- None

Debug trace from launching the notebook:

jamesmac:ChEn6703 james$ jupyter notebook --log-level=DEBUG
[D 09:52:32.027 NotebookApp] Searching ['/Users/james/Google Drive/Teaching/ChEn6703', '/Users/james/.jupyter', '/Users/james/anaconda/etc/jupyter', '/usr/local/etc/jupyter', '/etc/jupyter'] for config files
[D 09:52:32.028 NotebookApp] Looking for jupyter_config in /etc/jupyter
[D 09:52:32.028 NotebookApp] Looking for jupyter_config in /usr/local/etc/jupyter
[D 09:52:32.028 NotebookApp] Looking for jupyter_config in /Users/james/anaconda/etc/jupyter
[D 09:52:32.028 NotebookApp] Looking for jupyter_config in /Users/james/.jupyter
[D 09:52:32.028 NotebookApp] Looking for jupyter_config in /Users/james/Google Drive/Teaching/ChEn6703
[D 09:52:32.029 NotebookApp] Looking for jupyter_notebook_config in /etc/jupyter
[D 09:52:32.029 NotebookApp] Looking for jupyter_notebook_config in /usr/local/etc/jupyter
[D 09:52:32.029 NotebookApp] Looking for jupyter_notebook_config in /Users/james/anaconda/etc/jupyter
[D 09:52:32.029 NotebookApp] Loaded config file: /Users/james/anaconda/etc/jupyter/jupyter_notebook_config.json
[D 09:52:32.030 NotebookApp] Looking for jupyter_notebook_config in /Users/james/.jupyter
[D 09:52:32.030 NotebookApp] Loaded config file: /Users/james/.jupyter/jupyter_notebook_config.py
[D 09:52:32.030 NotebookApp] Loaded config file: /Users/james/.jupyter/jupyter_notebook_config.json
[D 09:52:32.030 NotebookApp] Looking for jupyter_notebook_config in /Users/james/Google Drive/Teaching/ChEn6703
[W 09:52:32.031 NotebookApp] server_extensions is deprecated, use nbserver_extensions
[D 09:52:32.544 NotebookApp] [jupyter_nbextensions_configurator] Loading 0.2.5
[D 09:52:32.544 NotebookApp] [jupyter_nbextensions_configurator]   Editing templates path to add /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/templates
[D 09:52:32.544 NotebookApp] [jupyter_nbextensions_configurator]   Editing nbextensions path to add /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static
[D 09:52:32.544 NotebookApp] [jupyter_nbextensions_configurator]   Adding new handlers
[I 09:52:32.545 NotebookApp] [jupyter_nbextensions_configurator] enabled 0.2.5
[I 09:52:32.755 NotebookApp] Loading the assignment_list nbgrader serverextension
[I 09:52:32.758 NotebookApp] Loading the formgrader nbgrader serverextension
[D 09:52:32.761 NotebookApp] Searching ['/Users/james/Google Drive/Teaching/ChEn6703', '/Users/james/.jupyter', '/Users/james/anaconda/etc/jupyter', '/usr/local/etc/jupyter', '/etc/jupyter'] for config files
[D 09:52:32.762 NotebookApp] Looking for jupyter_config in /etc/jupyter
[D 09:52:32.762 NotebookApp] Looking for jupyter_config in /usr/local/etc/jupyter
[D 09:52:32.762 NotebookApp] Looking for jupyter_config in /Users/james/anaconda/etc/jupyter
[D 09:52:32.762 NotebookApp] Looking for jupyter_config in /Users/james/.jupyter
[D 09:52:32.762 NotebookApp] Looking for jupyter_config in /Users/james/Google Drive/Teaching/ChEn6703
[D 09:52:32.763 NotebookApp] Looking for nbgrader_config in /etc/jupyter
[D 09:52:32.763 NotebookApp] Looking for nbgrader_config in /usr/local/etc/jupyter
[D 09:52:32.763 NotebookApp] Looking for nbgrader_config in /Users/james/anaconda/etc/jupyter
[D 09:52:32.763 NotebookApp] Looking for nbgrader_config in /Users/james/.jupyter
[D 09:52:32.764 NotebookApp] Loaded config file: /Users/james/.jupyter/nbgrader_config.py
[D 09:52:32.764 NotebookApp] Looking for nbgrader_config in /Users/james/Google Drive/Teaching/ChEn6703
[D 09:52:32.765 NotebookApp] Looking for nbgrader_config in /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader
[D 09:52:32.766 NotebookApp] Loaded config file: /Users/james/Google Drive/Teaching/ChEn6703/2017-Fall/ChEn6703-nbgrader/nbgrader_config.py
[I 09:52:32.776 NotebookApp] Loading the validate_assignment nbgrader serverextension
[I 09:52:32.779 NotebookApp] Serving notebooks from local directory: /Users/james/Google Drive/Teaching/ChEn6703
[I 09:52:32.779 NotebookApp] 0 active kernels 
[I 09:52:32.779 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 09:52:32.779 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[85559:35331:0821/095232.985549:ERROR:browser_gpu_channel_host_factory.cc(103)] Failed to launch GPU process.
[D 09:52:33.167 NotebookApp] Using contents: services/contents
[D 09:52:33.203 NotebookApp] Path base/images/favicon.ico served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/base/images/favicon.ico
[D 09:52:33.204 NotebookApp] Path components/jquery-ui/themes/smoothness/jquery-ui.min.css served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/jquery-ui/themes/smoothness/jquery-ui.min.css
[D 09:52:33.204 NotebookApp] Path components/jquery-typeahead/dist/jquery.typeahead.min.css served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/jquery-typeahead/dist/jquery.typeahead.min.css
[D 09:52:33.204 NotebookApp] Path style/style.min.css served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/style/style.min.css
[D 09:52:33.205 NotebookApp] Path components/es6-promise/promise.min.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/es6-promise/promise.min.js
[D 09:52:33.205 NotebookApp] Path components/preact/index.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/preact/index.js
[D 09:52:33.206 NotebookApp] Path components/proptypes/index.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/proptypes/index.js
[D 09:52:33.206 NotebookApp] Path components/preact-compat/index.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/preact-compat/index.js
[D 09:52:33.206 NotebookApp] Path components/requirejs/require.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/requirejs/require.js
[D 09:52:33.207 NotebookApp] Path base/images/logo.png served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/base/images/logo.png
[D 09:52:33.208 NotebookApp] Path tree/js/main.min.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/tree/js/main.min.js
[D 09:52:33.210 NotebookApp] 200 GET /tree (::1) 45.43ms
[D 09:52:33.224 NotebookApp] Path custom.css served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/custom/custom.css
[D 09:52:33.225 NotebookApp] 304 GET /custom/custom.css (::1) 2.52ms
[D 09:52:33.537 NotebookApp] Path services/contents.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/services/contents.js
[D 09:52:33.538 NotebookApp] 200 GET /static/services/contents.js?v=20170821095232 (::1) 0.97ms
[D 09:52:33.563 NotebookApp] 200 GET /api/config/tree?_=1503330753485 (::1) 3.27ms
[D 09:52:33.566 NotebookApp] 200 GET /api/config/common?_=1503330753486 (::1) 3.03ms
[D 09:52:33.575 NotebookApp] 200 GET /api/terminals?_=1503330753487 (::1) 0.73ms
[D 09:52:33.579 NotebookApp] Found kernel python3 in /Users/james/anaconda/share/jupyter/kernels
[D 09:52:33.579 NotebookApp] Found kernel python3 in /Users/james/anaconda/share/jupyter/kernels
[D 09:52:33.582 NotebookApp] 304 GET /api/kernelspecs (::1) 3.95ms
[D 09:52:33.583 NotebookApp] 200 GET /api/terminals?_=1503330753489 (::1) 0.61ms
[D 09:52:33.585 NotebookApp] 200 GET /api/sessions?_=1503330753488 (::1) 1.47ms
[D 09:52:33.722 NotebookApp] 200 GET /api/contents?type=directory&_=1503330753490 (::1) 5.14ms
[D 09:52:33.723 NotebookApp] Path custom.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/custom/custom.js
[D 09:52:33.724 NotebookApp] 200 GET /custom/custom.js?v=20170821095232 (::1) 1.24ms
[D 09:52:33.725 NotebookApp] Path nbextensions_configurator/tree_tab/main.js served from /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static/nbextensions_configurator/tree_tab/main.js
[D 09:52:33.726 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/tree_tab/main.js?v=20170821095232 (::1) 1.32ms
[D 09:52:33.729 NotebookApp] Path formgrader/main.js served from /Users/james/anaconda/share/jupyter/nbextensions/formgrader/main.js
[D 09:52:33.730 NotebookApp] 200 GET /nbextensions/formgrader/main.js?v=20170821095232 (::1) 1.19ms
[D 09:52:33.731 NotebookApp] Path assignment_list/main.js served from /Users/james/anaconda/share/jupyter/nbextensions/assignment_list/main.js
[D 09:52:33.732 NotebookApp] 200 GET /nbextensions/assignment_list/main.js?v=20170821095232 (::1) 1.16ms
[D 09:52:33.778 NotebookApp] Path nbextensions_configurator/main.js served from /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static/nbextensions_configurator/main.js
[D 09:52:33.779 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/main.js?v=20170821095232 (::1) 1.63ms
[D 09:52:33.780 NotebookApp] Path nbextensions_configurator/render/render.js served from /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static/nbextensions_configurator/render/render.js
[D 09:52:33.781 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/render/render.js?v=20170821095232 (::1) 1.67ms
[D 09:52:33.786 NotebookApp] Path assignment_list/assignment_list.js served from /Users/james/anaconda/share/jupyter/nbextensions/assignment_list/assignment_list.js
[D 09:52:33.787 NotebookApp] 200 GET /nbextensions/assignment_list/assignment_list.js?v=20170821095232 (::1) 1.79ms
[D 09:52:33.789 NotebookApp] Path components/jquery-ui/ui/minified/jquery-ui.min.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/jquery-ui/ui/minified/jquery-ui.min.js
[D 09:52:33.791 NotebookApp] 200 GET /static/components/jquery-ui/ui/minified/jquery-ui.min.js?v=20170821095232 (::1) 1.60ms
[D 09:52:33.796 NotebookApp] Path base/js/security.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/base/js/security.js
[D 09:52:33.797 NotebookApp] 200 GET /static/base/js/security.js?v=20170821095232 (::1) 1.58ms
[D 09:52:33.799 NotebookApp] Path notebook/js/codemirror-ipython.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/notebook/js/codemirror-ipython.js
[D 09:52:33.800 NotebookApp] 200 GET /static/notebook/js/codemirror-ipython.js?v=20170821095232 (::1) 1.52ms
[D 09:52:33.801 NotebookApp] Path components/codemirror/mode/gfm/gfm.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/mode/gfm/gfm.js
[D 09:52:33.802 NotebookApp] 200 GET /static/components/codemirror/mode/gfm/gfm.js?v=20170821095232 (::1) 1.30ms
[D 09:52:33.803 NotebookApp] Path components/codemirror/addon/runmode/runmode.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/addon/runmode/runmode.js
[D 09:52:33.804 NotebookApp] 200 GET /static/components/codemirror/addon/runmode/runmode.js?v=20170821095232 (::1) 1.44ms
[D 09:52:33.805 NotebookApp] Path notebook/js/mathjaxutils.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/notebook/js/mathjaxutils.js
[D 09:52:33.806 NotebookApp] 200 GET /static/notebook/js/mathjaxutils.js?v=20170821095232 (::1) 1.61ms
[D 09:52:33.807 NotebookApp] Path components/marked/lib/marked.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/marked/lib/marked.js
[D 09:52:33.808 NotebookApp] 200 GET /static/components/marked/lib/marked.js?v=20170821095232 (::1) 1.59ms
[D 09:52:33.810 NotebookApp] Path notebook/js/codemirror-ipythongfm.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/notebook/js/codemirror-ipythongfm.js
[D 09:52:33.811 NotebookApp] 200 GET /static/notebook/js/codemirror-ipythongfm.js?v=20170821095232 (::1) 1.63ms
[D 09:52:33.812 NotebookApp] Path notebook/js/quickhelp.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/notebook/js/quickhelp.js
[D 09:52:33.813 NotebookApp] 200 GET /static/notebook/js/quickhelp.js?v=20170821095232 (::1) 1.14ms
[D 09:52:33.815 NotebookApp] Path nbextensions_configurator/kse_components.js served from /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static/nbextensions_configurator/kse_components.js
[D 09:52:33.816 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/kse_components.js?v=20170821095232 (::1) 1.95ms
[D 09:52:33.817 NotebookApp] Path assignment_list/assignment_list.css served from /Users/james/anaconda/share/jupyter/nbextensions/assignment_list/assignment_list.css
[D 09:52:33.818 NotebookApp] 304 GET /nbextensions/assignment_list/assignment_list.css (::1) 1.38ms
[D 09:52:33.820 NotebookApp] 200 GET /nbgrader_version?version=0.5.2&_=1503330753491 (::1) 1.08ms
[D 09:52:33.822 NotebookApp] Path components/google-caja/html-css-sanitizer-minified.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/google-caja/html-css-sanitizer-minified.js
[D 09:52:33.823 NotebookApp] 200 GET /static/components/google-caja/html-css-sanitizer-minified.js?v=20170821095232 (::1) 2.12ms
[D 09:52:33.824 NotebookApp] Path components/codemirror/mode/python/python.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/mode/python/python.js
[D 09:52:33.825 NotebookApp] 200 GET /static/components/codemirror/mode/python/python.js?v=20170821095232 (::1) 1.09ms
[D 09:52:33.826 NotebookApp] Path components/codemirror/mode/markdown/markdown.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/mode/markdown/markdown.js
[D 09:52:33.827 NotebookApp] 200 GET /static/components/codemirror/mode/markdown/markdown.js?v=20170821095232 (::1) 1.33ms
[D 09:52:33.828 NotebookApp] Path components/codemirror/addon/mode/overlay.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/addon/mode/overlay.js
[D 09:52:33.829 NotebookApp] 200 GET /static/components/codemirror/addon/mode/overlay.js?v=20170821095232 (::1) 1.14ms
[D 09:52:33.832 NotebookApp] Path components/codemirror/addon/mode/multiplex.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/addon/mode/multiplex.js
[D 09:52:33.833 NotebookApp] 200 GET /static/components/codemirror/addon/mode/multiplex.js?v=20170821095232 (::1) 1.59ms
[D 09:52:33.834 NotebookApp] Path components/codemirror/mode/stex/stex.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/mode/stex/stex.js
[D 09:52:33.835 NotebookApp] 200 GET /static/components/codemirror/mode/stex/stex.js?v=20170821095232 (::1) 1.42ms
[D 09:52:33.859 NotebookApp] Path nbextensions_configurator/quickhelp_shim.js served from /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static/nbextensions_configurator/quickhelp_shim.js
[D 09:52:33.860 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/quickhelp_shim.js?v=20170821095232 (::1) 1.15ms
[D 09:52:33.865 NotebookApp] Path components/codemirror/mode/xml/xml.js served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/codemirror/mode/xml/xml.js
[D 09:52:33.866 NotebookApp] 200 GET /static/components/codemirror/mode/xml/xml.js?v=20170821095232 (::1) 1.11ms
[D 09:52:33.882 NotebookApp] Path nbextensions_configurator/main.css served from /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static/nbextensions_configurator/main.css
[D 09:52:33.883 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/main.css?v=20170821095232 (::1) 1.08ms
[D 09:52:33.884 NotebookApp] Path nbextensions_configurator/render/rendermd.css served from /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static/nbextensions_configurator/render/rendermd.css
[D 09:52:33.884 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/render/rendermd.css?v=20170821095232 (::1) 1.04ms
[D 09:52:33.892 NotebookApp] Path components/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png served from /Users/james/anaconda/lib/python3.6/site-packages/notebook/static/components/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
[D 09:52:33.893 NotebookApp] 304 GET /static/components/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png (::1) 0.80ms
[D 09:52:33.902 NotebookApp] 200 GET /api/config/notebook?_=1503330753492 (::1) 2.82ms
[D 09:52:33.905 NotebookApp] 200 GET /api/config/edit?_=1503330753493 (::1) 2.61ms
[D 09:52:33.908 NotebookApp] 200 GET /api/config/common?_=1503330753495 (::1) 2.05ms
[D 09:52:33.910 NotebookApp] 200 GET /api/config/tree?_=1503330753494 (::1) 2.04ms
[D 09:52:33.916 NotebookApp] [jupyter_nbextensions_configurator] Looking for nbextension yaml descriptor files in /Users/james/Library/Jupyter/nbextensions
[D 09:52:33.917 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'AddBefore' in addbefore/addbefore.yaml
[D 09:52:33.917 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'AutoSaveTime' in autosavetime/autosavetime.yaml
[D 09:52:33.918 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Autoscroll' in autoscroll/autoscroll.yaml
[D 09:52:33.919 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Chrome Clipboard' in chrome-clipboard/chrome-clipboard.yaml
[D 09:52:33.919 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Code Font Size' in code_font_size/code_font_size.yaml
[D 09:52:33.920 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension '2to3 Converter' in code_prettify/2to3.yaml
[D 09:52:33.921 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Autopep8' in code_prettify/autopep8.yaml
[D 09:52:33.923 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Code prettify' in code_prettify/code_prettify.yaml
[D 09:52:33.924 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Codefolding' in codefolding/codefolding.yaml
[D 09:52:33.924 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Codefolding in Editor' in codefolding/codefolding_editor.yaml
[D 09:52:33.925 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'CodeMirror mode extensions' in codemirror_mode_extensions/codemirror_mode_extensions.yaml
[D 09:52:33.927 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Collapsible Headings' in collapsible_headings/collapsible_headings.yaml
[D 09:52:33.927 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Comment/Uncomment Hotkey' in comment-uncomment/comment-uncomment.yaml
[D 09:52:33.928 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'contrib_nbextensions_help_item' in contrib_nbextensions_help_item/contrib_nbextensions_help_item.yaml
[D 09:52:33.928 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'datestamper' in datestamper/main.yaml
[D 09:52:33.929 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Drag and Drop' in dragdrop/dragdrop.yaml
[D 09:52:33.929 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Equation Auto Numbering' in equation-numbering/info.yaml
[D 09:52:33.930 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'ExecuteTime' in execute_time/ExecuteTime.yaml
[D 09:52:33.931 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Exercise' in exercise/exercise.yaml
[D 09:52:33.931 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Exercise2' in exercise2/exercise2.yaml
[D 09:52:33.932 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Freeze' in freeze/config.yaml
[D 09:52:33.932 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Gist-it' in gist_it/gist_it.yaml
[D 09:52:33.933 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Help panel' in help_panel/help_panel.yaml
[D 09:52:33.933 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Hide Header' in hide_header/hide_header.yaml
[D 09:52:33.934 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Hide input' in hide_input/hide-input.yaml
[D 09:52:33.934 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Hide input all' in hide_input_all/hide_input_all.yaml
[D 09:52:33.935 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Highlight selected word' in highlight_selected_word/configurator.yaml
[D 09:52:33.936 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'highlighter' in highlighter/highlighter.yaml
[D 09:52:33.937 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Hinterland' in hinterland/hinterland.yaml
[D 09:52:33.937 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Initialization cells' in init_cell/init_cell.yaml
[D 09:52:33.938 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Keyboard shortcut editor' in keyboard_shortcut_editor/keyboard_shortcut_editor.yaml
[D 09:52:33.939 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension '(some) LaTeX environments for Jupyter' in latex_envs/latex_envs.yaml
[D 09:52:33.939 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Limit Output' in limit_output/limit-output.yaml
[D 09:52:33.940 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Move selected cells' in move_selected_cells/move_selected_cells.yaml
[D 09:52:33.940 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Navigation-Hotkeys' in navigation-hotkeys/hotkeys.yaml
[D 09:52:33.941 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Lynter' in nb_lynt/nb_lynt.yaml
[D 09:52:33.942 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'nbTranslate' in nbTranslate/nbTranslate.yaml
[D 09:52:33.942 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Notify' in notify/notify.yaml
[D 09:52:33.943 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Printview' in printview/printview.yaml
[D 09:52:33.943 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Python Markdown' in python-markdown/python-markdown.yaml
[D 09:52:33.944 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Launch QTConsole' in qtconsole/qtconsole.yaml
[D 09:52:33.944 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Rubberband' in rubberband/rubberband.yaml
[D 09:52:33.945 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Ruler' in ruler/ruler.yaml
[D 09:52:33.945 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Runtools' in runtools/runtools.yaml
[D 09:52:33.946 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Scratchpad' in scratchpad/scratchpad.yaml
[D 09:52:33.946 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'ScrollDown' in scroll_down/config.yaml
[D 09:52:33.946 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Search-Replace' in search-replace/search-replace.yaml
[D 09:52:33.947 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Select CodeMirror Keymap' in select_keymap/select_keymap.yaml
[D 09:52:33.947 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'SKILL Syntax' in skill/skill.yaml
[D 09:52:33.948 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Skip-Traceback' in skip-traceback/skip-traceback.yaml
[D 09:52:33.948 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Snippets' in snippets/snippets.yaml
[D 09:52:33.950 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Snippets Menu' in snippets_menu/config.yaml
[D 09:52:33.951 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'spellchecker' in spellchecker/config.yaml
[D 09:52:33.951 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Split Cells Notebook' in splitcell/splitcell.yaml
[D 09:52:33.951 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'table_beautifier' in table_beautifier/table_beautifier.yaml
[D 09:52:33.953 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Table of Contents (2)' in toc2/toc2.yaml
[D 09:52:33.953 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Toggle all line numbers' in toggle_all_line_numbers/main.yaml
[D 09:52:33.954 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Tree Filter' in tree-filter/tree-filter.yaml
[D 09:52:33.954 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Variable Inspector' in varInspector/varInspector.yaml
[D 09:52:33.955 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'zenmode' in zenmode/zenmode.yaml
[D 09:52:33.955 NotebookApp] [jupyter_nbextensions_configurator] Looking for nbextension yaml descriptor files in /Users/james/anaconda/share/jupyter/nbextensions
[W 09:52:33.956 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'addbefore/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/addbefore/addbefore.yaml' and '/Users/james/Library/Jupyter/nbextensions/addbefore/addbefore.yaml'
[W 09:52:33.956 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'autosavetime/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/autosavetime/autosavetime.yaml' and '/Users/james/Library/Jupyter/nbextensions/autosavetime/autosavetime.yaml'
[W 09:52:33.957 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'autoscroll/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/autoscroll/autoscroll.yaml' and '/Users/james/Library/Jupyter/nbextensions/autoscroll/autoscroll.yaml'
[W 09:52:33.957 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'chrome-clipboard/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/chrome-clipboard/chrome-clipboard.yaml' and '/Users/james/Library/Jupyter/nbextensions/chrome-clipboard/chrome-clipboard.yaml'
[W 09:52:33.958 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'code_font_size/code_font_size' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/code_font_size/code_font_size.yaml' and '/Users/james/Library/Jupyter/nbextensions/code_font_size/code_font_size.yaml'
[W 09:52:33.959 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'code_prettify/2to3' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/code_prettify/2to3.yaml' and '/Users/james/Library/Jupyter/nbextensions/code_prettify/2to3.yaml'
[W 09:52:33.959 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'code_prettify/autopep8' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/code_prettify/autopep8.yaml' and '/Users/james/Library/Jupyter/nbextensions/code_prettify/autopep8.yaml'
[W 09:52:33.960 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'code_prettify/code_prettify' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/code_prettify/code_prettify.yaml' and '/Users/james/Library/Jupyter/nbextensions/code_prettify/code_prettify.yaml'
[W 09:52:33.961 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'codefolding/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/codefolding/codefolding.yaml' and '/Users/james/Library/Jupyter/nbextensions/codefolding/codefolding.yaml'
[W 09:52:33.961 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'codefolding/edit' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/codefolding/codefolding_editor.yaml' and '/Users/james/Library/Jupyter/nbextensions/codefolding/codefolding_editor.yaml'
[W 09:52:33.962 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'codemirror_mode_extensions/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/codemirror_mode_extensions/codemirror_mode_extensions.yaml' and '/Users/james/Library/Jupyter/nbextensions/codemirror_mode_extensions/codemirror_mode_extensions.yaml'
[W 09:52:33.963 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'collapsible_headings/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/collapsible_headings/collapsible_headings.yaml' and '/Users/james/Library/Jupyter/nbextensions/collapsible_headings/collapsible_headings.yaml'
[W 09:52:33.964 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'comment-uncomment/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/comment-uncomment/comment-uncomment.yaml' and '/Users/james/Library/Jupyter/nbextensions/comment-uncomment/comment-uncomment.yaml'
[W 09:52:33.964 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'contrib_nbextensions_help_item/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/contrib_nbextensions_help_item/contrib_nbextensions_help_item.yaml' and '/Users/james/Library/Jupyter/nbextensions/contrib_nbextensions_help_item/contrib_nbextensions_help_item.yaml'
[W 09:52:33.964 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'datestamper/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/datestamper/main.yaml' and '/Users/james/Library/Jupyter/nbextensions/datestamper/main.yaml'
[W 09:52:33.965 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'dragdrop/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/dragdrop/dragdrop.yaml' and '/Users/james/Library/Jupyter/nbextensions/dragdrop/dragdrop.yaml'
[W 09:52:33.965 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'equation-numbering/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/equation-numbering/info.yaml' and '/Users/james/Library/Jupyter/nbextensions/equation-numbering/info.yaml'
[W 09:52:33.966 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'execute_time/ExecuteTime' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/execute_time/ExecuteTime.yaml' and '/Users/james/Library/Jupyter/nbextensions/execute_time/ExecuteTime.yaml'
[W 09:52:33.967 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'exercise/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/exercise/exercise.yaml' and '/Users/james/Library/Jupyter/nbextensions/exercise/exercise.yaml'
[W 09:52:33.967 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'exercise2/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/exercise2/exercise2.yaml' and '/Users/james/Library/Jupyter/nbextensions/exercise2/exercise2.yaml'
[W 09:52:33.968 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'freeze/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/freeze/config.yaml' and '/Users/james/Library/Jupyter/nbextensions/freeze/config.yaml'
[W 09:52:33.968 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'gist_it/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/gist_it/gist_it.yaml' and '/Users/james/Library/Jupyter/nbextensions/gist_it/gist_it.yaml'
[W 09:52:33.968 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'help_panel/help_panel' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/help_panel/help_panel.yaml' and '/Users/james/Library/Jupyter/nbextensions/help_panel/help_panel.yaml'
[W 09:52:33.969 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'hide_header/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/hide_header/hide_header.yaml' and '/Users/james/Library/Jupyter/nbextensions/hide_header/hide_header.yaml'
[W 09:52:33.969 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'hide_input/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/hide_input/hide-input.yaml' and '/Users/james/Library/Jupyter/nbextensions/hide_input/hide-input.yaml'
[W 09:52:33.970 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'hide_input_all/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/hide_input_all/hide_input_all.yaml' and '/Users/james/Library/Jupyter/nbextensions/hide_input_all/hide_input_all.yaml'
[W 09:52:33.971 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'highlight_selected_word/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/highlight_selected_word/configurator.yaml' and '/Users/james/Library/Jupyter/nbextensions/highlight_selected_word/configurator.yaml'
[W 09:52:33.971 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'highlighter/highlighter' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/highlighter/highlighter.yaml' and '/Users/james/Library/Jupyter/nbextensions/highlighter/highlighter.yaml'
[W 09:52:33.972 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'hinterland/hinterland' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/hinterland/hinterland.yaml' and '/Users/james/Library/Jupyter/nbextensions/hinterland/hinterland.yaml'
[W 09:52:33.972 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'init_cell/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/init_cell/init_cell.yaml' and '/Users/james/Library/Jupyter/nbextensions/init_cell/init_cell.yaml'
[W 09:52:33.973 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'keyboard_shortcut_editor/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/keyboard_shortcut_editor/keyboard_shortcut_editor.yaml' and '/Users/james/Library/Jupyter/nbextensions/keyboard_shortcut_editor/keyboard_shortcut_editor.yaml'
[W 09:52:33.974 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'latex_envs/latex_envs' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/latex_envs/latex_envs.yaml' and '/Users/james/Library/Jupyter/nbextensions/latex_envs/latex_envs.yaml'
[W 09:52:33.975 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'limit_output/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/limit_output/limit-output.yaml' and '/Users/james/Library/Jupyter/nbextensions/limit_output/limit-output.yaml'
[W 09:52:33.975 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'move_selected_cells/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/move_selected_cells/move_selected_cells.yaml' and '/Users/james/Library/Jupyter/nbextensions/move_selected_cells/move_selected_cells.yaml'
[W 09:52:33.975 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'navigation-hotkeys/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/navigation-hotkeys/hotkeys.yaml' and '/Users/james/Library/Jupyter/nbextensions/navigation-hotkeys/hotkeys.yaml'
[W 09:52:33.976 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'nbTranslate/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/nbTranslate/nbTranslate.yaml' and '/Users/james/Library/Jupyter/nbextensions/nbTranslate/nbTranslate.yaml'
[W 09:52:33.977 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'notify/notify' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/notify/notify.yaml' and '/Users/james/Library/Jupyter/nbextensions/notify/notify.yaml'
[W 09:52:33.977 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'printview/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/printview/printview.yaml' and '/Users/james/Library/Jupyter/nbextensions/printview/printview.yaml'
[W 09:52:33.978 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'python-markdown/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/python-markdown/python-markdown.yaml' and '/Users/james/Library/Jupyter/nbextensions/python-markdown/python-markdown.yaml'
[W 09:52:33.978 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'qtconsole/qtconsole' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/qtconsole/qtconsole.yaml' and '/Users/james/Library/Jupyter/nbextensions/qtconsole/qtconsole.yaml'
[W 09:52:33.978 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'rubberband/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/rubberband/rubberband.yaml' and '/Users/james/Library/Jupyter/nbextensions/rubberband/rubberband.yaml'
[W 09:52:33.979 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'ruler/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/ruler/ruler.yaml' and '/Users/james/Library/Jupyter/nbextensions/ruler/ruler.yaml'
[W 09:52:33.979 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'runtools/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/runtools/runtools.yaml' and '/Users/james/Library/Jupyter/nbextensions/runtools/runtools.yaml'
[W 09:52:33.980 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'scratchpad/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/scratchpad/scratchpad.yaml' and '/Users/james/Library/Jupyter/nbextensions/scratchpad/scratchpad.yaml'
[W 09:52:33.980 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'scroll_down/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/scroll_down/config.yaml' and '/Users/james/Library/Jupyter/nbextensions/scroll_down/config.yaml'
[W 09:52:33.981 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'search-replace/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/search-replace/search-replace.yaml' and '/Users/james/Library/Jupyter/nbextensions/search-replace/search-replace.yaml'
[W 09:52:33.982 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'select_keymap/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/select_keymap/select_keymap.yaml' and '/Users/james/Library/Jupyter/nbextensions/select_keymap/select_keymap.yaml'
[W 09:52:33.982 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'skill/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/skill/skill.yaml' and '/Users/james/Library/Jupyter/nbextensions/skill/skill.yaml'
[W 09:52:33.983 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'skip-traceback/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/skip-traceback/skip-traceback.yaml' and '/Users/james/Library/Jupyter/nbextensions/skip-traceback/skip-traceback.yaml'
[W 09:52:33.983 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'snippets/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/snippets/snippets.yaml' and '/Users/james/Library/Jupyter/nbextensions/snippets/snippets.yaml'
[W 09:52:33.985 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'snippets_menu/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/snippets_menu/config.yaml' and '/Users/james/Library/Jupyter/nbextensions/snippets_menu/config.yaml'
[W 09:52:33.985 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'spellchecker/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/spellchecker/config.yaml' and '/Users/james/Library/Jupyter/nbextensions/spellchecker/config.yaml'
[W 09:52:33.986 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'splitcell/splitcell' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/splitcell/splitcell.yaml' and '/Users/james/Library/Jupyter/nbextensions/splitcell/splitcell.yaml'
[W 09:52:33.986 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'table_beautifier/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/table_beautifier/table_beautifier.yaml' and '/Users/james/Library/Jupyter/nbextensions/table_beautifier/table_beautifier.yaml'
[W 09:52:33.988 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'toc2/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/toc2/toc2.yaml' and '/Users/james/Library/Jupyter/nbextensions/toc2/toc2.yaml'
[W 09:52:33.988 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'toggle_all_line_numbers/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/toggle_all_line_numbers/main.yaml' and '/Users/james/Library/Jupyter/nbextensions/toggle_all_line_numbers/main.yaml'
[W 09:52:33.989 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'tree-filter/index' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/tree-filter/tree-filter.yaml' and '/Users/james/Library/Jupyter/nbextensions/tree-filter/tree-filter.yaml'
[W 09:52:33.989 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'varInspector/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/varInspector/varInspector.yaml' and '/Users/james/Library/Jupyter/nbextensions/varInspector/varInspector.yaml'
[W 09:52:33.990 NotebookApp] [jupyter_nbextensions_configurator] nbextension 'zenmode/main' has duplicate listings in both '/Users/james/anaconda/share/jupyter/nbextensions/zenmode/zenmode.yaml' and '/Users/james/Library/Jupyter/nbextensions/zenmode/zenmode.yaml'
[D 09:52:33.990 NotebookApp] [jupyter_nbextensions_configurator] Looking for nbextension yaml descriptor files in /usr/local/share/jupyter/nbextensions
[D 09:52:33.990 NotebookApp] [jupyter_nbextensions_configurator] Looking for nbextension yaml descriptor files in /usr/share/jupyter/nbextensions
[D 09:52:33.990 NotebookApp] [jupyter_nbextensions_configurator] Looking for nbextension yaml descriptor files in /Users/james/.ipython/nbextensions
[D 09:52:33.990 NotebookApp] [jupyter_nbextensions_configurator] Looking for nbextension yaml descriptor files in /Users/james/anaconda/lib/python3.6/site-packages/jupyter_nbextensions_configurator/static
[D 09:52:33.991 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Nbextensions edit menu item' in nbextensions_configurator/config_menu/config_menu.yaml
[D 09:52:33.991 NotebookApp] [jupyter_nbextensions_configurator] Found nbextension 'Nbextensions dashboard tab' in nbextensions_configurator/tree_tab/tree_tab.yaml
[D 09:52:33.992 NotebookApp] 200 GET /nbextensions/nbextensions_configurator/list?_=1503330753496 (::1) 76.94ms
[D 09:52:34.027 NotebookApp] Path zenmode/README.md served from /Users/james/Library/Jupyter/nbextensions/zenmode/README.md
[D 09:52:34.027 NotebookApp] 304 GET /nbextensions/zenmode/README.md (::1) 0.76ms
jhamrick commented 7 years ago

This is really, really strange. It sounds like it's successfully adding the student to the database, because you can see the student with nbgrader db student list after adding it through the web interface. But then, the web interface doesn't see it? I wonder if this could potentially be a bug in the API code. Could you try running the following code from the command line, in the root of the course directory?

from nbgrader.api import Gradebook

with Gradebook("sqlite:///gradebook.db") as gb:
    print("Students:")
    print(gb.students)

    print("--")
    print("Student dictionaries (list comp):")
    print([s.to_dict() for s in gb.students])

    print("--")
    print("Student dictionaries (query):")
    print(gb.student_dicts())
jcsutherland commented 7 years ago

Alright. I put your script into gb.py. Here is the result from running it within my class directory:

Jamess-MBP:ChEn6703-nbgrader james$ python gb.py 
Students:
[Student<1>]
--
Student dictionaries (list comp):
[{'id': '1', 'first_name': 'Fred', 'last_name': 'Flinstone', 'email': None, 'score': 0.0, 'max_score': 0.0}]
--
Student dictionaries (query):
[]

Is it possible that generating the assignment may have something to do with the web view being corrupted?

jhamrick commented 7 years ago

Ah, progress! There does indeed seem to be something going wrong with either the database or the API.

I still can't reproduce it, but maybe you could send me your gradebook.db and I can try to investigate locally?

(Also, just as a heads up: I'm leaving for vacation on Monday and will be away for six weeks without computer access, so will try to work to figure this out before then)

jcsutherland commented 7 years ago

Here is a link to download a zip file of the course directory.

Thanks for your attentiveness to this! I am hopeful that several faculty in our department may start using this in the future if we can get it working robustly!

jhamrick commented 7 years ago

Aha! Thanks for sending that. I can now reproduce the bug! 😄 Steps to reproduce:

  1. Create an empty directory (not with nbgrader quickstart)
  2. Add an assignment through the formgrader but do not add any notebooks to it
  3. Add a student through the formgrader
  4. Refresh the page, and the student will be missing

Now to investigate the fix.

jhamrick commented 7 years ago

Hooray, I figured it out 😄

The underlying issue was that Gradebook.student_dicts() was returning an empty list, even though the students did in fact exist in the database. This is a edgecase that only seems to occur when there are assignments in the database, but they have a combined zero points. A workaround for the issue is to make sure there is at least one assignment with nonzero points. I have also submitted a PR #873 that properly fixes it.

jcsutherland commented 7 years ago

Hmm - the zip file I passed along had two assignments (generated via the quickstart command) which had points associated with various problems in them.

So might there be another issue here?

jhamrick commented 7 years ago

They had points associated with them, but the points weren't in the database yet---if you were to generate the student version of the assignment (which then sets the points in the database), then the students should appear.

jcsutherland commented 7 years ago

Gotcha. Thanks. Any idea when the next release of nbgrader will be (which will presumably have these bug fixes in it)?

jhamrick commented 7 years ago

I just made a release (0.5.3) that includes some of the fixes (including #867); it won't include #873 unfortunately, though, which will probably make it into 0.6.0. I was planning to release that after the fall semester.