Skip to content

Commit e3d00ac

Browse files
authored
Merge pull request #883 from krinsman/step7_4
alphabetize NBViewer settings
2 parents f93518c + af40716 commit e3d00ac

File tree

1 file changed

+49
-58
lines changed

1 file changed

+49
-58
lines changed

nbviewer/app.py

Lines changed: 49 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ class NBViewer(Application):
8080
# Use this to insert custom configuration of handlers for NBViewer extensions
8181
handler_settings = Dict().tag(config=True)
8282

83-
url_handler = Unicode(default_value="nbviewer.providers.url.handlers.URLHandler", help="The Tornado handler to use for viewing notebooks accessed via URL").tag(config=True)
84-
local_handler = Unicode(default_value="nbviewer.providers.local.handlers.LocalFileHandler", help="The Tornado handler to use for viewing notebooks found on a local filesystem").tag(config=True)
83+
gist_handler = Unicode(default_value="nbviewer.providers.gist.handlers.GistHandler", help="The Tornado handler to use for viewing notebooks stored as GitHub Gists").tag(config=True)
8584
github_blob_handler = Unicode(default_value="nbviewer.providers.github.handlers.GitHubBlobHandler", help="The Tornado handler to use for viewing notebooks stored as blobs on GitHub").tag(config=True)
8685
github_tree_handler = Unicode(default_value="nbviewer.providers.github.handlers.GitHubTreeHandler", help="The Tornado handler to use for viewing directory trees on GitHub").tag(config=True)
87-
gist_handler = Unicode(default_value="nbviewer.providers.gist.handlers.GistHandler", help="The Tornado handler to use for viewing notebooks stored as GitHub Gists").tag(config=True)
86+
local_handler = Unicode(default_value="nbviewer.providers.local.handlers.LocalFileHandler", help="The Tornado handler to use for viewing notebooks found on a local filesystem").tag(config=True)
87+
url_handler = Unicode(default_value="nbviewer.providers.url.handlers.URLHandler", help="The Tornado handler to use for viewing notebooks accessed via URL").tag(config=True)
8888
user_gists_handler = Unicode(default_value="nbviewer.providers.gist.handlers.UserGistsHandler", help="The Tornado handler to use for viewing directory containing all of a user's Gists").tag(config=True)
8989

9090
client = Any().tag(config=True)
@@ -239,11 +239,11 @@ def template_paths(self):
239239
def init_tornado_application(self):
240240
# handle handlers
241241
handler_names = dict(
242-
url_handler=self.url_handler,
242+
gist_handler=self.gist_handler,
243243
github_blob_handler=self.github_blob_handler,
244244
github_tree_handler=self.github_tree_handler,
245245
local_handler=self.local_handler,
246-
gist_handler=self.gist_handler,
246+
url_handler=self.url_handler,
247247
user_gists_handler=self.user_gists_handler,
248248
)
249249
handler_kwargs = {'handler_names' : handler_names, 'handler_settings' : self.handler_settings}
@@ -260,54 +260,45 @@ def init_tornado_application(self):
260260

