You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			146 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			146 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Python
		
	
import os
 | 
						|
from traitlets import (
 | 
						|
    HasTraits, Dict, Unicode, List, Bool,
 | 
						|
    observe, default
 | 
						|
)
 | 
						|
from jupyter_core.paths import jupyter_path
 | 
						|
from jupyter_server.transutils import _i18n
 | 
						|
from jupyter_server.utils import url_path_join
 | 
						|
 | 
						|
 | 
						|
class NotebookAppTraits(HasTraits):
 | 
						|
 | 
						|
    ignore_minified_js = Bool(False,
 | 
						|
                              config=True,
 | 
						|
                              help=_i18n(
 | 
						|
                                  'Deprecated: Use minified JS file or not, mainly use during dev to avoid JS recompilation'),
 | 
						|
                              )
 | 
						|
 | 
						|
    jinja_environment_options = Dict(config=True,
 | 
						|
                                     help=_i18n("Supply extra arguments that will be passed to Jinja environment."))
 | 
						|
 | 
						|
    jinja_template_vars = Dict(
 | 
						|
        config=True,
 | 
						|
        help=_i18n(
 | 
						|
            "Extra variables to supply to jinja templates when rendering."),
 | 
						|
    )
 | 
						|
 | 
						|
    enable_mathjax = Bool(True, config=True,
 | 
						|
                          help="""Whether to enable MathJax for typesetting math/TeX
 | 
						|
 | 
						|
        MathJax is the javascript library Jupyter uses to render math/LaTeX. It is
 | 
						|
        very large, so you may want to disable it if you have a slow internet
 | 
						|
        connection, or for offline use of the notebook.
 | 
						|
 | 
						|
        When disabled, equations etc. will appear as their untransformed TeX source.
 | 
						|
        """
 | 
						|
                          )
 | 
						|
 | 
						|
    @observe('enable_mathjax')
 | 
						|
    def _update_enable_mathjax(self, change):
 | 
						|
        """set mathjax url to empty if mathjax is disabled"""
 | 
						|
        if not change['new']:
 | 
						|
            self.mathjax_url = u''
 | 
						|
 | 
						|
    extra_static_paths = List(Unicode(), config=True,
 | 
						|
                              help="""Extra paths to search for serving static files.
 | 
						|
 | 
						|
        This allows adding javascript/css to be available from the notebook server machine,
 | 
						|
        or overriding individual files in the IPython"""
 | 
						|
                              )
 | 
						|
 | 
						|
    @property
 | 
						|
    def static_file_path(self):
 | 
						|
        """return extra paths + the default location"""
 | 
						|
        return self.extra_static_paths
 | 
						|
 | 
						|
    static_custom_path = List(Unicode(),
 | 
						|
                              help=_i18n(
 | 
						|
                                  """Path to search for custom.js, css""")
 | 
						|
                              )
 | 
						|
 | 
						|
    @default('static_custom_path')
 | 
						|
    def _default_static_custom_path(self):
 | 
						|
        return [
 | 
						|
            os.path.join(self.config_dir, 'custom')
 | 
						|
        ]
 | 
						|
 | 
						|
    extra_template_paths = List(Unicode(), config=True,
 | 
						|
                                help=_i18n("""Extra paths to search for serving jinja templates.
 | 
						|
 | 
						|
        Can be used to override templates from notebook.templates.""")
 | 
						|
                                )
 | 
						|
 | 
						|
    @property
 | 
						|
    def template_file_path(self):
 | 
						|
        """return extra paths + the default locations"""
 | 
						|
        return self.extra_template_paths
 | 
						|
 | 
						|
    extra_nbextensions_path = List(Unicode(), config=True,
 | 
						|
                                   help=_i18n(
 | 
						|
                                       """extra paths to look for Javascript notebook extensions""")
 | 
						|
                                   )
 | 
						|
 | 
						|
    @property
 | 
						|
    def nbextensions_path(self):
 | 
						|
        """The path to look for Javascript notebook extensions"""
 | 
						|
        path = self.extra_nbextensions_path + jupyter_path('nbextensions')
 | 
						|
        # FIXME: remove IPython nbextensions path after a migration period
 | 
						|
        try:
 | 
						|
            from IPython.paths import get_ipython_dir
 | 
						|
        except ImportError:
 | 
						|
            pass
 | 
						|
        else:
 | 
						|
            path.append(os.path.join(get_ipython_dir(), 'nbextensions'))
 | 
						|
        return path
 | 
						|
 | 
						|
    mathjax_url = Unicode("", config=True,
 | 
						|
                          help="""A custom url for MathJax.js.
 | 
						|
        Should be in the form of a case-sensitive url to MathJax,
 | 
						|
        for example:  /static/components/MathJax/MathJax.js
 | 
						|
        """
 | 
						|
                          )
 | 
						|
 | 
						|
    @property
 | 
						|
    def static_url_prefix(self):
 | 
						|
        """Get the static url prefix for serving static files."""
 | 
						|
        return super(NotebookAppTraits, self).static_url_prefix
 | 
						|
 | 
						|
    @default('mathjax_url')
 | 
						|
    def _default_mathjax_url(self):
 | 
						|
        if not self.enable_mathjax:
 | 
						|
            return u''
 | 
						|
        static_url_prefix = self.static_url_prefix
 | 
						|
        return url_path_join(static_url_prefix, 'components', 'MathJax', 'MathJax.js')
 | 
						|
 | 
						|
    @observe('mathjax_url')
 | 
						|
    def _update_mathjax_url(self, change):
 | 
						|
        new = change['new']
 | 
						|
        if new and not self.enable_mathjax:
 | 
						|
            # enable_mathjax=False overrides mathjax_url
 | 
						|
            self.mathjax_url = u''
 | 
						|
        else:
 | 
						|
            self.log.info(_i18n("Using MathJax: %s"), new)
 | 
						|
 | 
						|
    mathjax_config = Unicode("TeX-AMS-MML_HTMLorMML-full,Safe", config=True,
 | 
						|
                             help=_i18n(
 | 
						|
                                 """The MathJax.js configuration file that is to be used.""")
 | 
						|
                             )
 | 
						|
 | 
						|
    @observe('mathjax_config')
 | 
						|
    def _update_mathjax_config(self, change):
 | 
						|
        self.log.info(
 | 
						|
            _i18n("Using MathJax configuration file: %s"), change['new'])
 | 
						|
 | 
						|
    quit_button = Bool(True, config=True,
 | 
						|
                       help="""If True, display a button in the dashboard to quit
 | 
						|
        (shutdown the notebook server)."""
 | 
						|
                       )
 | 
						|
 | 
						|
    nbserver_extensions = Dict({}, config=True,
 | 
						|
                               help=(_i18n("Dict of Python modules to load as notebook server extensions."
 | 
						|
                                           "Entry values can be used to enable and disable the loading of"
 | 
						|
                                           "the extensions. The extensions will be loaded in alphabetical "
 | 
						|
                                           "order."))
 | 
						|
                               )
 |