def test_save_in_pct_and_lgt_auto_extensions(nb_file, tmpdir): # load notebook nb = jupytext.readf(nb_file) if 'language_info' not in nb.metadata: return auto_ext = auto_ext_from_metadata(nb.metadata) tmp_ipynb = 'notebook.ipynb' tmp_pct_script = 'notebook.pct' + auto_ext tmp_lgt_script = 'notebook.lgt' + auto_ext # create contents manager with default load format as percent cm = jupytext.TextFileContentsManager() cm.default_jupytext_formats = 'ipynb,.pct.auto,.lgt.auto' cm.preferred_jupytext_formats_save = '.pct.auto:percent,.lgt.auto:light' cm.root_dir = str(tmpdir) # save notebook cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # check that text representation exists in percent format with open(str(tmpdir.join(tmp_pct_script))) as stream: assert read_format_from_metadata(stream.read(), auto_ext) == 'percent' # check that text representation exists in light format with open(str(tmpdir.join(tmp_lgt_script))) as stream: assert read_format_from_metadata(stream.read(), auto_ext) == 'light'
def test_save_in_auto_extension_local(nb_file, tmpdir): # load notebook nb = jupytext.readf(nb_file) nb.metadata.setdefault('jupytext', {})['formats'] = 'ipynb,auto:percent' if 'language_info' not in nb.metadata: return auto_ext = auto_ext_from_metadata(nb.metadata) tmp_ipynb = 'notebook.ipynb' tmp_script = 'notebook' + auto_ext # create contents manager with default load format as percent cm = jupytext.TextFileContentsManager() cm.root_dir = str(tmpdir) # save notebook cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # check that text representation exists, and is in percent format with open(str(tmpdir.join(tmp_script))) as stream: assert read_format_from_metadata(stream.read(), auto_ext) == 'percent' # reload and compare with original notebook model = cm.get(path=tmp_script) compare_notebooks(nb, model['content'])
def test_pair_notebook_with_dot(nb_file, tmpdir): # Reproduce issue #138 tmp_py = 'file.5.1.py' tmp_ipynb = 'file.5.1.ipynb' cm = jupytext.TextFileContentsManager() cm.root_dir = str(tmpdir) nb = jupytext.readf(nb_file) nb['metadata']['jupytext'] = {'formats': 'ipynb,py:percent'} # save to ipynb and three python flavors cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) assert os.path.isfile(str(tmpdir.join(tmp_ipynb))) # read files with open(str(tmpdir.join(tmp_py))) as stream: assert read_format_from_metadata(stream.read(), '.py') == 'percent' model = cm.get(path=tmp_py) assert model['name'] == 'file.5.1.py' compare_notebooks(nb, model['content']) model = cm.get(path=tmp_ipynb) assert model['name'] == 'file.5.1.ipynb' compare_notebooks(nb, model['content'])
def test_save_in_auto_extension_global_with_format(nb_file, tmpdir): # load notebook nb = jupytext.readf(nb_file) if nb.metadata.get('jupytext', {}).get('formats'): del nb.metadata['jupytext']['formats'] if 'language_info' not in nb.metadata: return auto_ext = auto_ext_from_metadata(nb.metadata) tmp_ipynb = 'notebook.ipynb' tmp_script = 'notebook' + auto_ext # create contents manager with default load format as percent cm = jupytext.TextFileContentsManager() cm.default_jupytext_formats = 'ipynb,auto:percent' cm.root_dir = str(tmpdir) # save notebook with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', True): cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # check that text representation exists, and is in percent format with open(str(tmpdir.join(tmp_script))) as stream: assert read_format_from_metadata(stream.read(), auto_ext) == 'percent' # reload and compare with original notebook with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', True): model = cm.get(path=tmp_script) # saving should not create a format entry #95 assert 'formats' not in model['content'].metadata.get('jupytext', {}) compare_notebooks(nb, model['content'])
def test_save_in_auto_extension_global_with_format(nb_file, tmpdir): # load notebook nb = jupytext.read(nb_file) auto_ext = auto_ext_from_metadata(nb.metadata) tmp_ipynb = 'notebook.ipynb' tmp_script = 'notebook' + auto_ext # create contents manager with default load format as percent cm = jupytext.TextFileContentsManager() cm.default_jupytext_formats = 'ipynb,auto:percent' cm.root_dir = str(tmpdir) # save notebook cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # check that text representation exists, and is in percent format with open(str(tmpdir.join(tmp_script))) as stream: assert read_format_from_metadata(stream.read(), auto_ext) == 'percent' # reload and compare with original notebook model = cm.get(path=tmp_script) # saving should not create a format entry #95 assert 'formats' not in model['content'].metadata.get('jupytext', {}) compare_notebooks(nb, model['content'])
def test_save_to_light_percent_sphinx_format(nb_file, tmpdir): tmp_ipynb = 'notebook.ipynb' tmp_lgt_py = 'notebook.lgt.py' tmp_pct_py = 'notebook.pct.py' tmp_spx_py = 'notebook.spx.py' cm = jupytext.TextFileContentsManager() cm.root_dir = str(tmpdir) nb = jupytext.readf(nb_file) nb['metadata']['jupytext'] = { 'formats': 'ipynb,pct.py:percent,lgt.py:light,spx.py:sphinx' } # save to ipynb and three python flavors with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', True): cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # read files with open(str(tmpdir.join(tmp_pct_py))) as stream: assert read_format_from_metadata(stream.read(), 'pct.py') == 'percent' with open(str(tmpdir.join(tmp_lgt_py))) as stream: assert read_format_from_metadata(stream.read(), 'lgt.py') == 'light' with open(str(tmpdir.join(tmp_spx_py))) as stream: assert read_format_from_metadata(stream.read(), 'spx.py') == 'sphinx' model = cm.get(path=tmp_pct_py) assert model['name'] == 'notebook.pct' compare_notebooks(nb, model['content']) model = cm.get(path=tmp_lgt_py) assert model['name'] == 'notebook.lgt' compare_notebooks(nb, model['content']) model = cm.get(path=tmp_spx_py) assert model['name'] == 'notebook.spx' # (notebooks not equal as we insert %matplotlib inline in sphinx) model = cm.get(path=tmp_ipynb) assert model['name'] == 'notebook.pct' compare_notebooks(nb, model['content'])
def test_read_format_from_metadata(script="""--- jupyter: jupytext: formats: ipynb,pct.py:percent,lgt.py:light,spx.py:sphinx,md,Rmd text_representation: extension: .pct.py format_name: percent format_version: '1.1' jupytext_version: 0.8.0 ---"""): assert read_format_from_metadata(script, '.Rmd') is None
def test_save_to_light_percent_sphinx_format(nb_file, tmpdir): tmp_ipynb = 'notebook.ipynb' tmp_lgt_py = 'notebook.lgt.py' tmp_pct_py = 'notebook.pct.py' tmp_spx_py = 'notebook.spx.py' cm = jupytext.TextFileContentsManager() cm.root_dir = str(tmpdir) nb = jupytext.read(nb_file) nb['metadata']['jupytext'] = { 'formats': 'ipynb,.pct.py:percent,.lgt.py:light,.spx.py:sphinx' } # save to ipynb and three python flavors cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # read files with open(str(tmpdir.join(tmp_pct_py))) as stream: assert read_format_from_metadata(stream.read(), '.py') == 'percent' with open(str(tmpdir.join(tmp_lgt_py))) as stream: assert read_format_from_metadata(stream.read(), '.py') == 'light' with open(str(tmpdir.join(tmp_spx_py))) as stream: assert read_format_from_metadata(stream.read(), '.py') == 'sphinx' model = cm.get(path=tmp_pct_py) compare_notebooks(nb, model['content']) model = cm.get(path=tmp_lgt_py) compare_notebooks(nb, model['content']) model = cm.get(path=tmp_spx_py) # (notebooks not equal as we insert %matplotlib inline in sphinx) model = cm.get(path=tmp_ipynb) compare_notebooks(nb, model['content'])