261261
# input traitlets to settings
262262
settings = dict(
263-
config=self.config,
264-
index=self.index,
265-
max_cache_uris=self.max_cache_uris,
266-
static_path=self.static_path,
267-
static_url_prefix=self.static_url_prefix,
268-
)
269-
# input computed properties to settings
270-
settings.update(
271263
base_url=self.base_url,
272-
cache=self.cache,
273-
client=self.client,
274-
fetch_kwargs=self.fetch_kwargs,
275-
formats=self.formats,
276-
frontpage_setup=self.frontpage_setup,
277-
jinja2_env=self.env,
278-
pool=self.pool,
279-
rate_limiter=self.rate_limiter,
280-
)
281-
# input settings from CLI options
282-
settings.update(
283264
binder_base_url=options.binder_base_url,
265+
cache=self.cache,
284266
cache_expiry_max=options.cache_expiry_max,
285267
cache_expiry_min=options.cache_expiry_min,
268+
client=self.client,
269+
config=self.config,
286270
content_security_policy=options.content_security_policy,
287271
default_format=options.default_format,
272+
fetch_kwargs=self.fetch_kwargs,
273+
formats=self.formats,
274+
frontpage_setup=self.frontpage_setup,
275+
google_analytics_id=os.getenv('GOOGLE_ANALYTICS_ID'),
276+
gzip=True,
277+
hub_api_token=os.getenv('JUPYTERHUB_API_TOKEN'),
278+
hub_api_url=os.getenv('JUPYTERHUB_API_URL'),
279+
hub_base_url=os.getenv('JUPYTERHUB_BASE_URL'),
280+
index=self.index,
288281
ipywidgets_base_url=options.ipywidgets_base_url,
282+
jinja2_env=self.env,
289283
jupyter_js_widgets_version=options.jupyter_js_widgets_version,
290284
jupyter_widgets_html_manager_version=options.jupyter_widgets_html_manager_version,
291285
localfile_any_user=options.localfile_any_user,
292286
localfile_follow_symlinks=options.localfile_follow_symlinks,
293287
localfile_path=os.path.abspath(options.localfiles),
288+
log_function=log_request,
294289
mathjax_url=options.mathjax_url,
290+
max_cache_uris=self.max_cache_uris,
291+
pool=self.pool,
295292
provider_rewrites=options.provider_rewrites,
296293
providers=options.providers,
294+
rate_limiter=self.rate_limiter,
297295
render_timeout=options.render_timeout,
296+
static_path=self.static_path,
297+
static_url_prefix=self.static_url_prefix,
298298
statsd_host=options.statsd_host,
299299
statsd_port=options.statsd_port,
300300
statsd_prefix=options.statsd_prefix,
301301
)
302-
# additional settings
303-
settings.update(
304-
google_analytics_id=os.getenv('GOOGLE_ANALYTICS_ID'),
305-
gzip=True,
306-
hub_api_token=os.getenv('JUPYTERHUB_API_TOKEN'),
307-
hub_api_url=os.getenv('JUPYTERHUB_API_URL'),
308-
hub_base_url=os.getenv('JUPYTERHUB_BASE_URL'),
309-
log_function=log_request,
310-
)
311302

312303
if options.localfiles:
313304
log.app_log.warning("Serving local notebooks in %s, this can be a security risk", options.localfiles)
@@ -333,41 +324,41 @@ def init_options():
333324
else:
334325
default_host, default_port = '0.0.0.0', 5000
335326

