New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Install mathjax for offline use #714
Conversation
from IPython.external.mathjax import install_mathjax install_mathjax() * add mathjax destination to gitignore
I actually was asking @ellisonbg about the same of switching priorities. On Friday for some odd reason the mathjax CDN was timing out on my firefox session (it seems to be some dd interaction with firebug, couldn't quite figure it out) and I had to do this switch locally just so I could keep working. But I'd like Brian to give us his take on it. In terms of the other code, a couple of comments.
I'm not sure how much the latter is really needed, since you tend to only not have sudo on servers, which by definition need good net connectivity. This is mostly needed for laptops likely to be offline. I just want to float the thought before we finalize it and merge. |
I think this makes perfect sense...but then where should we move the Qt import code to, since it doesn't qualify? And where should the mathjax install go? IPython.utils? IPython.frontend.html.notebook.util? The ssh code was also put into external, with the argument that it is really a standalone tool, that could be brought into another package (specifically pyzmq). It can be moved to IPython.utils as well
It would be possible, as I think was discussed on IRC or Skype, to add some location in |
It seems to me that IPython.utils is fine... I didn't realize that we had let other things slip into external. We should probably clean that up later on, though by now we'll have to be more careful and put in deprecation warnings, as someone is likely to have started using those locations. As for the local install, we can leave that for a future pass, if you prefer. I don't have strong feelings about it. |
I think external is a much better place than this. MathJax is a an external dependency that we would ship if it were not smaller. If we don't do external, then I think it should be in IPython.frontend.html.notebook. |
If we want IPython.external to be something that distributors can easily ship without, then we should change all our conditional external imports, such that the try/except is in the actual import, rather then relying on IPython.external to do the logic: try:
import package
except ImportError:
from IPython.external import package We frequently do just the external import, and let the |
Add simple function to
IPython.external
for installing mathjax to the static dir for offline use. It checks for permission, existence, etc. and allows for installing from different tags, e.g. if you want to use stable (v1.1) or master.All you need to do to get offline mathjax is:
This could be located somewhere else, or also called from a magic, but external seemed the most logical place, since it is for bundling an external library.
I also reversed the priority of offline/cdn mathjax, so offline mathjax is preferred, since it is presumably less expensive to load. Of course, this is only true in the local network case, and a notebook server that's run from a real server would probably prefer to use the cdn. This is in a separate commit, so it's easy to rollback if we want to keep the CDN priority.