Skip to content

Commit 03238da

Browse files
authored
Merge pull request #890 from krinsman/step7_10
Step7_10 (Make configure_formats method of NBViewer)
2 parents f216147 + 136b811 commit 03238da

File tree

2 files changed

+34
-39
lines changed

2 files changed

+34
-39
lines changed

nbviewer/app.py

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424

2525
from jinja2 import Environment, FileSystemLoader
2626

27-
from traitlets import Any, Dict, Set, Unicode, default
27+
from traitlets import Any, Bool, Dict, Int, List, Set, Unicode, default
2828
from traitlets.config import Application
2929

3030
from .handlers import init_handlers
3131
from .cache import DummyAsyncCache, AsyncMultipartMemcache, MockCache, pylibmc
3232
from .index import NoSearch
33-
from .formats import configure_formats
33+
from .formats import default_formats
34+
from nbconvert.exporters.export import exporter_map
35+
3436
from .providers import default_providers, default_rewrites
3537
from .providers.url.client import NBViewerAsyncHTTPClient as HTTPClientClass
3638
from .ratelimit import RateLimiter
@@ -122,10 +124,11 @@ def _load_max_cache_uris(self):
122124
max_cache_uris.add('/' + link['target'])
123125
return max_cache_uris
124126

127+
processes = Int(default_value=0, help="use processes instead of threads for rendering").tag(config=True)
128+
125129
static_path = Unicode(default_value=os.environ.get("NBVIEWER_STATIC_PATH", ""), help="Custom path for loading additional static files.").tag(config=True)
126130

127131
static_url_prefix = Unicode(default_value='/static/').tag(config=True)
128-
129132
# Not exposed to end user for configuration, since needs to access base_url
130133
_static_url_prefix = Unicode()
131134
@default('_static_url_prefix')
@@ -204,8 +207,7 @@ def fetch_kwargs(self):
204207

205208
@cached_property
206209
def formats(self):
207-
formats = configure_formats(options, self.config, log.app_log)
208-
return formats
210+
return self.configure_formats(log.app_log)
209211

210212
# load frontpage sections
211213
@cached_property
@@ -223,8 +225,8 @@ def frontpage_setup(self):
223225

224226
@cached_property
225227
def pool(self):
226-
if options.processes:
227-
pool = ProcessPoolExecutor(options.processes)
228+
if self.processes:
229+
pool = ProcessPoolExecutor(self.processes)
228230
else:
229231
pool = ThreadPoolExecutor(options.threads)
230232
return pool
@@ -254,6 +256,31 @@ def template_paths(self):
254256
template_paths = [default_template_path]
255257
return template_paths
256258

259+
def configure_formats(self, log, formats=None):
260+
"""
261+
Format-specific configuration.
262+
"""
263+
if formats is None:
264+
formats = default_formats()
265+
266+
# This would be better defined in a class
267+
self.config.HTMLExporter.template_file = 'basic'
268+
self.config.SlidesExporter.template_file = 'slides_reveal'
269+
270+
self.config.TemplateExporter.template_path = [
271+
os.path.join(os.path.dirname(__file__), "templates", "nbconvert")
272+
]
273+
274+
for key, format in formats.items():
275+
exporter_cls = format.get("exporter", exporter_map[key])
276+
if self.processes:
277+
# can't pickle exporter instances,
278+
formats[key]["exporter"] = exporter_cls
279+
else:
280+
formats[key]["exporter"] = exporter_cls(config=self.config, log=log)
281+
282+
return formats
283+
257284
def init_tornado_application(self):
258285
# handle handlers
259286
handler_names = dict(
@@ -415,7 +442,6 @@ def default_endpoint():
415442
define("no_cache", default=False, help="Do not cache results", type=bool)
416443
define("no_check_certificate", default=False, help="Do not validate SSL certificates", type=bool)
417444
define("port", default=default_endpoint()['port'], help="run on the given port", type=int)
418-
define("processes", default=0, help="use processes instead of threads for rendering", type=int)
419445
define("provider_rewrites", default=default_rewrites, help="Full dotted package(s) that provide `uri_rewrites`", type=str, multiple=True, group="provider")
420446
define("providers", default=default_providers, help="Full dotted package(s) that provide `default_handlers`", type=str, multiple=True, group="provider")
421447
define("proxy_host", default="", help="The proxy URL.", type=str)

nbviewer/formats.py

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
# the file COPYING, distributed as part of this software.
66
#-----------------------------------------------------------------------------
77

8-
import os
9-
10-
from nbconvert.exporters.export import exporter_map
11-
12-
138
def default_formats():
149
"""
1510
Return the currently-implemented formats.
@@ -76,29 +71,3 @@ def test_slides(nb, json):
7671
'content_type': 'text/plain; charset=UTF-8'
7772
}
7873
}
79-
80-
81-
def configure_formats(options, config, log, formats=None):
82-
"""
83-
Format-specific configuration.
84-
"""
85-
if formats is None:
86-
formats = default_formats()
87-
88-
# This would be better defined in a class
89-
config.HTMLExporter.template_file = 'basic'
90-
config.SlidesExporter.template_file = 'slides_reveal'
91-
92-
config.TemplateExporter.template_path = [
93-
os.path.join(os.path.dirname(__file__), "templates", "nbconvert")
94-
]
95-
96-
for key, format in formats.items():
97-
exporter_cls = format.get("exporter", exporter_map[key])
98-
if options.processes:
99-
# can't pickle exporter instances,
100-
formats[key]["exporter"] = exporter_cls
101-
else:
102-
formats[key]["exporter"] = exporter_cls(config=config, log=log)
103-
104-
return formats

0 commit comments

Comments
 (0)