Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
metadata_path = os.path.dirname(rstfilename)
unique_key = nbfilename.rstrip('.ipynb')
resources = {
'metadata': {'path': metadata_path},
'output_files_dir': output_files_dir,
# Prefix for the output image filenames
'unique_key': unique_key
}
# Read notebook
with open(nbfilepath, 'r') as f:
nb = nbformat.read(f, as_version=4)
# Export
exporter = nbsphinx.Exporter(execute='never', allow_errors=True)
(body, resources) = exporter.from_notebook_node(nb, resources)
# Correct path for the resources
for filename in list(resources['outputs'].keys()):
tmp = os.path.join(RST_PATH, filename)
resources['outputs'][tmp] = resources['outputs'].pop(filename)
fw = FilesWriter()
fw.build_directory = RST_PATH
# Prevent "not in doctree" complains
resources['output_extension'] = ''
body = 'Examples\n--------\n' + body
fw.write(body, resources, notebook_name=rstfilename)
The extension of the file is '.txt' since it will
note be part of the `toctree`.
"""
path = os.path.dirname(rst_filename)
basename = os.path.splitext(os.path.basename(rst_filename))[0]
resources_d = {
'metadata': {'path': path},
'output_files_dir': basename
}
# Read notebook
with open(notebook_filename, 'r') as f:
nb = nbformat.read(f, as_version=4)
# Export
rst_exporter = nbsphinx.Exporter(execute='never', allow_errors=True)
(body, resources) = rst_exporter.from_notebook_node(
nb, resources_d)
# Correct path for the resources
for filename in list(resources['outputs'].keys()):
tmp = '{}/{}'.format(path, filename)
resources['outputs'][tmp] = resources['outputs'].pop(filename)
fw = FilesWriter()
fw.build_directory = path
# Prevent "not in doctree" complains
resources['output_extension'] = '.txt'
body = 'Examples\n--------\n' + body
return fw.write(body, resources, notebook_name=basename)
# Hack `nbsphinx` to enable us to hide certain input cells in the
# jupyter notebooks. This works with nbsphinx==0.5.0
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% block input -%}",
'{% block input -%}\n{%- if not "hide_input" in cell.metadata.tags %}',
)
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% endblock input %}", "{% endif %}\n{% endblock input %}"
)
# Hack `nbsphinx` to prevent fixed-height images, which look
# terrible when the window is resized!
nbsphinx.RST_TEMPLATE = re.sub(
r"\{%- if height %\}.*?{% endif %}",
"",
nbsphinx.RST_TEMPLATE,
flags=re.DOTALL,
)
# Hack the docstrings of the different base maps. This allows us
# to have a different docs page for radial velocity maps, reflected
# light maps, etc, even though those classes are instantiated via
# a class factory and don't actually exist in the starry namespace.
class CustomBase(object):
@property
def amp(self):
"""
The overall amplitude of the map in arbitrary units. This factor
multiplies the intensity and the flux and is thus proportional to the
luminosity of the object. For multi-wavelength maps, this is a vector
corresponding to the amplitude of each wavelength bin.
For reflected light maps, this is the average spherical albedo
# -*- coding: utf-8 -*-
import nbsphinx
import os
import sys
import starry
import re
import packaging
import urllib
from sphinx.ext import autodoc
# Hack `nbsphinx` to enable us to hide certain input cells in the
# jupyter notebooks. This works with nbsphinx==0.5.0
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% block input -%}",
'{% block input -%}\n{%- if not "hide_input" in cell.metadata.tags %}',
)
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% endblock input %}", "{% endif %}\n{% endblock input %}"
)
# Hack `nbsphinx` to prevent fixed-height images, which look
# terrible when the window is resized!
nbsphinx.RST_TEMPLATE = re.sub(
r"\{%- if height %\}.*?{% endif %}",
"",
nbsphinx.RST_TEMPLATE,
flags=re.DOTALL,
)
from sphinx.ext import autodoc
# Hack `nbsphinx` to enable us to hide certain input cells in the
# jupyter notebooks. This works with nbsphinx==0.5.0
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% block input -%}",
'{% block input -%}\n{%- if not "hide_input" in cell.metadata.tags %}',
)
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% endblock input %}", "{% endif %}\n{% endblock input %}"
)
# Hack `nbsphinx` to prevent fixed-height images, which look
# terrible when the window is resized!
nbsphinx.RST_TEMPLATE = re.sub(
r"\{%- if height %\}.*?{% endif %}",
"",
nbsphinx.RST_TEMPLATE,
flags=re.DOTALL,
)
# Hack the docstrings of the different base maps. This allows us
# to have a different docs page for radial velocity maps, reflected
# light maps, etc, even though those classes are instantiated via
# a class factory and don't actually exist in the starry namespace.
class CustomBase(object):
@property
def amp(self):
"""
The overall amplitude of the map in arbitrary units. This factor
multiplies the intensity and the flux and is thus proportional to the
import os
import sys
import starry
import re
import packaging
import urllib
from sphinx.ext import autodoc
# Hack `nbsphinx` to enable us to hide certain input cells in the
# jupyter notebooks. This works with nbsphinx==0.5.0
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% block input -%}",
'{% block input -%}\n{%- if not "hide_input" in cell.metadata.tags %}',
)
nbsphinx.RST_TEMPLATE = nbsphinx.RST_TEMPLATE.replace(
"{% endblock input %}", "{% endif %}\n{% endblock input %}"
)
# Hack `nbsphinx` to prevent fixed-height images, which look
# terrible when the window is resized!
nbsphinx.RST_TEMPLATE = re.sub(
r"\{%- if height %\}.*?{% endif %}",
"",
nbsphinx.RST_TEMPLATE,
flags=re.DOTALL,
)
# Hack the docstrings of the different base maps. This allows us
# to have a different docs page for radial velocity maps, reflected
# light maps, etc, even though those classes are instantiated via
# a class factory and don't actually exist in the starry namespace.
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.mathjax',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
source_suffix = ['.rst', '.ipynb']
source_parsers = {'ipynb': NotebookParser}
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Jupyter Notebook Tools for Sphinx'
author = u'Matthias Geier'
copyright = u'2015, ' + author
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
dest_path = os.path.normpath(os.path.join(source_dir, dest_path))
if os.path.exists(src_path):
any_dirs = any_dirs or os.path.isdir(src_path)
copy_and_register_files(src_path, dest_path, document)
else:
logger.warning(
'The path "{}", defined in {} "extra-media", '
'isn\'t a valid path.'.format(
extract_media_path, source_file
)
)
if any_dirs:
document.settings.env.note_reread()
class LinkedNotebookParser(NotebookParser):
"""A parser for .nblink files.
The parser will replace the link file with the output from
nbsphinx on the linked notebook. It will also add the linked
file as a dependency, so that sphinx will take it into account
when figuring out whether it should be rebuilt.
The .nblink file is a JSON file with the following structure:
{
"path": "relative/path/to/notebook"
}
Optionally the "extra-media" key can be added, if your notebook includes
any media, i.e. images. The value needs to be an array of strings,
which are paths to the media files or directories.
try:
include_file = io.FileInput(source_path=path, encoding='utf8')
except UnicodeEncodeError as error:
raise NotebookError(u'Problems with linked notebook "%s" path:\n'
'Cannot encode input file path "%s" '
'(wrong locale?).' %
(env.docname, SafeString(path)))
except IOError as error:
raise NotebookError(u'Problems with linked notebook "%s" path:\n%s.' %
(env.docname, ErrorString(error)))
try:
rawtext = include_file.read()
except UnicodeError as error:
raise NotebookError(u'Problem with linked notebook "%s":\n%s' %
(env.docname, ErrorString(error)))
return super(LinkedNotebookParser, self).parse(rawtext, document)
lambda s: nbformat.reads(s, as_version=_ipynbversion))