def get_notebook(notebook_full_path): try: platform_persistence.initialize_notebook_from_platform( notebook_full_path) platform_persistence.post_save({'type': 'notebook'}, notebook_full_path, None) except platform_persistence.NotebookManagementError as e: platform_persistence.logger.error(str(e)) platform_persistence.logger.warn( 'Killing the notebook process b/c of a startup issue') os.kill(os.getpid(), signal.SIGTERM)
} } c.MultiKernelManager.default_kernel_name = os.environ['DEFAULT_KERNEL'] c.NotebookApp.allow_root = True # Download notebook and initialize post-save hook try: if not os.environ.get('GIT_FILE'): platform_persistence.initialize_notebook_from_platform() # force a save of the preview so that we have one in case # the user never generates one _, preview_url = platform_persistence.get_update_urls() platform_persistence.generate_and_save_preview(preview_url, NOTEBOOK_PATH) except NotebookManagementError as e: platform_persistence.logger.error(str(e)) platform_persistence.logger.warn( 'Killing the notebook process b/c of a startup issue') os.kill(os.getpid(), signal.SIGTERM) git_enabled = os.environ.get('GIT_FILE') is not None post_save = platform_persistence.post_save(git_enabled=git_enabled) c.FileContentsManager.post_save_hook = post_save REQUIREMENTS_PATH = os.path.expanduser( os.path.join('~', 'work', 'requirements.txt')) if os.path.isfile(REQUIREMENTS_PATH): platform_persistence.logger.info('installing requirements.txt packages') pip.main(['install', '-r', REQUIREMENTS_PATH]) platform_persistence.logger.info('requirements.txt installed')
def test_post_save_generates_preview(self, _rput, _client, check_call, _op): platform_persistence.post_save({'type': 'notebook'}, 'x/y', {}) check_call.assert_called_with( ['jupyter', 'nbconvert', '--to', 'html', 'y'], cwd='x')
def test_post_save_skipped_for_non_notebook_types(self, guu, save, _rput, _client, _ccc, _op): platform_persistence.post_save({'type': 'blargggg'}, '', {}) self.assertFalse(guu.called) self.assertFalse(save.called)
def test_post_save_performs_two_put_operations(self, save, rput, _client, _ccc, _op): platform_persistence.post_save({'type': 'notebook'}, '', {}) self.assertTrue(save.called)
def test_post_save_fetches_urls_from_api(self, _rput, client, _ccc, _op): platform_persistence.post_save({'type': 'notebook'}, '', {}) platform_persistence.get_client( ).notebooks.list_update_links.assert_called_with( TEST_PLATFORM_OBJECT_ID)
def test_post_save_for_git_does_not_call_save_notebook( self, save, rput, _client, _ccc, _op): post_save = platform_persistence.post_save(git_enabled=True) post_save({'type': 'notebook'}, '', {}) self.assertFalse(save.called)