Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def matplotlib_notebook(tmpdir, request):
nb = nbformat.v4.new_notebook()
nb.cells.append(nbformat.v4.new_code_cell('\n'.join(
['import numpy as np',
'import matplotlib.pyplot as plt',
'% matplotlib inline'])))
for _ in range(request.param):
nb.cells.append(nbformat.v4.new_code_cell('\n'.join(
['plt.figure(dpi=100)',
'plt.plot(np.linspace(0, 1), np.power(np.linspace(0, 1), 2))',
'plt.show()'])))
ep = ExecutePreprocessor()
ep.preprocess(nb, {'metadata': {'path': tmpdir}})
return nb
'''Assigned parameters into the appropiate place in the input notebook
Args:
nb (NotebookNode): Executable notebook object
parameters (dict): Arbitrary keyword arguments to pass to the notebook parameters.
'''
check.dict_param(parameters, 'parameters')
# Copy the nb object to avoid polluting the input
nb = copy.deepcopy(nb)
# papermill method chooses translator based on kernel_name and language, but we just call the
# DagsterTranslator to generate parameter content based on the kernel_name
param_content = DagsterTranslator.codify(parameters)
newcell = nbformat.v4.new_code_cell(source=param_content)
newcell.metadata['tags'] = ['injected-parameters']
param_cell_index = _find_first_tagged_cell_index(nb, 'parameters')
injected_cell_index = _find_first_tagged_cell_index(nb, 'injected-parameters')
if injected_cell_index >= 0:
# Replace the injected cell with a new version
before = nb.cells[:injected_cell_index]
after = nb.cells[injected_cell_index + 1 :]
check.int_value_param(param_cell_index, -1, 'param_cell_index')
# We should have blown away the parameters cell if there is an injected-parameters cell
elif param_cell_index >= 0:
# Replace the parameter cell with the injected-parameters cell
before = nb.cells[:param_cell_index]
after = nb.cells[param_cell_index + 1 :]
else:
# Inject to the top of the notebook, presumably first cell includes dagstermill import
def save_notebook(workflow, path):
nb = nbf.v4.new_notebook()
# todo serialize here
header = dedent("""\
from cytoflow import *
%matplotlib inline""")
nb['cells'].append(nbf.v4.new_code_cell(header))
for i, wi in enumerate(workflow):
try:
code = wi.operation.get_notebook_code(i)
code = FormatCode(code, style_config = 'pep8')[0]
except:
error(parent = None,
message = "Had trouble serializing the {} operation"
.format(wi.operation.friendly_id))
def flow_write_open_notebook(flow, options):
"""
Generate an ipython notebook and open it in the browser.
Return system exit code.
"""
import nbformat
nbf = nbformat.v4
nb = nbf.new_notebook()
nb.cells.extend([
#nbf.new_markdown_cell("This is an auto-generated notebook for %s" % os.path.basename(pseudopath)),
nbf.new_code_cell("""\
from __future__ import print_function, division, unicode_literals, absolute_import
import sys, os
import numpy as np
%matplotlib notebook
from IPython.display import display
# This to render pandas DataFrames with https://github.com/quantopian/qgrid
#import qgrid
#qgrid.nbinstall(overwrite=True) # copies javascript dependencies to your /nbextensions folder
reload({module})
run({module}.{test_suite}("{test}"))'''
PRACTICE_TEMPLATE_1 = '''### Exercise {num}
{exercise}'''
PRACTICE_TEMPLATE_2 = '''# Exercise {num}
{hints}'''
for chapter in range(1, 13):
notebook = nbformat.v4.new_notebook()
if chapter < 10:
path = 'code-ch0{}'.format(chapter)
else:
path = 'code-ch{}'.format(chapter)
with open('{}/examples.py'.format(path), 'r') as f:
examples = {}
current = ''
current_key = None
capture = False
for line in f:
if line.startswith('>>>') or line.startswith('...'):
if line.endswith('\\\n'):
current += line[4:-2]
capture = True
else:
current += line[4:]
def notebook(self):
from nbformat import v4 as nbf
nb = nbf.new_notebook()
text = ''
# get the expe
# get the script
# get the figure
code = ''
nb['cells'] = [nbf.new_markdown_cell(text),
nbf.new_code_cell(code)]
return
def add_markdown_cell(self, slide_type="slide", title=False):
"""split a markdown cell here
* add the slideshow metadata
* append `markdown_lines` to notebook
* reset `markdown_lines`
"""
line_text = "".join(self.cell)
formatted_line_text = self.strip_blank_lines_in_end_of_block(line_text)
slide_info = {'slide_type': self.slide}
if len(formatted_line_text.strip()) > 0:
new_md_cell = nbformat.v4.new_markdown_cell(formatted_line_text)
if self.metadata_slide: # modify the slide metadata on each cell
new_md_cell.metadata["slideshow"] = slide_info
self.slide = slide_type
if title:
new_md_cell.metadata["hide-input"] = True
self.cell_type = "markdown"
self.output.add_cell(new_md_cell, self.cell_type)
self.cell = []
def add_markdown_cell(self, slide_type="slide", title=False):
"""split a markdown cell here
* add the slideshow metadata
* append `markdown_lines` to notebook
* reset `markdown_lines`
"""
line_text = "".join(self.cell)
formatted_line_text = self.strip_blank_lines_in_end_of_block(line_text)
slide_info = {'slide_type': self.slide}
if len(formatted_line_text.strip()) > 0:
new_md_cell = nbformat.v4.new_markdown_cell(formatted_line_text)
if self.metadata_slide: # modify the slide metadata on each cell
new_md_cell.metadata["slideshow"] = slide_info
self.slide = slide_type
if title:
new_md_cell.metadata["hide-input"] = True
self.cell_type = "markdown"
self.output.add_cell(new_md_cell, self.cell_type)
self.new_cell()