[yt-svn] commit/yt: xarthisius: Merged in ngoldbaum/yt (pull request #1338)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Fri Dec 5 09:15:21 PST 2014
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/539fc4d8afb4/
Changeset: 539fc4d8afb4
Branch: yt
User: xarthisius
Date: 2014-12-05 17:15:07+00:00
Summary: Merged in ngoldbaum/yt (pull request #1338)
Cleanup of sphinx extensions, including parallel reading and writing
Affected #: 8 files
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/extensions/notebook_sphinxext.py
--- a/doc/extensions/notebook_sphinxext.py
+++ b/doc/extensions/notebook_sphinxext.py
@@ -1,4 +1,8 @@
-import os, shutil, string, glob, re
+import os
+import shutil
+import string
+import re
+import tempfile
from sphinx.util.compat import Directive
from docutils import nodes
from docutils.parsers.rst import directives
@@ -14,7 +18,7 @@
"""
required_arguments = 1
optional_arguments = 1
- option_spec = {'skip_exceptions' : directives.flag}
+ option_spec = {'skip_exceptions': directives.flag}
final_argument_whitespace = True
def run(self): # check if there are spaces in the notebook name
@@ -26,9 +30,11 @@
if not self.state.document.settings.raw_enabled:
raise self.warning('"%s" directive disabled.' % self.name)
+ cwd = os.getcwd()
+ tmpdir = tempfile.mkdtemp()
+ os.chdir(tmpdir)
+
# get path to notebook
- source_dir = os.path.dirname(
- os.path.abspath(self.state.document.current_source))
nb_filename = self.arguments[0]
nb_basename = os.path.basename(nb_filename)
rst_file = self.state_machine.document.attributes['source']
@@ -37,7 +43,6 @@
# Move files around.
rel_dir = os.path.relpath(rst_dir, setup.confdir)
- rel_path = os.path.join(rel_dir, nb_basename)
dest_dir = os.path.join(setup.app.builder.outdir, rel_dir)
dest_path = os.path.join(dest_dir, nb_basename)
@@ -56,7 +61,6 @@
rel_path_script = string.replace(nb_basename, '.ipynb', '.py')
# Create python script vesion
- unevaluated_text = nb_to_html(nb_abs_path)
script_text = nb_to_python(nb_abs_path)
f = open(dest_path_script, 'w')
f.write(script_text.encode('utf8'))
@@ -85,12 +89,9 @@
# add dependency
self.state.document.settings.record_dependencies.add(nb_abs_path)
- # clean up png files left behind by notebooks.
- png_files = glob.glob("*.png")
- fits_files = glob.glob("*.fits")
- h5_files = glob.glob("*.h5")
- for file in png_files:
- os.remove(file)
+ # clean up
+ os.chdir(cwd)
+ shutil.rmtree(tmpdir, True)
return [nb_node]
@@ -113,7 +114,8 @@
# http://imgur.com/eR9bMRH
header = header.replace('<style', '<style scoped="scoped"')
- header = header.replace('body {\n overflow: visible;\n padding: 8px;\n}\n', '')
+ header = header.replace('body {\n overflow: visible;\n padding: 8px;\n}\n',
+ '')
header = header.replace("code,pre{", "code{")
# Filter out styles that conflict with the sphinx theme.
@@ -124,17 +126,19 @@
'uneditable-input{',
'collapse{',
]
+
filter_strings.extend(['h%s{' % (i+1) for i in range(6)])
- line_begin_strings = [
+ line_begin = [
'pre{',
'p{margin'
- ]
+ ]
- header_lines = filter(
- lambda x: not any([s in x for s in filter_strings]), header.split('\n'))
- header_lines = filter(
- lambda x: not any([x.startswith(s) for s in line_begin_strings]), header_lines)
+ filterfunc = lambda x: not any([s in x for s in filter_strings])
+ header_lines = filter(filterfunc, header.split('\n'))
+
+ filterfunc = lambda x: not any([x.startswith(s) for s in line_begin])
+ header_lines = filter(filterfunc, header_lines)
header = '\n'.join(header_lines)
@@ -147,8 +151,6 @@
def evaluate_notebook(nb_path, dest_path=None, skip_exceptions=False):
# Create evaluated version and save it to the dest path.
- # Always use --pylab so figures appear inline
- # perhaps this is questionable?
notebook = read(open(nb_path), 'json')
nb_runner = NotebookRunner(notebook, pylab=False)
try:
@@ -158,8 +160,11 @@
print e
# Return the traceback, filtering out ANSI color codes.
# http://stackoverflow.com/questions/13506033/filtering-out-ansi-escape-sequences
- return 'Notebook conversion failed with the following traceback: \n%s' % \
- re.sub(r'\\033[\[\]]([0-9]{1,2}([;@][0-9]{0,2})*)*[mKP]?', '', str(e))
+ return "Notebook conversion failed with the " \
+ "following traceback: \n%s" % \
+ re.sub(r'\\033[\[\]]([0-9]{1,2}([;@][0-9]{0,2})*)*[mKP]?', '',
+ str(e))
+
if dest_path is None:
dest_path = 'temp_evaluated.ipynb'
write(nb_runner.nb, open(dest_path, 'w'), 'json')
@@ -186,3 +191,11 @@
html=(visit_notebook_node, depart_notebook_node))
app.add_directive('notebook', NotebookDirective)
+
+ retdict = dict(
+ version='0.1',
+ parallel_read_safe=True,
+ parallel_write_safe=True
+ )
+
+ return retdict
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/extensions/notebookcell_sphinxext.py
--- a/doc/extensions/notebookcell_sphinxext.py
+++ b/doc/extensions/notebookcell_sphinxext.py
@@ -1,15 +1,15 @@
-import os, shutil, string, glob, io
+import os
+import shutil
+import io
+import tempfile
from sphinx.util.compat import Directive
from docutils.parsers.rst import directives
-from IPython.nbconvert import html, python
from IPython.nbformat import current
-from runipy.notebook_runner import NotebookRunner
-from jinja2 import FileSystemLoader
from notebook_sphinxext import \
- notebook_node, nb_to_html, nb_to_python, \
- visit_notebook_node, depart_notebook_node, \
+ notebook_node, visit_notebook_node, depart_notebook_node, \
evaluate_notebook
+
class NotebookCellDirective(Directive):
"""Insert an evaluated notebook cell into a document
@@ -19,13 +19,17 @@
required_arguments = 0
optional_arguments = 1
has_content = True
- option_spec = {'skip_exceptions' : directives.flag}
+ option_spec = {'skip_exceptions': directives.flag}
def run(self):
# check if raw html is supported
if not self.state.document.settings.raw_enabled:
raise self.warning('"%s" directive disabled.' % self.name)
+ cwd = os.getcwd()
+ tmpdir = tempfile.mkdtemp()
+ os.chdir(tmpdir)
+
# Construct notebook from cell content
content = "\n".join(self.content)
with open("temp.py", "w") as f:
@@ -35,7 +39,8 @@
skip_exceptions = 'skip_exceptions' in self.options
- evaluated_text = evaluate_notebook('temp.ipynb', skip_exceptions=skip_exceptions)
+ evaluated_text = evaluate_notebook('temp.ipynb',
+ skip_exceptions=skip_exceptions)
# create notebook node
attributes = {'format': 'html', 'source': 'nb_path'}
@@ -44,9 +49,8 @@
self.state_machine.get_source_and_line(self.lineno)
# clean up
- files = glob.glob("*.png") + ['temp.py', 'temp.ipynb']
- for file in files:
- os.remove(file)
+ os.chdir(cwd)
+ shutil.rmtree(tmpdir, True)
return [nb_node]
@@ -60,6 +64,14 @@
app.add_directive('notebook-cell', NotebookCellDirective)
+ retdict = dict(
+ version='0.1',
+ parallel_read_safe=True,
+ parallel_write_safe=True
+ )
+
+ return retdict
+
def convert_to_ipynb(py_file, ipynb_file):
with io.open(py_file, 'r', encoding='utf-8') as f:
notebook = current.reads(f.read(), format='py')
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/extensions/numpydocmod/numpydoc.py
--- a/doc/extensions/numpydocmod/numpydoc.py
+++ b/doc/extensions/numpydocmod/numpydoc.py
@@ -99,6 +99,15 @@
app.add_domain(NumpyPythonDomain)
app.add_domain(NumpyCDomain)
+ retdict = dict(
+ version='0.1',
+ parallel_read_safe=True,
+ parallel_write_safe=True
+ )
+
+ return retdict
+
+
#------------------------------------------------------------------------------
# Docstring-mangling domains
#------------------------------------------------------------------------------
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/extensions/pythonscript_sphinxext.py
--- a/doc/extensions/pythonscript_sphinxext.py
+++ b/doc/extensions/pythonscript_sphinxext.py
@@ -55,6 +55,14 @@
setup.config = app.config
setup.confdir = app.confdir
+ retdict = dict(
+ version='0.1',
+ parallel_read_safe=True,
+ parallel_write_safe=True
+ )
+
+ return retdict
+
def get_image_tag(filename):
with open(filename, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/extensions/youtube.py
--- a/doc/extensions/youtube.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# http://countergram.com/youtube-in-rst
-
-from docutils import nodes
-from docutils.parsers.rst import directives
-
-CODE = """\
-<object type="application/x-shockwave-flash"
- width="%(width)s"
- height="%(height)s"
- class="youtube-embed"
- data="http://www.youtube.com/v/%(yid)s">
- <param name="movie" value="http://www.youtube.com/v/%(yid)s"></param>
- <param name="wmode" value="transparent"></param>%(extra)s
-</object>
-"""
-
-PARAM = """\n <param name="%s" value="%s"></param>"""
-
-def youtube(name, args, options, content, lineno,
- contentOffset, blockText, state, stateMachine):
- """ Restructured text extension for inserting youtube embedded videos """
- if len(content) == 0:
- return
- string_vars = {
- 'yid': content[0],
- 'width': 425,
- 'height': 344,
- 'extra': ''
- }
- extra_args = content[1:] # Because content[0] is ID
- extra_args = [ea.strip().split("=") for ea in extra_args] # key=value
- extra_args = [ea for ea in extra_args if len(ea) == 2] # drop bad lines
- extra_args = dict(extra_args)
- if 'width' in extra_args:
- string_vars['width'] = extra_args.pop('width')
- if 'height' in extra_args:
- string_vars['height'] = extra_args.pop('height')
- if extra_args:
- params = [PARAM % (key, extra_args[key]) for key in extra_args]
- string_vars['extra'] = "".join(params)
- return [nodes.raw('', CODE % (string_vars), format='html')]
-youtube.content = True
-directives.register_directive('youtube', youtube)
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/extensions/yt_colormaps.py
--- a/doc/extensions/yt_colormaps.py
+++ b/doc/extensions/yt_colormaps.py
@@ -15,6 +15,14 @@
setup.config = app.config
setup.confdir = app.confdir
+ retdict = dict(
+ version='0.1',
+ parallel_read_safe=True,
+ parallel_write_safe=True
+ )
+
+ return retdict
+
class ColormapScript(Directive):
required_arguments = 1
optional_arguments = 0
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/extensions/yt_cookbook.py
--- a/doc/extensions/yt_cookbook.py
+++ b/doc/extensions/yt_cookbook.py
@@ -15,6 +15,14 @@
setup.config = app.config
setup.confdir = app.confdir
+ retdict = dict(
+ version='0.1',
+ parallel_read_safe=True,
+ parallel_write_safe=True
+ )
+
+ return retdict
+
data_patterns = ["*.h5", "*.out", "*.dat"]
class CookbookScript(Directive):
diff -r c718db324c9f1e0674891cddaf081d97ae8c6aec -r 539fc4d8afb4c69c8948e5bb42b2d0dfcc817916 doc/source/conf.py
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -31,7 +31,7 @@
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx',
'sphinx.ext.pngmath', 'sphinx.ext.viewcode',
- 'numpydocmod', 'youtube', 'yt_cookbook', 'yt_colormaps']
+ 'numpydocmod', 'yt_cookbook', 'yt_colormaps']
if not on_rtd:
extensions.append('sphinx.ext.autosummary')
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list