Skip to content

Bug with "Raw NBConvert" cell #921

@kf71

Description

@kf71

Operating system

Ubuntu 16.04.3 LTS

nbgrader --version

0.5.1

jupyterhub --version (if used with JupyterHub)

0.8.1

jupyter notebook --version

5.2.2

When trying to generate an assignment with a notebook containing a "Raw NBConvert" cell, I get the following error:

===================

[INFO] Updating/creating assignment 'test_python_raw': {}
[INFO] Converting notebook /home/xxxx/source/./test_python_raw/test_python.ipynb
[ERROR] There was an error processing assignment: /home/xxxx/source/./test_python_raw
[ERROR] Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/nbgrader/api.py", line 1674, in find_source_cell
.filter(SourceCell.name == name, Notebook.name == notebook, Assignment.name == assignment)
File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/query.py", line 2843, in one
raise orm_exc.NoResultFound("No row was found for one()")
sqlalchemy.orm.exc.NoResultFound: No row was found for one()

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/api.py", line 1703, in update_or_create_source_cell
    source_cell = self.find_source_cell(name, notebook, assignment)
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/api.py", line 1677, in find_source_cell
    raise MissingEntry("No such source cell: {}/{}/{}".format(assignment, notebook, name))
nbgrader.api.MissingEntry: No such source cell: test_python_raw/test_python/cell-4357cb391b6565e5

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
    context)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/default.py", line 507, in do_execute
    cursor.execute(statement, parameters)
sqlite3.IntegrityError: CHECK constraint failed: source_cell_type

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/api.py", line 1646, in add_source_cell
    self.db.commit()
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/scoping.py", line 153, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/session.py", line 937, in commit
    self.transaction.commit()
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/session.py", line 461, in commit
    self._prepare_impl()
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/session.py", line 441, in _prepare_impl
    self.session.flush()
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/session.py", line 2237, in flush
    self._flush(objects)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/session.py", line 2363, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/compat.py", line 187, in reraise
    raise value
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/session.py", line 2327, in _flush
    flush_context.execute()
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/unitofwork.py", line 391, in execute
    rec.execute(self)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/unitofwork.py", line 556, in execute
    uow
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
    mapper, table, insert)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/persistence.py", line 866, in _emit_insert_statements
    execute(statement, params)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/base.py", line 948, in execute
    return meth(self, multiparams, params)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
    context)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/compat.py", line 186, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
    context)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/default.py", line 507, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) CHECK constraint failed: source_cell_type [SQL: 'INSERT INTO source_cell (id, name, cell_type, locked, source, checksum, notebook_id) VALUES (?, ?, ?, ?, ?, ?, ?)'] [parameters: ('b13cc42dd4bf43b6af7f50914c891d26', 'cell-4357cb391b6565e5', 'raw', 1, 'def f(x):\n    solution=2\n    return solution', 'd44cbd43b668532e37118b4ad667ff41', '3e3ae111b5dc47089f713f9d390ff4fc')] (Background on this error at: http://sqlalche.me/e/gkpj)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/converters/base.py", line 293, in convert_notebooks
    self.convert_single_notebook(notebook_filename)
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/converters/base.py", line 249, 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 174, in from_filename
    return self.from_file(f, resources=resources, **kw)
  File "/usr/local/lib/python3.5/dist-packages/nbconvert/exporters/exporter.py", line 192, 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 134, 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 311, 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/savecells.py", line 87, in preprocess
    self._create_notebook(nb)
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/preprocessors/savecells.py", line 61, in _create_notebook
    source_cell = self.gradebook.update_or_create_source_cell(name, self.notebook_id, self.assignment_id, **info)
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/api.py", line 1705, in update_or_create_source_cell
    source_cell = self.add_source_cell(name, notebook, assignment, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/nbgrader/api.py", line 1649, in add_source_cell
    raise InvalidEntry(*e.args)
nbgrader.api.InvalidEntry: (sqlite3.IntegrityError) CHECK constraint failed: source_cell_type

[ERROR] There was an error processing assignment 'test_python_raw' for student '.'
[ERROR] Please see the the above traceback for details on the specific errors on the above failures.

=================================

It is not a serious problem. I convert the cell to "Markdown" with pre /pre tag and everything is OK.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions