def test_develop_error_if_r_notebook(tmp_sample_tasks): dag = DAG() t = NotebookRunner(Path('sample.R'), product=File('out.ipynb'), dag=dag) dag.render() with pytest.raises(NotImplementedError): t.develop() with pytest.raises(NotImplementedError): t.debug()
def test_develop_workflow_with_hot_reload(tmp_directory, monkeypatch): cfg = DAGConfigurator() cfg.params.hot_reload = True dag = cfg.create() code = """ # + tags=["parameters"] var = None # + 1 + 1 """ p = Path('some_notebook.py') p.write_text(code) t = NotebookRunner(p, product=File(Path(tmp_directory, 'out.ipynb')), dag=dag, kernelspec_name='python3', params={'var': 1}, name='nb') def mock_jupyter_notebook(args, check): nb = jupytext.reads(""" # + tags=["parameters"] var = None # + 2 + 2 """, fmt='py') # args: "jupyter" {app} {path} {others, ...} nbformat.write(nb, args[2]) dag.render() monkeypatch.setattr(notebook.subprocess, 'run', mock_jupyter_notebook) monkeypatch.setattr(notebook, '_save', lambda: True) t.develop() # source code must be updated assert '2 + 2' in str(t.source).strip() nb = nbformat.reads(t.source.nb_str_rendered, as_version=nbformat.NO_CONVERT) source = jupytext.writes(nb, fmt='py') assert '2 + 2' in source