def test_ipynb_notebooks_can_be_trusted(nb_file, tmpdir): cm = TextFileContentsManager() root, file = os.path.split(nb_file) tmp_ipynb = str(tmpdir.join(file)) py_file = file.replace('.ipynb', '.py') tmp_py = str(tmpdir.join(py_file)) shutil.copy(nb_file, tmp_ipynb) cm.default_jupytext_formats = 'ipynb,py' cm.root_dir = str(tmpdir) nb = cm.get(file) # Sign notebook explicitely (save it, and reload without # validating to remove 'trusted' metadata in cells) cm.save(nb, py_file) cm.trust_notebook(py_file) nb = cm.get(file) for cell in nb['content'].cells: assert cell.metadata.get('trusted', True) # Remove py file, content should be the same os.remove(tmp_py) nb2 = cm.get(file) for cell in nb2['content'].cells: assert cell.metadata.get('trusted', True) assert nb['content'] == nb2['content']
def test_text_notebooks_can_be_trusted(nb_file, tmpdir, no_jupytext_version_number): cm = TextFileContentsManager() root, file = os.path.split(nb_file) py_file = str(tmpdir.join(file)) shutil.copy(nb_file, py_file) cm.root_dir = str(tmpdir) model = cm.get(file) model["type"] == "notebook" cm.save(model, file) # Unsign notebook nb = model["content"] for cell in nb.cells: cell.metadata.pop("trusted", True) cm.notary.unsign(nb) # Trust and reload cm.trust_notebook(file) model = cm.get(file) for cell in model["content"].cells: assert cell.metadata.get("trusted", True)
def test_ipynb_notebooks_can_be_trusted(nb_file, tmpdir, no_jupytext_version_number): cm = TextFileContentsManager() root, file = os.path.split(nb_file) tmp_ipynb = str(tmpdir.join(file)) py_file = file.replace(".ipynb", ".py") tmp_py = str(tmpdir.join(py_file)) shutil.copy(nb_file, tmp_ipynb) cm.default_jupytext_formats = "ipynb,py" cm.root_dir = str(tmpdir) model = cm.get(file) cm.save(model, py_file) # Unsign and test notebook nb = model["content"] for cell in nb.cells: cell.metadata.pop("trusted", True) cm.notary.unsign(nb) model = cm.get(file) for cell in model["content"].cells: assert ( "trusted" not in cell.metadata or not cell.metadata["trusted"] or not cell.outputs ) # Trust and reload cm.trust_notebook(py_file) model = cm.get(file) for cell in model["content"].cells: assert cell.metadata.get("trusted", True) # Remove py file, content should be the same os.remove(tmp_py) nb2 = cm.get(file) for cell in nb2["content"].cells: assert cell.metadata.get("trusted", True) compare_notebooks(nb2["content"], model["content"]) # Just for coverage cm.trust_notebook(file)
def test_ipynb_notebooks_can_be_trusted(nb_file, tmpdir): with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', False): cm = TextFileContentsManager() root, file = os.path.split(nb_file) tmp_ipynb = str(tmpdir.join(file)) py_file = file.replace('.ipynb', '.py') tmp_py = str(tmpdir.join(py_file)) shutil.copy(nb_file, tmp_ipynb) cm.default_jupytext_formats = 'ipynb,py' cm.root_dir = str(tmpdir) model = cm.get(file) cm.save(model, py_file) # Unsign and test notebook nb = model['content'] for cell in nb.cells: if 'trusted' in cell.metadata: cell.metadata.pop('trusted') cm.notary.unsign(nb) model = cm.get(file) for cell in model['content'].cells: assert 'trusted' not in cell.metadata or not cell.metadata[ 'trusted'] or not cell.outputs # Trust and reload cm.trust_notebook(py_file) model = cm.get(file) for cell in model['content'].cells: assert cell.metadata.get('trusted', True) # Remove py file, content should be the same os.remove(tmp_py) nb2 = cm.get(file) for cell in nb2['content'].cells: assert cell.metadata.get('trusted', True) assert model['content'] == nb2['content'] # Just for coverage cm.trust_notebook(file)
def test_ipynb_notebooks_can_be_trusted(nb_file, tmpdir): cm = TextFileContentsManager() root, file = os.path.split(nb_file) tmp_ipynb = str(tmpdir.join(file)) py_file = file.replace('.ipynb', '.py') tmp_py = str(tmpdir.join(py_file)) shutil.copy(nb_file, tmp_ipynb) cm.default_jupytext_formats = 'ipynb,py' cm.root_dir = str(tmpdir) model = cm.get(file) nb = model['content'] if nb.metadata.get('jupytext', {}).get('formats'): del nb.metadata['jupytext']['formats'] cm.save(model, py_file) # Unsign and test notebook nb = model['content'] for cell in nb.cells: if 'trusted' in cell.metadata: cell.metadata.pop('trusted') cm.notary.unsign(nb) model = cm.get(file) for cell in model['content'].cells: assert 'trusted' not in cell.metadata or not cell.metadata['trusted'] # Trust and reload cm.trust_notebook(py_file) model = cm.get(file) for cell in model['content'].cells: assert cell.metadata.get('trusted', True) # Remove py file, content should be the same os.remove(tmp_py) nb2 = cm.get(file) for cell in nb2['content'].cells: assert cell.metadata.get('trusted', True) assert model['content'] == nb2['content']
def test_ipynb_notebooks_can_be_trusted_even_with_metadata_filter(nb_file, tmpdir, no_jupytext_version_number): cm = TextFileContentsManager() root, file = os.path.split(nb_file) tmp_ipynb = str(tmpdir.join(file)) py_file = file.replace('.ipynb', '.py') tmp_py = str(tmpdir.join(py_file)) shutil.copy(nb_file, tmp_ipynb) cm.default_jupytext_formats = 'ipynb,py' cm.default_notebook_metadata_filter = 'all' cm.default_cell_metadata_filter = '-all' cm.root_dir = str(tmpdir) model = cm.get(file) cm.save(model, py_file) # Unsign notebook nb = model['content'] for cell in nb.cells: if 'trusted' in cell.metadata: cell.metadata.pop('trusted') cm.notary.unsign(nb) # Trust and reload cm.trust_notebook(py_file) model = cm.get(file) for cell in model['content'].cells: assert cell.metadata.get('trusted', True) # Remove py file, content should be the same os.remove(tmp_py) nb2 = cm.get(file) for cell in nb2['content'].cells: assert cell.metadata.get('trusted', True) assert model['content'] == nb2['content']