|
#############################################################################
|
|
# Copyright (c) 2018, QuantStack #
|
|
# Copyright (c) 2018, Voila Contributors #
|
|
# #
|
|
# Distributed under the terms of the BSD 3-Clause License. #
|
|
# #
|
|
# The full license is in the file LICENSE, distributed with this software. #
|
|
#############################################################################
|
|
|
|
import traitlets.config
|
|
from traitlets import Unicode, Bool, Dict, List
|
|
|
|
|
|
class VoilaConfiguration(traitlets.config.Configurable):
|
|
"""Common configuration options between the server extension and the application."""
|
|
template = Unicode(
|
|
'default',
|
|
config=True,
|
|
allow_none=True,
|
|
help=(
|
|
'template name to be used by voila.'
|
|
)
|
|
)
|
|
resources = Dict(
|
|
allow_none=True,
|
|
help="""
|
|
extra resources used by templates;
|
|
example use with --template=reveal
|
|
--VoilaConfiguration.resources="{'reveal': {'transition': 'fade', 'scroll': True}}"
|
|
"""
|
|
).tag(config=True)
|
|
theme = Unicode('light').tag(config=True)
|
|
strip_sources = Bool(True, help='Strip sources from rendered html').tag(config=True)
|
|
enable_nbextensions = Bool(False, config=True, help=('Set to True for Voila to load notebook extensions'))
|
|
|
|
file_whitelist = List(
|
|
Unicode(),
|
|
[r'.*\.(png|jpg|gif|svg)'],
|
|
help=r"""
|
|
List of regular expressions for controlling which static files are served.
|
|
All files that are served should at least match 1 whitelist rule, and no blacklist rule
|
|
Example: --VoilaConfiguration.file_whitelist="['.*\.(png|jpg|gif|svg)', 'public.*']"
|
|
""",
|
|
).tag(config=True)
|
|
|
|
file_blacklist = List(
|
|
Unicode(),
|
|
[r'.*\.(ipynb|py)'],
|
|
help=r"""
|
|
List of regular expressions for controlling which static files are forbidden to be served.
|
|
All files that are served should at least match 1 whitelist rule, and no blacklist rule
|
|
Example:
|
|
--VoilaConfiguration.file_whitelist="['.*']" # all files
|
|
--VoilaConfiguration.file_blacklist="['private.*', '.*\.(ipynb)']" # except files in the private dir and notebook files
|
|
"""
|
|
).tag(config=True)
|
|
|
|
language_kernel_mapping = Dict(
|
|
{},
|
|
help="""Mapping of language name to kernel name
|
|
Example mapping python to use xeus-python, and C++11 to use xeus-cling:
|
|
--VoilaConfiguration.extension_language_mapping='{"python": "xpython", "C++11": "xcpp11"}'
|
|
""",
|
|
).tag(config=True)
|
|
|
|
extension_language_mapping = Dict(
|
|
{},
|
|
help='''Mapping of file extension to kernel language
|
|
Example mapping .py files to a python language kernel, and .cpp to a C++11 language kernel:
|
|
--VoilaConfiguration.extension_language_mapping='{".py": "python", ".cpp": "C++11"}'
|
|
''',
|
|
).tag(config=True)
|