327+
define("base_url", default='/', help='URL base for the server')
328+
define("binder_base_url", default="https://mybinder.org/v2", help="URL base for binder notebook execution service", type=str)
329+
define("cache_expiry_max", default=2*60*60, help="maximum cache expiry (seconds)", type=int)
330+
define("cache_expiry_min", default=10*60, help="minimum cache expiry (seconds)", type=int)
331+
define("content_security_policy", default="connect-src 'none';", help="Content-Security-Policy header setting", type=str)
336332
define("debug", default=False, help="run in debug mode", type=bool)
337-
define("no_cache", default=False, help="Do not cache results", type=bool)
338-
define("localfiles", default="", help="Allow to serve local files under /localfile/* this can be a security risk", type=str)
339-
define("localfile_follow_symlinks", default=False, help="Resolve/follow symbolic links to their target file using realpath", type=bool)
340-
define("localfile_any_user", default=False, help="Also serve files that are not readable by 'Other' on the local file system", type=bool)
333+
define("default_format", default="html", help="format to use for legacy / URLs", type=str)
334+
define("frontpage", default=FRONTPAGE_JSON, help="path to json file containing frontpage content", type=str)
341335
define("host", default=default_host, help="run on the given interface", type=str)
336+
define("ipywidgets_base_url", default="https://unpkg.com/", help="URL base for ipywidgets JS package", type=str)
337+
define("jupyter_js_widgets_version", default="*", help="Version specifier for jupyter-js-widgets JS package", type=str)
338+
define("jupyter_widgets_html_manager_version", default="*", help="Version specifier for @jupyter-widgets/html-manager JS package", type=str)
339+
define("localfile_any_user", default=False, help="Also serve files that are not readable by 'Other' on the local file system", type=bool)
340+
define("localfile_follow_symlinks", default=False, help="Resolve/follow symbolic links to their target file using realpath", type=bool)
341+
define("localfiles", default="", help="Allow to serve local files under /localfile/* this can be a security risk", type=str)
342+
define("mathjax_url", default="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/", help="URL base for mathjax package", type=str)
343+
define("mc_threads", default=1, help="number of threads to use for Async Memcache", type=int)
344+
define("no_cache", default=False, help="Do not cache results", type=bool)
345+
define("no_check_certificate", default=False, help="Do not validate SSL certificates", type=bool)
342346
define("port", default=default_port, help="run on the given port", type=int)
343-
define("cache_expiry_min", default=10*60, help="minimum cache expiry (seconds)", type=int)
344-
define("cache_expiry_max", default=2*60*60, help="maximum cache expiry (seconds)", type=int)
345-
define("render_timeout", default=15, help="Time to wait for a render to complete before showing the 'Working...' page.", type=int)
347+
define("processes", default=0, help="use processes instead of threads for rendering", type=int)
348+
define("provider_rewrites", default=default_rewrites, help="Full dotted package(s) that provide `uri_rewrites`", type=str, multiple=True, group="provider")
349+
define("providers", default=default_providers, help="Full dotted package(s) that provide `default_handlers`", type=str, multiple=True, group="provider")
350+
define("proxy_host", default="", help="The proxy URL.", type=str)
351+
define("proxy_port", default="", help="The proxy port.", type=int)
346352
define("rate_limit", default=60, help="Number of requests to allow in rate_limt_interval before limiting. Only requests that trigger a new render are counted.", type=int)
347353
define("rate_limit_interval", default=600, help="Interval (in seconds) for rate limiting.", type=int)
348-
define("mc_threads", default=1, help="number of threads to use for Async Memcache", type=int)
349-
define("threads", default=1, help="number of threads to use for rendering", type=int)
350-
define("processes", default=0, help="use processes instead of threads for rendering", type=int)
351-
define("frontpage", default=FRONTPAGE_JSON, help="path to json file containing frontpage content", type=str)
354+
define("render_timeout", default=15, help="Time to wait for a render to complete before showing the 'Working...' page.", type=int)
352355
define("sslcert", help="path to ssl .crt file", type=str)
353356
define("sslkey", help="path to ssl .key file", type=str)
354-
define("no_check_certificate", default=False, help="Do not validate SSL certificates", type=bool)
355-
define("default_format", default="html", help="format to use for legacy / URLs", type=str)
356-
define("proxy_host", default="", help="The proxy URL.", type=str)
357-
define("proxy_port", default="", help="The proxy port.", type=int)
358-
define("providers", default=default_providers, help="Full dotted package(s) that provide `default_handlers`", type=str, multiple=True, group="provider")
359-
define("provider_rewrites", default=default_rewrites, help="Full dotted package(s) that provide `uri_rewrites`", type=str, multiple=True, group="provider")
360-
define("mathjax_url", default="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/", help="URL base for mathjax package", type=str)
361-
define("template_path", default=os.environ.get("NBVIEWER_TEMPLATE_PATH", None), help="Custom template path for the nbviewer app (not rendered notebooks)", type=str)
362357
define("statsd_host", default="", help="Host running statsd to send metrics to", type=str)
363358
define("statsd_port", default=8125, help="Port on which statsd is listening for metrics on statsd_host", type=int)
364359
define("statsd_prefix", default='nbviewer', help="Prefix to use for naming metrics sent to statsd", type=str)
365-
define("base_url", default='/', help='URL base for the server')
366-
define("ipywidgets_base_url", default="https://unpkg.com/", help="URL base for ipywidgets JS package", type=str)
367-
define("jupyter_js_widgets_version", default="*", help="Version specifier for jupyter-js-widgets JS package", type=str)
368-
define("jupyter_widgets_html_manager_version", default="*", help="Version specifier for @jupyter-widgets/html-manager JS package", type=str)
369-
define("content_security_policy", default="connect-src 'none';", help="Content-Security-Policy header setting", type=str)
370-
define("binder_base_url", default="https://mybinder.org/v2", help="URL base for binder notebook execution service", type=str)
360+
define("template_path", default=os.environ.get("NBVIEWER_TEMPLATE_PATH", None), help="Custom template path for the nbviewer app (not rendered notebooks)", type=str)
361+
define("threads", default=1, help="number of threads to use for rendering", type=int)
371362

372363

373364
def main(argv=None):

0 commit comments

Comments
 (0)