Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
parent=self,
connection_dir=self.connection_dir,
kernel_spec_manager=self.kernel_spec_manager,
allowed_message_types=[
'comm_open',
'comm_close',
'comm_msg',
'comm_info_request',
'kernel_info_request',
'shutdown_request'
]
)
jenv_opt = {"autoescape": True} # we might want extra options via cmd line like notebook server
env = jinja2.Environment(loader=jinja2.FileSystemLoader(self.template_paths), extensions=['jinja2.ext.i18n'], **jenv_opt)
nbui = gettext.translation('nbui', localedir=os.path.join(ROOT, 'i18n'), fallback=True)
env.install_gettext_translations(nbui, newstyle=False)
self.contents_manager = LargeFileManager(parent=self)
# we create a config manager that load both the serverconfig and nbconfig (classical notebook)
read_config_path = [os.path.join(p, 'serverconfig') for p in jupyter_config_path()]
read_config_path += [os.path.join(p, 'nbconfig') for p in jupyter_config_path()]
self.config_manager = ConfigManager(parent=self, read_config_path=read_config_path)
# default server_url to base_url
self.server_url = self.server_url or self.base_url
self.app = tornado.web.Application(
base_url=self.base_url,
server_url=self.server_url or self.base_url,
kernel_manager=self.kernel_manager,
kernel_spec_manager=self.kernel_spec_manager,
self.callback = tornado.ioloop.PeriodicCallback(lambda: self.ping(''), 6000)
path = path.strip('/') + '.ipynb'
if path not in event_handlers:
handlers = []
watchdog_observer = watchdog.observers.Observer()
# sometimes useful to add this when triggering does not work
from watchdog.events import LoggingEventHandler
logging_handler = LoggingEventHandler()
watchdog_observer.schedule(logging_handler, '.', recursive=True)
notebook_handler = WatchDogEventHandler(regexes=['\\./' + path])
watchdog_observer.schedule(notebook_handler, '.', recursive=True)
handlers.append(notebook_handler)
misc_handler = WatchDogEventHandler(regexes=[str(ROOT) +r'/templates/.*', str(ROOT / 'static/main.js'), str(ROOT / 'static/dist/libwidgets.js')])
watchdog_observer.schedule(misc_handler, str(ROOT), recursive=True)
handlers.append(misc_handler)
watchdog_observer.start()
event_handlers[path] = handlers
tornado.autoreload.add_reload_hook(self._on_reload)
self.handlers = event_handlers[path]
for handler in self.handlers:
handler.listeners.append(self)
template_paths = []
# common configuration options between the server extension and the application
voila_configuration = VoilaConfiguration(parent=server_app)
collect_template_paths(
nbconvert_template_paths,
static_paths,
template_paths,
voila_configuration.template
)
jenv_opt = {"autoescape": True}
env = Environment(loader=FileSystemLoader(template_paths), extensions=['jinja2.ext.i18n'], **jenv_opt)
web_app.settings['voila_jinja2_env'] = env
nbui = gettext.translation('nbui', localedir=os.path.join(ROOT, 'i18n'), fallback=True)
env.install_gettext_translations(nbui, newstyle=False)
host_pattern = '.*$'
base_url = url_path_join(web_app.settings['base_url'])
tree_handler_conf = {
'voila_configuration': voila_configuration
}
web_app.add_handlers(host_pattern, [
(url_path_join(base_url, '/voila/render/(.*)'), VoilaHandler, {
'config': server_app.config,
'nbconvert_template_paths': nbconvert_template_paths,
'voila_configuration': voila_configuration
}),
(url_path_join(base_url, '/voila'), VoilaTreeHandler, tree_handler_conf),
(url_path_join(base_url, '/voila/tree' + path_regex), VoilaTreeHandler, tree_handler_conf),