##// END OF EJS Templates
Merge pull request #2389 from takluyver/catch-histdb-errors...
Merge pull request #2389 from takluyver/catch-histdb-errors Catch sqlite DatabaseErrors in more places when reading the history database It seems sqlite can encounter corruption and throw an error when reading the database, although it has connected successfully. This borrows the move-and-recreate machinery we already had on connecting to the database. If such an error occurs, the corrupted file is moved and the user get warned of the name of the corrupted file.

File last commit:

r7948:f374909a
r8503:7904325b merge
Show More
mathjax.py
93 lines | 3.1 KiB | text/x-python | PythonLexer
"""Utility function for installing MathJax javascript library into
the notebook's 'static' directory, for offline use.
Authors:
* Min RK
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2011 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import os
import shutil
import urllib2
import tempfile
import tarfile
from IPython.utils.path import locate_profile
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
def install_mathjax(tag='v2.0', replace=False, dest=None):
"""Download and install MathJax for offline use.
You can use this to install mathjax to a location on your static file
path. This includes the `static` directory within your IPython profile,
which is the default location for this install.
MathJax is a ~15MB download, and ~150MB installed.
Parameters
----------
replace : bool [False]
Whether to remove and replace an existing install.
tag : str ['v2.0']
Which tag to download. Default is 'v2.0', the current stable release,
but alternatives include 'v1.1' and 'master'.
dest : path
The path to the directory in which mathjax will be installed.
The default is `IPYTHONDIR/profile_default/static`.
dest must be on your notebook static_path when you run the notebook server.
The default location works for this.
"""
mathjax_url = "https://github.com/mathjax/MathJax/tarball/%s" % tag
if dest is None:
dest = os.path.join(locate_profile('default'), 'static')
if not os.path.exists(dest):
os.mkdir(dest)
static = dest
dest = os.path.join(static, 'mathjax')
# check for existence and permissions
if not os.access(static, os.W_OK):
raise IOError("Need have write access to %s" % static)
if os.path.exists(dest):
if replace:
if not os.access(dest, os.W_OK):
raise IOError("Need have write access to %s" % dest)
print "removing previous MathJax install"
shutil.rmtree(dest)
else:
print "offline MathJax apparently already installed"
return
# download mathjax
print "Downloading mathjax source from %s ..." % mathjax_url
response = urllib2.urlopen(mathjax_url)
print "done"
# use 'r|gz' stream mode, because socket file-like objects can't seek:
tar = tarfile.open(fileobj=response.fp, mode='r|gz')
topdir = tar.firstmember.path
print "Extracting to %s" % dest
tar.extractall(static)
# it will be mathjax-MathJax-<sha>, rename to just mathjax
os.rename(os.path.join(static, topdir), dest)
__all__ = ['install_mathjax']