##// END OF EJS Templates
change default behavior of database task storage...
change default behavior of database task storage The previous default behavior was to create a new table (sqlite) / database (mongodb) for each Hub instance, so that task history would not be shared by subsequent IPython sessions. I don't think this was the right choice, so this PR switches the default behavior to use the table / database `ipython-tasks`. The result is that all Hub sessions in a given profile will share history by default, which makes the benefit of the db backends clearer. Configurable behavior remains the same, only the default is changed.

File last commit:

r12221:017ada76
r12255:8683a413
Show More
coalescestreams.py
75 lines | 2.4 KiB | text/x-python | PythonLexer
"""Module that allows latex output notebooks to be conditioned before
they are converted. Exposes a decorator (@cell_preprocessor) in
addition to the coalesce_streams pre-proccessor.
"""
#-----------------------------------------------------------------------------
# Copyright (c) 2013, the IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Functions
#-----------------------------------------------------------------------------
def cell_preprocessor(function):
"""
Wrap a function to be executed on all cells of a notebook
Wrapped Parameters
----------
cell : NotebookNode cell
Notebook cell being processed
resources : dictionary
Additional resources used in the conversion process. Allows
preprocessors to pass variables into the Jinja engine.
index : int
Index of the cell being processed
"""
def wrappedfunc(nb, resources):
for worksheet in nb.worksheets :
for index, cell in enumerate(worksheet.cells):
worksheet.cells[index], resources = function(cell, resources, index)
return nb, resources
return wrappedfunc
@cell_preprocessor
def coalesce_streams(cell, resources, index):
"""
Merge consecutive sequences of stream output into single stream
to prevent extra newlines inserted at flush calls
Parameters
----------
cell : NotebookNode cell
Notebook cell being processed
resources : dictionary
Additional resources used in the conversion process. Allows
transformers to pass variables into the Jinja engine.
index : int
Index of the cell being processed
"""
outputs = cell.get('outputs', [])
if not outputs:
return cell, resources
last = outputs[0]
new_outputs = [last]
for output in outputs[1:]:
if (output.output_type == 'stream' and
last.output_type == 'stream' and
last.stream == output.stream
):
last.text += output.text
else:
new_outputs.append(output)
last = output
cell.outputs = new_outputs
return cell, resources