def test_combine(): nb_source = new_notebook(cells=[ new_markdown_cell('Markdown text'), new_code_cell('a=3'), new_code_cell('a+1'), new_code_cell('a+1'), new_markdown_cell('Markdown text'), new_code_cell('a+2') ]) nb_outputs = new_notebook(cells=[ new_markdown_cell('Markdown text'), new_code_cell('a=3'), new_code_cell('a+1'), new_code_cell('a+2'), new_markdown_cell('Markdown text') ]) nb_outputs.cells[2].outputs = ['4'] nb_outputs.cells[3].outputs = ['5'] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[2].outputs == ['4'] assert nb_source.cells[3].outputs == [] assert nb_source.cells[5].outputs == ['5']
def test_combine(): nb_source = new_notebook(cells=[ new_markdown_cell("Markdown text"), new_code_cell("a=3"), new_code_cell("a+1"), new_code_cell("a+1"), new_markdown_cell("Markdown text"), new_code_cell("a+2"), ]) nb_outputs = new_notebook(cells=[ new_markdown_cell("Markdown text"), new_code_cell("a=3"), new_code_cell("a+1"), new_code_cell("a+2"), new_markdown_cell("Markdown text"), ]) nb_outputs.cells[2].outputs = ["4"] nb_outputs.cells[3].outputs = ["5"] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[2].outputs == ["4"] assert nb_source.cells[3].outputs == [] assert nb_source.cells[5].outputs == ["5"]
def test_combine_reorder(): nb_source = new_notebook(cells=[ new_markdown_cell('Markdown text'), new_code_cell('1+1'), new_code_cell('2+2'), new_code_cell('3+3'), new_markdown_cell('Markdown text'), new_code_cell('4+4') ]) nb_outputs = new_notebook(cells=[ new_markdown_cell('Markdown text'), new_code_cell('2+2'), new_code_cell('4+4'), new_code_cell('1+1'), new_code_cell('3+3'), new_markdown_cell('Markdown text') ]) nb_outputs.cells[1].outputs = ['4'] nb_outputs.cells[2].outputs = ['8'] nb_outputs.cells[3].outputs = ['2'] nb_outputs.cells[4].outputs = ['6'] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[1].outputs == ['2'] assert nb_source.cells[2].outputs == ['4'] assert nb_source.cells[3].outputs == ['6'] assert nb_source.cells[5].outputs == ['8']
def test_write_reload_simple_notebook(): nb1 = new_notebook(cells=[ new_markdown_cell('A markdown cell', metadata={'md': 'value'}), new_code_cell('1 + 1'), new_markdown_cell('A markdown cell', metadata={'md': 'value'}), new_code_cell("""def f(x): return x""", metadata={'md': 'value'}), new_markdown_cell('A markdown cell', metadata={'md': 'value'}), new_code_cell("""def g(x): return x def h(x): return x """, metadata={'md': 'value'}) ]) text = writes(nb1, 'py:bare') nb2 = reads(text, 'py:bare') combine_inputs_with_outputs(nb2, nb1, 'py:bare') nb2.metadata.pop('jupytext') assert len(nb2.cells) == 7 nb1.cells = nb1.cells[:5] nb2.cells = nb2.cells[:5] compare(nb2, nb1)
def test_combine_reorder(): nb_source = new_notebook(cells=[ new_markdown_cell("Markdown text"), new_code_cell("1+1"), new_code_cell("2+2"), new_code_cell("3+3"), new_markdown_cell("Markdown text"), new_code_cell("4+4"), ]) nb_outputs = new_notebook(cells=[ new_markdown_cell("Markdown text"), new_code_cell("2+2"), new_code_cell("4+4"), new_code_cell("1+1"), new_code_cell("3+3"), new_markdown_cell("Markdown text"), ]) nb_outputs.cells[1].outputs = ["4"] nb_outputs.cells[2].outputs = ["8"] nb_outputs.cells[3].outputs = ["2"] nb_outputs.cells[4].outputs = ["6"] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[1].outputs == ["2"] assert nb_source.cells[2].outputs == ["4"] assert nb_source.cells[3].outputs == ["6"] assert nb_source.cells[5].outputs == ["8"]
def test_combine_stable(nb_file): nb_org = jupytext.read(nb_file) nb_source = deepcopy(nb_org) nb_outputs = deepcopy(nb_org) for cell in nb_source.cells: cell.outputs = [] combine_inputs_with_outputs(nb_source, nb_outputs) compare_notebooks(nb_source, nb_org)
def test_combine_split(): nb_source = new_notebook(cells=[new_code_cell("1+1"), new_code_cell("2+2")]) nb_outputs = new_notebook(cells=[new_code_cell("1+1\n2+2")]) nb_outputs.cells[0].outputs = ["4"] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[0].outputs == [] assert nb_source.cells[1].outputs == ["4"]
def test_combine_split(): nb_source = new_notebook( cells=[new_code_cell('1+1'), new_code_cell('2+2')]) nb_outputs = new_notebook(cells=[new_code_cell('1+1\n2+2')]) nb_outputs.cells[0].outputs = ['4'] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[0].outputs == [] assert nb_source.cells[1].outputs == ['4']
def test_combine_refactor(): nb_source = new_notebook( cells=[new_code_cell("a=1"), new_code_cell("a+1"), new_code_cell("a+2")] ) nb_outputs = new_notebook( cells=[new_code_cell("b=1"), new_code_cell("b+1"), new_code_cell("b+2")] ) nb_outputs.cells[1].outputs = ["2"] nb_outputs.cells[2].outputs = ["3"] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[0].outputs == [] assert nb_source.cells[1].outputs == ["2"] assert nb_source.cells[2].outputs == ["3"]
def test_write_reload_simple_notebook(): nb1 = new_notebook( cells=[ new_markdown_cell("A markdown cell", metadata={"md": "value"}), new_code_cell("1 + 1"), new_markdown_cell("A markdown cell", metadata={"md": "value"}), new_code_cell( """def f(x): return x""", metadata={"md": "value"}, ), new_markdown_cell("A markdown cell", metadata={"md": "value"}), new_code_cell( """def g(x): return x def h(x): return x """, metadata={"md": "value"}, ), ] ) text = writes(nb1, "py:nomarker") nb2 = reads(text, "py:nomarker") combine_inputs_with_outputs(nb2, nb1, "py:nomarker") nb2.metadata.pop("jupytext") assert len(nb2.cells) == 7 nb1.cells = nb1.cells[:5] nb2.cells = nb2.cells[:5] compare(nb2, nb1) with pytest.warns(DeprecationWarning, match="nomarker"): text = writes(nb2, "py:bare") with pytest.warns(DeprecationWarning, match="nomarker"): nb3 = reads(text, "py:bare") with pytest.warns(DeprecationWarning, match="nomarker"): combine_inputs_with_outputs(nb3, nb2, "py:bare") nb3.metadata.pop("jupytext") compare(nb3, nb2)
def test_combine_refactor(): nb_source = new_notebook(cells=[ new_code_cell('a=1'), new_code_cell('a+1'), new_code_cell('a+2') ]) nb_outputs = new_notebook(cells=[ new_code_cell('b=1'), new_code_cell('b+1'), new_code_cell('b+2') ]) nb_outputs.cells[1].outputs = ['2'] nb_outputs.cells[2].outputs = ['3'] combine_inputs_with_outputs(nb_source, nb_outputs) assert nb_source.cells[0].outputs == [] assert nb_source.cells[1].outputs == ['2'] assert nb_source.cells[2].outputs == ['3']
def test_combine_md_version_one(): markdown = """--- jupyter: jupytext: text_representation: extension: .md format_name: markdown format_version: '1.0' jupytext_version: 1.0.0 kernelspec: display_name: Python 3 language: python name: python3 --- A short markdown cell ``` a raw cell ``` ```python 1 + 1 ``` """ # notebook read from markdown file in version 1.0 nb_source = jupytext.reads(markdown, 'md') # actual notebook has metadata nb_meta = jupytext.reads(markdown, 'md') for cell in nb_meta.cells: cell.metadata = {'key': 'value'} combine_inputs_with_outputs(nb_source, nb_meta) for cell in nb_source.cells: assert cell.metadata == {'key': 'value'}, cell.source
def test_combine_attachments(): nb_source = new_notebook( cells=[new_markdown_cell("![image.png](attachment:image.png)")] ) nb_outputs = new_notebook( cells=[ new_markdown_cell( "![image.png](attachment:image.png)", attachments={"image.png": {"image/png": "SOME_LONG_IMAGE_CODE...=="}}, ) ] ) nb_source = combine_inputs_with_outputs(nb_source, nb_outputs) compare(nb_source, nb_outputs)