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)
Beispiel #7
0
 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)