class IPyNbFile(pytest.File): def collect(self): with self.fspath.open() as f: self.notebook_folder = self.fspath.dirname self.nb = reads(f.read(), 'json') self.runner = NotebookRunner(self.nb) cell_num = 0 for cell in self.runner.iter_code_cells(): yield IPyNbCell(self.name, self, cell_num, cell) cell_num += 1 def setup(self): self.fixture_cell = None def teardown(self): self.runner.shutdown_kernel()
class IPyNbFile(pytest.File): def collect(self): with self.fspath.open() as f: payload = f.read() self.nb = nbformat.reads(payload, 3) # kernel needs to start from the same dir the ipynb is in notebook_dir = self.fspath.dirname cwd = os.getcwd() if cwd != notebook_dir: os.chdir(notebook_dir) self.runner = NotebookRunner(self.nb) os.chdir(cwd) cell_num = 1 for cell in self.runner.iter_code_cells(): yield IPyNbCell.from_parent(self, name=self.name, cell_num=cell_num, cell=cell) cell_num += 1 def setup(self): self.fixture_cell = None def teardown(self): self.runner.shutdown_kernel()
class IPyNbFile(pytest.File): def collect(self): with self.fspath.open() as f: payload = f.read() self.notebook_folder = self.fspath.dirname try: # Ipython 3 self.nb = reads(payload, 3) except (TypeError, NBFormatError): # Ipython 2 self.nb = reads(payload, 'json') self.runner = NotebookRunner(self.nb) cell_num = 1 for cell in self.runner.iter_code_cells(): yield IPyNbCell(self.name, self, cell_num, cell) cell_num += 1 def setup(self): self.fixture_cell = None def teardown(self): self.runner.shutdown_kernel()