├── .gitignore ├── .htaccess ├── CNAME ├── Makefile ├── README.md ├── _scripts ├── copy_trees.py └── gh-pages.py ├── _static ├── John-hunter-crop-2.jpeg ├── RS_PoweredBy_OCC_logo-2c.png ├── fancybox │ ├── .gitattributes │ ├── blank.gif │ ├── fancybox_loading.gif │ ├── fancybox_overlay.png │ ├── fancybox_sprite.png │ ├── ipython.fancybox.js │ ├── jquery.fancybox.css │ ├── jquery.fancybox.js │ ├── jquery.fancybox.pack.js │ └── jquery.mousewheel-3.0.6.pack.js ├── favicon.ico ├── ipy_0.11.png ├── ipy_0.12.png ├── ipy_0.13.png ├── ipython-book.jpg ├── ipython-cookbook-2nd.png ├── ipython-cookbook.jpg ├── jquery.js ├── jupyter-for-ds.png ├── jupyter-in-depth.png ├── jupyter-notebook-for-all-I.jpg ├── jupyter-notebook-for-all-II.jpg ├── jupytercon-logo.svg ├── learning-jupyter-book.png ├── mastering-ipython-book.png ├── microsoft-logo.png ├── nbviewer-thm-1.png ├── nbviewer-thm-2.png ├── nbviewer-thm-3.png ├── nbviewer-thm-4.png ├── nbviewer-thm-5.png ├── nbviewer-thm-6.png ├── nbviewer-thm-7.png ├── nbviewer-thm-8.png ├── nbviewer-thm-9.png ├── nbviewer_thm.js ├── screenshots │ ├── ipython-notebook-thumb.png │ ├── ipython-notebook.png │ ├── ipython-qtconsole-thumb.png │ ├── ipython-qtconsole.png │ ├── ipython-terminal-thumb.png │ └── ipython-terminal.png ├── simons-logo.png ├── sloan-logo.png ├── sloangrant │ ├── 13_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-widgets.png │ ├── 9_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-specgram.png │ ├── sloan-grant.html │ └── sloan-grant.pdf ├── survey2011 │ ├── countries.png │ ├── partsused.png │ ├── platforms.png │ └── sector.png └── survey2013 │ ├── components.png │ ├── countries.png │ ├── help_resources.png │ ├── installation.png │ ├── ipy_versions.png │ ├── platforms.png │ ├── py_versions.png │ └── role.png ├── _templates ├── download.html ├── gallery.html ├── navbar.html ├── screenshots.html └── sidebar_links.html ├── books.rst ├── books_policy.rst ├── citing.rst ├── conf.py ├── documentation.rst ├── donate.rst ├── faq.rst ├── google46f5e5c36b67754a.html ├── index.rst ├── install.rst ├── links.txt ├── logos ├── IPy-sq-14.png ├── IPy_Droid-Sans-Mono-Logo.svg ├── IPy_Droid-Sans-Mono.svg ├── IPy_header.png ├── IPy_logo.png ├── IPythonConsole.svg ├── ipython-in-pygtk.png ├── logo-hpc2008-header.png └── pycon2012-banner.svg ├── microsoft-donation-2013.rst ├── news.rst ├── notebook.rst ├── presentation.rst ├── project.rst ├── pyreadline.rst ├── roadmap-announcement.rst ├── searchresults.rst ├── security.rst ├── sloan-grant.rst ├── themes └── agogo │ ├── layout.html │ ├── static │ ├── agogo.css_t │ └── ipython.css │ └── theme.conf ├── usersurvey2011.rst ├── usersurvey2013.rst ├── whatsnew082.rst └── whatsnew083.rst /.gitignore: -------------------------------------------------------------------------------- 1 | _build 2 | gh-pages 3 | 4 | *.pdf 5 | *.ppt 6 | *.odp 7 | *.pyc 8 | 9 | *~ 10 | .build/* 11 | .travis/travis_id_rsa_2048 12 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | # By default, Dreamhost will treat .py files as cgi scripts, whereas I'm not 2 | # running any python CGI code here. It's therefore OK to set .py to be plain 3 | # text everywhere, by making this the site top-level .htaccess file. 4 | # 5 | # If I ever start using .py cgi scripts, I can always make a directory-specific 6 | # .htaccess file that makes the .py handler be the cgi one. 7 | 8 | # This sets up the *server* side handler for python files. 9 | AddHandler default-handler .py 10 | # This tells the *clients* to treat python files as plain text (MIME type) 11 | AddType text/plain .py 12 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | ipython.org 2 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for building a website using sphinx. 2 | # This Makefile has been heavily modified from the original that 3 | # sphinx-quickstart automatically creates 4 | 5 | # You can set these variables from the command line. 6 | SPHINXOPTS = 7 | SPHINXBUILD = sphinx-build 8 | BUILDDIR = _build 9 | SOURCEDIR = . 10 | 11 | # Other variables for site management, css updating, etc. 12 | STATICDIR = _static 13 | STATIC_CSS = themes/agogo/static 14 | 15 | # Internal variables. 16 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) $(SOURCEDIR) 17 | 18 | .PHONY: help clean html site linkcheck doctest gh-pages dist 19 | 20 | default: site 21 | 22 | help: 23 | @echo "Please use \`make ' where is one of" 24 | @echo " html : make standalone HTML files" 25 | @echo " linkcheck: check all external links for integrity" 26 | @echo " doctest : run all doctests embedded in the documentation (if enabled)" 27 | @echo " gh-pages : push the local site build to its public location" 28 | @echo " dist : create a tarball (no .git dir) of site" 29 | 30 | clean: 31 | -rm -rf $(BUILDDIR)/* 32 | -rm -f *~ 33 | 34 | html: 35 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 36 | @echo 37 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 38 | 39 | 40 | linkcheck: site 41 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 42 | @echo 43 | @echo "Link check complete; look for any errors in the above output " \ 44 | "or in $(BUILDDIR)/linkcheck/output.txt." 45 | 46 | doctest: 47 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 48 | @echo "Testing of doctests in the sources finished, look at the " \ 49 | "results in $(BUILDDIR)/doctest/output.txt." 50 | 51 | # fperez - new targets I've added after sphinx-quickstart 52 | site: clean html 53 | python _scripts/copy_trees.py 54 | 55 | # Copy changes to the repo from which they are served 56 | gh-pages: site 57 | python _scripts/gh-pages.py 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deployment 2 | 3 | Travis-CI should automatically deploy the website few minutes after 4 | the branches are merged or pushed on master, so you shouldn't need to 5 | worry about the building process. 6 | 7 | If you would like to build/push manually though, see next section. 8 | 9 | # Build website 10 | 11 | To manually build the website in the `gh-pages` directory, use 12 | 13 | ``` 14 | $ make gh-pages 15 | ``` 16 | 17 | This will clone the built-website repository, build a new version in it, auto-commit, 18 | and will then prompt you to check that everything is fine before pushing. Of course 19 | you need to have the right to push. 20 | 21 | Additionally run 22 | 23 | ``` 24 | $ make linkcheck 25 | ``` 26 | 27 | if you have time to spare. This will launch a check of all external links. 28 | 29 | # Edits 30 | 31 | Any fixes to the website, including this README, should be made in the 32 | [ipython-website repository](https://github.com/ipython/ipython-website). 33 | -------------------------------------------------------------------------------- /_scripts/copy_trees.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2.6 2 | """Copy data files to final html directory. 3 | """ 4 | 5 | #----------------------------------------------------------------------------- 6 | # Imports 7 | #----------------------------------------------------------------------------- 8 | from __future__ import print_function 9 | 10 | import os 11 | import sys 12 | 13 | from os.path import join as pjoin 14 | 15 | #----------------------------------------------------------------------------- 16 | # Config 17 | #----------------------------------------------------------------------------- 18 | 19 | # From sphinx conf.py 20 | sphinx_conf = {} 21 | 22 | with open("conf.py") as f: 23 | code = compile(f.read(), "conf.py", 'exec') 24 | exec(code, {}, sphinx_conf) 25 | 26 | # Local 27 | verbose = False 28 | #verbose = True 29 | 30 | # Directory with source files 31 | src_dir = '.' 32 | # Directory where final html tree is built 33 | out_dir = '_build/html' 34 | 35 | # Prefix of directories to skip (set when sphinx-quickstart was run) 36 | skip_prefix = '_' 37 | skip_extensions = set(['.rst']) 38 | # Other directory trees to skip 39 | skip_trees = set(['.git','sphinxext', 'gh-pages', 'logos', 'themes']) 40 | 41 | # Always skip source files, since shpinx already copies those 42 | skip_extensions.add(sphinx_conf.get('source_suffix','.rst')) 43 | 44 | # Any top-level files that may need to be copied as well 45 | top_files = ['links.txt'] 46 | 47 | #----------------------------------------------------------------------------- 48 | # Functions 49 | #----------------------------------------------------------------------------- 50 | 51 | oldprint = print 52 | 53 | def print(*args, **kw): 54 | verb = kw.pop('verbose', verbose) 55 | if verb: 56 | oldprint(*args, **kw) 57 | 58 | 59 | def keep_filename(f, skip_ext=skip_extensions): 60 | """Return whether to keep a file based on a list of extensions. 61 | 62 | Note that filenames ending in ~ are always excluded.""" 63 | 64 | if f.endswith('~'): 65 | return False 66 | 67 | return os.path.splitext(f)[1] not in skip_ext 68 | 69 | 70 | def copy_files(root, files): 71 | did_copy = False 72 | for fname in files: 73 | target = pjoin(out_dir, root, fname) 74 | if not (os.path.isfile(target) or os.path.islink(target)): 75 | print(target, end='') 76 | os.link(pjoin(root, fname), target) 77 | did_copy = True 78 | if did_copy: 79 | print() 80 | 81 | 82 | def main(): 83 | if not os.path.isdir(out_dir): 84 | err = 'ERROR: Output directory {0} not found.'.format(out_dir) 85 | print(err, file=sys.stderr, verbose=True) 86 | sys.exit(1) 87 | 88 | skip_base = pjoin(src_dir, skip_prefix) 89 | 90 | for root, dirs, files in os.walk(src_dir, followlinks=True): 91 | dirs.sort() 92 | print('root', root) 93 | 94 | if root==src_dir: 95 | # Only from the top, remove subdirs starting with skip prefix 96 | dirs[:] = [d for d in dirs if not 97 | (d.startswith(skip_prefix) or d in skip_trees )] 98 | print('top-level dirs:', dirs) 99 | #continue 100 | 101 | files = list(filter(keep_filename, files)) 102 | print(' dirs:', dirs) 103 | print(' files:', files) 104 | # Now, create the list of subdirs and files in the output 105 | for subdir in dirs: 106 | new_dir = pjoin(out_dir, root, subdir) 107 | if not os.path.isdir(new_dir): 108 | print("Making dir:",new_dir) 109 | os.mkdir(new_dir) 110 | 111 | if root == src_dir: 112 | # Only copy files for subdirs, not for the top-level (so we don't 113 | # copy makefiles and stuff like that) 114 | copy_files(root, set(top_files) & set(files)) 115 | 116 | copy_files(root, files) 117 | 118 | #----------------------------------------------------------------------------- 119 | # Execute as a script 120 | #----------------------------------------------------------------------------- 121 | if __name__ == '__main__': 122 | main() 123 | -------------------------------------------------------------------------------- /_scripts/gh-pages.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | from __future__ import print_function 4 | 5 | """Script to commit the doc build outputs into the github-pages repo. 6 | 7 | Use: 8 | 9 | gh-pages.py [tag] 10 | 11 | If no tag is given, the current output of 'git describe' is used. If given, 12 | that is how the resulting directory will be named. 13 | 14 | In practice, you should use either actual clean tags from a current build or 15 | something like 'current' as a stable URL for the most current version of the """ 16 | 17 | #----------------------------------------------------------------------------- 18 | # Imports 19 | #----------------------------------------------------------------------------- 20 | import os 21 | import re 22 | import shutil 23 | import datetime 24 | import sys 25 | from os import chdir as cd 26 | from os.path import join as pjoin 27 | 28 | from subprocess import Popen, PIPE, CalledProcessError, check_call 29 | 30 | #----------------------------------------------------------------------------- 31 | # Globals 32 | #----------------------------------------------------------------------------- 33 | 34 | pages_dir = 'gh-pages' 35 | html_dir = '_build/html' 36 | pages_repo = 'git://github.com/ipython/ipython.github.com.git' 37 | ssh_repo = 'git@github.com:ipython/ipython.github.com.git' 38 | 39 | #----------------------------------------------------------------------------- 40 | # Functions 41 | #----------------------------------------------------------------------------- 42 | def sh(cmd): 43 | """Execute command in a subshell, return status code.""" 44 | return check_call(cmd, shell=True) 45 | 46 | 47 | def sh2(cmd): 48 | """Execute command in a subshell, return stdout. 49 | 50 | Stderr is unbuffered from the subshell.x""" 51 | p = Popen(cmd, stdout=PIPE, shell=True) 52 | out = p.communicate()[0] 53 | retcode = p.returncode 54 | if retcode: 55 | raise CalledProcessError(retcode, cmd) 56 | else: 57 | return out.rstrip() 58 | 59 | 60 | def sh3(cmd): 61 | """Execute command in a subshell, return stdout, stderr 62 | 63 | If anything appears in stderr, print it out to sys.stderr""" 64 | p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) 65 | out, err = p.communicate() 66 | retcode = p.returncode 67 | if retcode: 68 | raise CalledProcessError(retcode, cmd) 69 | else: 70 | return out.rstrip(), err.rstrip() 71 | 72 | 73 | def init_repo(path): 74 | """clone the gh-pages repo if we haven't already.""" 75 | sh("git clone %s %s --depth=10"%(pages_repo, path)) 76 | # For an .github.com site, the pages go in master, so we don't need 77 | # to checkout gh-pages. 78 | 79 | #----------------------------------------------------------------------------- 80 | # Script starts 81 | #----------------------------------------------------------------------------- 82 | if __name__ == '__main__': 83 | startdir = os.getcwd() 84 | if not os.path.exists(pages_dir): 85 | # init the repo 86 | init_repo(pages_dir) 87 | else: 88 | # ensure up-to-date before operating 89 | cd(pages_dir) 90 | sh('git checkout master') 91 | sh('git pull') 92 | cd(startdir) 93 | 94 | # don't `make html` here, because gh-pages already depends on html in Makefile 95 | # sh('make html') 96 | 97 | # This is pretty unforgiving: we unconditionally nuke the destination 98 | # directory, and then copy the html tree in there 99 | sh('rm -r %s/*' % pages_dir) 100 | 101 | sh('cp -r %s/* %s/' % (html_dir, pages_dir)) 102 | 103 | try: 104 | cd(pages_dir) 105 | status = sh2('git status | head -1').decode('utf-8') 106 | branch = re.search('On branch (.*)$', status).group(1) 107 | if branch != 'master': 108 | e = 'On %r, git branch is %r, MUST be "master"' % (pages_dir, 109 | branch) 110 | raise RuntimeError(e) 111 | 112 | sh('git add -A') 113 | sh('git commit -m"Updated website (automated commit) – %s"' % datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")) 114 | try: 115 | sh('git remote add ghpages %s' % ssh_repo) 116 | except CalledProcessError: 117 | # locally remote will probably exist, 118 | pass 119 | print() 120 | print('Most recent 3 commits:') 121 | sys.stdout.flush() 122 | sh('git --no-pager log --oneline HEAD~3..') 123 | finally: 124 | cd(startdir) 125 | 126 | print() 127 | print('Now verify the build in: %r' % pages_dir) 128 | print("If everything looks good, 'git push'") 129 | -------------------------------------------------------------------------------- /_static/John-hunter-crop-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/John-hunter-crop-2.jpeg -------------------------------------------------------------------------------- /_static/RS_PoweredBy_OCC_logo-2c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/RS_PoweredBy_OCC_logo-2c.png -------------------------------------------------------------------------------- /_static/fancybox/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Denote all files that are truly binary and should not be modified. 5 | *.png binary 6 | *.jpg binary 7 | *.gif binary -------------------------------------------------------------------------------- /_static/fancybox/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/fancybox/blank.gif -------------------------------------------------------------------------------- /_static/fancybox/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/fancybox/fancybox_loading.gif -------------------------------------------------------------------------------- /_static/fancybox/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/fancybox/fancybox_overlay.png -------------------------------------------------------------------------------- /_static/fancybox/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/fancybox/fancybox_sprite.png -------------------------------------------------------------------------------- /_static/fancybox/ipython.fancybox.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | /* 3 | * Simple image gallery. Uses default settings 4 | */ 5 | 6 | $('.fancybox').fancybox(); 7 | 8 | /* 9 | * Different effects 10 | */ 11 | 12 | // Change title type, overlay closing speed 13 | $(".fancybox-effects-a").fancybox({ 14 | helpers: { 15 | title : { 16 | type : 'outside' 17 | }, 18 | overlay : { 19 | speedOut : 0 20 | } 21 | } 22 | }); 23 | 24 | // Disable opening and closing animations, change title type 25 | $(".fancybox-effects-b").fancybox({ 26 | openEffect : 'none', 27 | closeEffect : 'none', 28 | 29 | helpers : { 30 | title : { 31 | type : 'over' 32 | } 33 | } 34 | }); 35 | 36 | // Set custom style, close if clicked, change title type and overlay color 37 | $(".fancybox-effects-c").fancybox({ 38 | wrapCSS : 'fancybox-custom', 39 | closeClick : true, 40 | 41 | openEffect : 'none', 42 | 43 | helpers : { 44 | title : { 45 | type : 'inside' 46 | }, 47 | overlay : { 48 | css : { 49 | 'background' : 'rgba(238,238,238,0.85)' 50 | } 51 | } 52 | } 53 | }); 54 | 55 | // Remove padding, set opening and closing animations, close if clicked and disable overlay 56 | $(".fancybox-effects-d").fancybox({ 57 | padding: 0, 58 | 59 | openEffect : 'elastic', 60 | openSpeed : 150, 61 | 62 | closeEffect : 'elastic', 63 | closeSpeed : 150, 64 | 65 | closeClick : true, 66 | 67 | helpers : { 68 | overlay : null 69 | } 70 | }); 71 | 72 | /* 73 | * Button helper. Disable animations, hide close button, change title type and content 74 | */ 75 | 76 | $('.fancybox-buttons').fancybox({ 77 | openEffect : 'none', 78 | closeEffect : 'none', 79 | 80 | prevEffect : 'none', 81 | nextEffect : 'none', 82 | 83 | closeBtn : false, 84 | 85 | helpers : { 86 | title : { 87 | type : 'inside' 88 | }, 89 | buttons : {} 90 | }, 91 | 92 | afterLoad : function() { 93 | this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : ''); 94 | } 95 | }); 96 | 97 | 98 | /* 99 | * Thumbnail helper. Disable animations, hide close button, arrows and slide to next gallery item if clicked 100 | */ 101 | 102 | $('.fancybox-thumbs').fancybox({ 103 | prevEffect : 'none', 104 | nextEffect : 'none', 105 | 106 | closeBtn : false, 107 | arrows : false, 108 | nextClick : true, 109 | 110 | helpers : { 111 | thumbs : { 112 | width : 50, 113 | height : 50 114 | } 115 | } 116 | }); 117 | 118 | /* 119 | * Media helper. Group items, disable animations, hide arrows, enable media and button helpers. 120 | */ 121 | $('.fancybox-media') 122 | .attr('rel', 'media-gallery') 123 | .fancybox({ 124 | openEffect : 'none', 125 | closeEffect : 'none', 126 | prevEffect : 'none', 127 | nextEffect : 'none', 128 | 129 | arrows : false, 130 | helpers : { 131 | media : {}, 132 | buttons : {} 133 | } 134 | }); 135 | 136 | /* 137 | * Open manually 138 | */ 139 | 140 | $("#fancybox-manual-a").click(function() { 141 | $.fancybox.open('1_b.jpg'); 142 | }); 143 | 144 | $("#fancybox-manual-b").click(function() { 145 | $.fancybox.open({ 146 | href : 'iframe.html', 147 | type : 'iframe', 148 | padding : 5 149 | }); 150 | }); 151 | 152 | $("#fancybox-manual-c").click(function() { 153 | $.fancybox.open([ 154 | { 155 | href : '1_b.jpg', 156 | title : 'My title' 157 | }, { 158 | href : '2_b.jpg', 159 | title : '2nd title' 160 | }, { 161 | href : '3_b.jpg' 162 | } 163 | ], { 164 | helpers : { 165 | thumbs : { 166 | width: 75, 167 | height: 50 168 | } 169 | } 170 | }); 171 | }); 172 | 173 | 174 | }); 175 | -------------------------------------------------------------------------------- /_static/fancybox/jquery.fancybox.css: -------------------------------------------------------------------------------- 1 | /*! fancyBox v2.1.3 fancyapps.com | fancyapps.com/fancybox/#license */ 2 | .fancybox-wrap, 3 | .fancybox-skin, 4 | .fancybox-outer, 5 | .fancybox-inner, 6 | .fancybox-image, 7 | .fancybox-wrap iframe, 8 | .fancybox-wrap object, 9 | .fancybox-nav, 10 | .fancybox-nav span, 11 | .fancybox-tmp 12 | { 13 | padding: 0; 14 | margin: 0; 15 | border: 0; 16 | outline: none; 17 | vertical-align: top; 18 | } 19 | 20 | .fancybox-wrap { 21 | position: absolute; 22 | top: 0; 23 | left: 0; 24 | z-index: 8020; 25 | } 26 | 27 | .fancybox-skin { 28 | position: relative; 29 | background: #f9f9f9; 30 | color: #444; 31 | text-shadow: none; 32 | -webkit-border-radius: 4px; 33 | -moz-border-radius: 4px; 34 | border-radius: 4px; 35 | } 36 | 37 | .fancybox-opened { 38 | z-index: 8030; 39 | } 40 | 41 | .fancybox-opened .fancybox-skin { 42 | -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 43 | -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 44 | box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 45 | } 46 | 47 | .fancybox-outer, .fancybox-inner { 48 | position: relative; 49 | } 50 | 51 | .fancybox-inner { 52 | overflow: hidden; 53 | } 54 | 55 | .fancybox-type-iframe .fancybox-inner { 56 | -webkit-overflow-scrolling: touch; 57 | } 58 | 59 | .fancybox-error { 60 | color: #444; 61 | font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 62 | margin: 0; 63 | padding: 15px; 64 | white-space: nowrap; 65 | } 66 | 67 | .fancybox-image, .fancybox-iframe { 68 | display: block; 69 | width: 100%; 70 | height: 100%; 71 | } 72 | 73 | .fancybox-image { 74 | max-width: 100%; 75 | max-height: 100%; 76 | } 77 | 78 | #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { 79 | background-image: url('fancybox_sprite.png'); 80 | } 81 | 82 | #fancybox-loading { 83 | position: fixed; 84 | top: 50%; 85 | left: 50%; 86 | margin-top: -22px; 87 | margin-left: -22px; 88 | background-position: 0 -108px; 89 | opacity: 0.8; 90 | cursor: pointer; 91 | z-index: 8060; 92 | } 93 | 94 | #fancybox-loading div { 95 | width: 44px; 96 | height: 44px; 97 | background: url('fancybox_loading.gif') center center no-repeat; 98 | } 99 | 100 | .fancybox-close { 101 | position: absolute; 102 | top: -18px; 103 | right: -18px; 104 | width: 36px; 105 | height: 36px; 106 | cursor: pointer; 107 | z-index: 8040; 108 | } 109 | 110 | .fancybox-nav { 111 | position: absolute; 112 | top: 0; 113 | width: 40%; 114 | height: 100%; 115 | cursor: pointer; 116 | text-decoration: none; 117 | background: transparent url('blank.gif'); /* helps IE */ 118 | -webkit-tap-highlight-color: rgba(0,0,0,0); 119 | z-index: 8040; 120 | } 121 | 122 | .fancybox-prev { 123 | left: 0; 124 | } 125 | 126 | .fancybox-next { 127 | right: 0; 128 | } 129 | 130 | .fancybox-nav span { 131 | position: absolute; 132 | top: 50%; 133 | width: 36px; 134 | height: 34px; 135 | margin-top: -18px; 136 | cursor: pointer; 137 | z-index: 8040; 138 | visibility: hidden; 139 | } 140 | 141 | .fancybox-prev span { 142 | left: 10px; 143 | background-position: 0 -36px; 144 | } 145 | 146 | .fancybox-next span { 147 | right: 10px; 148 | background-position: 0 -72px; 149 | } 150 | 151 | .fancybox-nav:hover span { 152 | visibility: visible; 153 | } 154 | 155 | .fancybox-tmp { 156 | position: absolute; 157 | top: -99999px; 158 | left: -99999px; 159 | visibility: hidden; 160 | max-width: 99999px; 161 | max-height: 99999px; 162 | overflow: visible !important; 163 | } 164 | 165 | /* Overlay helper */ 166 | 167 | .fancybox-lock { 168 | overflow: hidden; 169 | } 170 | 171 | .fancybox-overlay { 172 | position: absolute; 173 | top: 0; 174 | left: 0; 175 | overflow: hidden; 176 | display: none; 177 | z-index: 8010; 178 | background: url('fancybox_overlay.png'); 179 | } 180 | 181 | .fancybox-overlay-fixed { 182 | position: fixed; 183 | bottom: 0; 184 | right: 0; 185 | } 186 | 187 | .fancybox-lock .fancybox-overlay { 188 | overflow: auto; 189 | overflow-y: scroll; 190 | } 191 | 192 | /* Title helper */ 193 | 194 | .fancybox-title { 195 | visibility: hidden; 196 | font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 197 | position: relative; 198 | text-shadow: none; 199 | z-index: 8050; 200 | } 201 | 202 | .fancybox-opened .fancybox-title { 203 | visibility: visible; 204 | } 205 | 206 | .fancybox-title-float-wrap { 207 | position: absolute; 208 | bottom: 0; 209 | right: 50%; 210 | margin-bottom: -35px; 211 | z-index: 8050; 212 | text-align: center; 213 | } 214 | 215 | .fancybox-title-float-wrap .child { 216 | display: inline-block; 217 | margin-right: -100%; 218 | padding: 2px 20px; 219 | background: transparent; /* Fallback for web browsers that doesn't support RGBa */ 220 | background: rgba(0, 0, 0, 0.8); 221 | -webkit-border-radius: 15px; 222 | -moz-border-radius: 15px; 223 | border-radius: 15px; 224 | text-shadow: 0 1px 2px #222; 225 | color: #FFF; 226 | font-weight: bold; 227 | line-height: 24px; 228 | white-space: nowrap; 229 | } 230 | 231 | .fancybox-title-outside-wrap { 232 | position: relative; 233 | margin-top: 10px; 234 | color: #fff; 235 | } 236 | 237 | .fancybox-title-inside-wrap { 238 | padding-top: 10px; 239 | } 240 | 241 | .fancybox-title-over-wrap { 242 | position: absolute; 243 | bottom: 0; 244 | left: 0; 245 | color: #fff; 246 | padding: 10px; 247 | background: #000; 248 | background: rgba(0, 0, 0, .8); 249 | } -------------------------------------------------------------------------------- /_static/fancybox/jquery.fancybox.pack.js: -------------------------------------------------------------------------------- 1 | /*! fancyBox v2.1.3 fancyapps.com | fancyapps.com/fancybox/#license */ 2 | (function(B,x,f,q){var r=f(B),m=f(x),b=f.fancybox=function(){b.open.apply(this,arguments)},u=null,n=x.createTouch!==q,s=function(a){return a&&a.hasOwnProperty&&a instanceof f},p=function(a){return a&&"string"===f.type(a)},E=function(a){return p(a)&&0
',image:'',iframe:'",error:'

The requested content cannot be loaded.
Please try again later.

',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing", 6 | openOpacity:!0,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null, 7 | isActive:!1,isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=s(a)?f(a).get():[a]),f.each(a,function(e,c){var j={},g,h,i,l,k;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),s(c)?(j={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0, 8 | j,c.metadata())):j=c);g=d.href||j.href||(p(c)?c:null);h=d.title!==q?d.title:j.title||"";l=(i=d.content||j.content)?"html":d.type||j.type;!l&&j.isDom&&(l=c.data("fancybox-type"),l||(l=(l=c.prop("class").match(/fancybox\.(\w+)/))?l[1]:null));p(g)&&(l||(b.isImage(g)?l="image":b.isSWF(g)?l="swf":"#"===g.charAt(0)?l="inline":p(c)&&(l="html",i=c)),"ajax"===l&&(k=g.split(/\s+/,2),g=k.shift(),k=k.shift()));i||("inline"===l?g?i=f(p(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):j.isDom&&(i=c):"html"===l?i=g:!l&&(!g&& 9 | j.isDom)&&(l="inline",i=c));f.extend(j,{href:g,type:l,content:i,title:h,selector:k});a[e]=j}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==q&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current|| 10 | b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer= 11 | setTimeout(b.next,b.current.playSpeed))},c=function(){d();f("body").unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==q&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,j;c&&(j=b._getPosition(d),a&&"scroll"===a.type?(delete j.position,c.stop(!0,!0).animate(j,200)):(c.css(j),e.pos=f.extend({}, 13 | e.dim,j)))},update:function(a){var d=a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(u),u=null);b.isOpen&&!u&&(u=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),u=null)},e&&!n?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,n&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"), 14 | b.trigger("onUpdate")),b.update())},hideLoading:function(){m.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('
').click(b.cancel).appendTo("body");m.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked|| 15 | !1,d={x:r.scrollLeft(),y:r.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=n&&B.innerWidth?B.innerWidth:r.width(),d.h=n&&B.innerHeight?B.innerHeight:r.height());return d},unbindEvents:function(){b.wrap&&s(b.wrap)&&b.wrap.unbind(".fb");m.unbind(".fb");r.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(r.bind("orientationchange.fb"+(n?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&m.bind("keydown.fb",function(e){var c=e.which||e.keyCode,j= 16 | e.target||e.srcElement;if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!j||!j.type&&!f(j).is("[contenteditable]")))&&f.each(d,function(d,j){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!i&&1g||0>j)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d, 18 | e){e&&(b.helpers[d]&&f.isFunction(b.helpers[d][a]))&&(e=f.extend(!0,{},b.helpers[d].defaults,e),b.helpers[d][a](e,c))});f.event.trigger(a+".fb")}},isImage:function(a){return p(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp)((\?|#).*)?$)/i)},isSWF:function(a){return p(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c,a=k(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&& 19 | (d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive= 20 | !0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&n&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(n?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,v(d.padding[a]))});b.trigger("onReady"); 21 | if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width= 22 | this.width;b.coming.height=this.height;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g, 23 | (new Date).getTime())).attr("scrolling",n?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);n||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a= 24 | b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,j,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents(); 25 | e=a.content;c=a.type;j=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("
").html(e).find(a.selector):s(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('
').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder", 26 | !1)}));break;case "image":e=a.tpl.image.replace("{href}",g);break;case "swf":e='',h="",f.each(a.swf,function(a,b){e+='';h+=" "+a+'="'+b+'"'}),e+='"}(!s(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow"); 27 | a.inner.css("overflow","yes"===j?"scroll":"no"===j?"hidden":j);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,j=b.skin,g=b.inner,h=b.current,c=h.width,i=h.height,l=h.minWidth,t=h.minHeight,m=h.maxWidth, 28 | n=h.maxHeight,r=h.scrolling,p=h.scrollOutside?h.scrollbarWidth:0,w=h.margin,y=k(w[1]+w[3]),q=k(w[0]+w[2]),x,z,s,C,A,F,B,D,u;e.add(j).add(g).width("auto").height("auto").removeClass("fancybox-tmp");w=k(j.outerWidth(!0)-j.width());x=k(j.outerHeight(!0)-j.height());z=y+w;s=q+x;C=E(c)?(a.w-z)*k(c)/100:c;A=E(i)?(a.h-s)*k(i)/100:i;if("iframe"===h.type){if(u=h.content,h.autoHeight&&1===u.data("ready"))try{u[0].contentWindow.document.location&&(g.width(C).height(9999),F=u.contents().find("body"),p&&F.css("overflow-x", 29 | "hidden"),A=F.height())}catch(G){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=k(C);i=k(A);D=C/A;l=k(E(l)?k(l,"w")-z:l);m=k(E(m)?k(m,"w")-z:m);t=k(E(t)?k(t,"h")-s:t);n=k(E(n)?k(n,"h")-s:n);F=m;B=n;h.fitToView&&(m=Math.min(a.w-z,m),n=Math.min(a.h-s,n));z=a.w-y;q=a.h-q;h.aspectRatio?(c>m&&(c=m,i=k(c/D)),i>n&&(i=n,c=k(i*D)),cz||y>q)&&(c>l&&i>t)&&!(19m&&(c=m,i=k(c/D)),g.width(c).height(i),e.width(c+w),a=e.width(),y=e.height();else c=Math.max(l,Math.min(c,c-(a-z))),i=Math.max(t,Math.min(i,i-(y-q)));p&&("auto"===r&&iz||y>q)&&c>l&&i>t;c=h.aspectRatio?ct&&i
').appendTo("body");this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this,a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(r.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){f(a.target).hasClass("fancybox-overlay")&& 40 | (b.isActive?b.close():d.close())});this.overlay.css(a.css).show()},close:function(){f(".fancybox-overlay").remove();r.unbind("resize.overlay");this.overlay=null;!1!==this.margin&&(f("body").css("margin-right",this.margin),this.margin=!1);this.el&&this.el.removeClass("fancybox-lock")},update:function(){var a="100%",b;this.overlay.width(a).height("100%");f.browser.msie?(b=Math.max(x.documentElement.offsetWidth,x.body.offsetWidth),m.width()>b&&(a=m.width())):m.width()>r.width()&&(a=m.width());this.overlay.width(a).height(m.height())}, 41 | onReady:function(a,b){f(".fancybox-overlay").stop(!0,!0);this.overlay||(this.margin=m.height()>r.height()||"scroll"===f("body").css("overflow-y")?f("body").css("margin-right"):!1,this.el=x.all&&!x.querySelector?f("html"):f("body"),this.create(a));a.locked&&this.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&(this.el.addClass("fancybox-lock"),!1!==this.margin&&f("body").css("margin-right",k(this.margin)+ 42 | b.scrollbarWidth));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.isActive&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(p(e)&&""!==f.trim(e)){d=f('
'+e+"
");switch(c){case "inside":c=b.skin;break;case "outside":c= 43 | b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),f.browser.msie&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(k(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",j=function(g){var h=f(this).blur(),i=d,j,k;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(j=a.groupAttr||"data-fancybox-group",k=h.attr(j),k||(j="rel", 44 | k=h.get(0)[j]),k&&(""!==k&&"nofollow"!==k)&&(h=c.length?f(c):e,h=h.filter("["+j+'="'+k+'"]'),i=h.index(this)),a.index=i,!1!==b.open(h,a)&&g.preventDefault())},a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",j):m.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')","click.fb-start",j);this.filter("[data-fancybox-start=1]").trigger("click");return this};m.ready(function(){f.scrollbarWidth===q&&(f.scrollbarWidth=function(){var a=f('
').appendTo("body"), 45 | b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===q){var a=f.support,d=f('
').appendTo("body"),e=20===d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")})})})(window,document,jQuery); -------------------------------------------------------------------------------- /_static/fancybox/jquery.mousewheel-3.0.6.pack.js: -------------------------------------------------------------------------------- 1 | /*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net) 2 | * Licensed under the MIT License (LICENSE.txt). 3 | * 4 | * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. 5 | * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. 6 | * Thanks to: Seamus Leahy for adding deltaX and deltaY 7 | * 8 | * Version: 3.0.6 9 | * 10 | * Requires: 1.2.2+ 11 | */ 12 | (function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]= 13 | d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); -------------------------------------------------------------------------------- /_static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/favicon.ico -------------------------------------------------------------------------------- /_static/ipy_0.11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/ipy_0.11.png -------------------------------------------------------------------------------- /_static/ipy_0.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/ipy_0.12.png -------------------------------------------------------------------------------- /_static/ipy_0.13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/ipy_0.13.png -------------------------------------------------------------------------------- /_static/ipython-book.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/ipython-book.jpg -------------------------------------------------------------------------------- /_static/ipython-cookbook-2nd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/ipython-cookbook-2nd.png -------------------------------------------------------------------------------- /_static/ipython-cookbook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/ipython-cookbook.jpg -------------------------------------------------------------------------------- /_static/jupyter-for-ds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/jupyter-for-ds.png -------------------------------------------------------------------------------- /_static/jupyter-in-depth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/jupyter-in-depth.png -------------------------------------------------------------------------------- /_static/jupyter-notebook-for-all-I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/jupyter-notebook-for-all-I.jpg -------------------------------------------------------------------------------- /_static/jupyter-notebook-for-all-II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/jupyter-notebook-for-all-II.jpg -------------------------------------------------------------------------------- /_static/jupytercon-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Group 5 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /_static/learning-jupyter-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/learning-jupyter-book.png -------------------------------------------------------------------------------- /_static/mastering-ipython-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/mastering-ipython-book.png -------------------------------------------------------------------------------- /_static/microsoft-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/microsoft-logo.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-1.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-2.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-3.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-4.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-5.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-6.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-7.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-8.png -------------------------------------------------------------------------------- /_static/nbviewer-thm-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/nbviewer-thm-9.png -------------------------------------------------------------------------------- /_static/nbviewer_thm.js: -------------------------------------------------------------------------------- 1 | function nbviewer_random_thumbnail() { 2 | /* All our thumbnails have the naming convention nbviewer-thm-NN.png for 3 | NN=1..9, stored in the _static/ directory. If this changes, the code 4 | below will need to be adjusted. 5 | */ 6 | ix = 1 + Math.floor(Math.random() * 9); 7 | thm = '
'.replace('IMG', ix); 8 | document.write(thm); 9 | /*console.log(thm);*/ 10 | }; 11 | -------------------------------------------------------------------------------- /_static/screenshots/ipython-notebook-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/screenshots/ipython-notebook-thumb.png -------------------------------------------------------------------------------- /_static/screenshots/ipython-notebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/screenshots/ipython-notebook.png -------------------------------------------------------------------------------- /_static/screenshots/ipython-qtconsole-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/screenshots/ipython-qtconsole-thumb.png -------------------------------------------------------------------------------- /_static/screenshots/ipython-qtconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/screenshots/ipython-qtconsole.png -------------------------------------------------------------------------------- /_static/screenshots/ipython-terminal-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/screenshots/ipython-terminal-thumb.png -------------------------------------------------------------------------------- /_static/screenshots/ipython-terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/screenshots/ipython-terminal.png -------------------------------------------------------------------------------- /_static/simons-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/simons-logo.png -------------------------------------------------------------------------------- /_static/sloan-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/sloan-logo.png -------------------------------------------------------------------------------- /_static/sloangrant/13_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/sloangrant/13_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-widgets.png -------------------------------------------------------------------------------- /_static/sloangrant/9_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-specgram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/sloangrant/9_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-specgram.png -------------------------------------------------------------------------------- /_static/sloangrant/sloan-grant.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/sloangrant/sloan-grant.pdf -------------------------------------------------------------------------------- /_static/survey2011/countries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2011/countries.png -------------------------------------------------------------------------------- /_static/survey2011/partsused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2011/partsused.png -------------------------------------------------------------------------------- /_static/survey2011/platforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2011/platforms.png -------------------------------------------------------------------------------- /_static/survey2011/sector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2011/sector.png -------------------------------------------------------------------------------- /_static/survey2013/components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/components.png -------------------------------------------------------------------------------- /_static/survey2013/countries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/countries.png -------------------------------------------------------------------------------- /_static/survey2013/help_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/help_resources.png -------------------------------------------------------------------------------- /_static/survey2013/installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/installation.png -------------------------------------------------------------------------------- /_static/survey2013/ipy_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/ipy_versions.png -------------------------------------------------------------------------------- /_static/survey2013/platforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/platforms.png -------------------------------------------------------------------------------- /_static/survey2013/py_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/py_versions.png -------------------------------------------------------------------------------- /_static/survey2013/role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/_static/survey2013/role.png -------------------------------------------------------------------------------- /_templates/download.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |

The download page has moved to this link.

7 | 8 | 9 | -------------------------------------------------------------------------------- /_templates/gallery.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |

The notebook gallery page is located here.

7 | 8 | 9 | -------------------------------------------------------------------------------- /_templates/navbar.html: -------------------------------------------------------------------------------- 1 | Install · 2 | Documentation · 3 | Project · 4 | Jupyter · 5 | News · 6 | Cite · 7 | Donate · 8 | Books 9 | -------------------------------------------------------------------------------- /_templates/screenshots.html: -------------------------------------------------------------------------------- 1 | {% extends "!layout.html" %} 2 | {% set script_files = script_files + ["_static/fancybox/jquery.mousewheel-3.0.6.pack.js", "_static/fancybox/jquery.fancybox.pack.js", "_static/fancybox/ipython.fancybox.js"] %} 3 | {% set css_files = css_files + ["_static/fancybox/jquery.fancybox.css"] %} 4 | {% block body %} 5 |

Screenshots

6 |

Below are screenshots of IPython running in a terminal, the Qt console, and a web browser via the HTML notebook.

7 |

Terminal

8 |

9 | IPython shell in a terminal 10 |

11 |

Qt Console

12 |

13 | IPython Qt console app 14 |

15 |

HTML Notebook

16 |

17 | IPython HTML notebook 18 |

19 | {% endblock %} 20 | -------------------------------------------------------------------------------- /_templates/sidebar_links.html: -------------------------------------------------------------------------------- 1 | {%- block sidebarlinks %} 2 | 3 |
4 |

{{ _('Notebook Viewer') }}

5 | 6 | Share your notebooks 7 | 8 |
9 | 10 | 13 |
14 | 15 |
16 | 17 |
18 |

{{ _('Community') }}

19 | 20 | 28 | 29 |
30 | 31 | 32 | {%- endblock %} 33 | -------------------------------------------------------------------------------- /books.rst: -------------------------------------------------------------------------------- 1 | ================ 2 | Books And Videos 3 | ================ 4 | 5 | 6 | 7 | IPython Interactive Computing and Visualization Cookbook, Second Edition 8 | ------------------------------------------------------------------------ 9 | 10 | .. image:: _static/ipython-cookbook-2nd.png 11 | :width: 200px 12 | :alt: IPython Cookbook, Second Edition, by Cyrille Rossant 13 | :target: _static/ipython-cookbook-2nd.png 14 | 15 | * `IPython Interactive Computing and Visualization Cookbook, Second Edition `_ 16 | * By `Cyrille Rossant `_ 17 | * 548 pages 18 | * Packt Publishing 19 | * January 2018 20 | 21 | 22 | Python is one of the leading open source platforms for data science and numerical computing. IPython and the associated Jupyter Notebook offer efficient interfaces to Python for data analysis and interactive visualization, and they constitute an ideal gateway to the platform. 23 | 24 | IPython Interactive Computing and Visualization Cookbook, Second Edition contains many ready-to-use, focused recipes for high-performance scientific computing and data analysis, from the latest IPython/Jupyter features to the most advanced tricks, to help you write better and faster code. You will apply these state-of-the-art methods to various real-world examples, illustrating topics in applied mathematics, scientific modeling, and machine learning. 25 | 26 | The first part of the book covers programming techniques: code quality and reproducibility, code optimization, high-performance computing through just-in-time compilation, parallel computing, and graphics card programming. The second part tackles data science, statistics, machine learning, signal and image processing, dynamical systems, and pure and applied mathematics. 27 | 28 | 29 | 30 | Jupyter for Data Science 31 | ------------------------ 32 | 33 | 34 | .. image:: _static/jupyter-for-ds.png 35 | :width: 200px 36 | :alt: Jupyter For dataScience 37 | :target: _static/jupyter-for-ds.png 38 | 39 | * `Jupyter for Data Science `_ 40 | * By Dan Toomey 41 | * 242 pages 42 | * Packt Publishing 43 | * October 2017 44 | 45 | 46 | 47 | Jupyter Notebook is a web-based environment that enables interactive computing 48 | in notebook documents. It allows you to create documents that contain live code, 49 | equations, and visualizations. This book is a comprehensive guide to getting 50 | started with data science using the popular Jupyter notebook. 51 | 52 | If you are familiar with Jupyter notebook and want to learn how to use its 53 | capabilities to perform various data science tasks, this is the book for you! 54 | From data exploration to visualization, this book will take you through every 55 | step of the way in implementing an effective data science pipeline using 56 | Jupyter. You will also see how you can utilize Jupyter's features to share your 57 | documents and codes with your colleagues. The book also explains how Python 3, 58 | R, and Julia can be integrated with Jupyter for various data science tasks. 59 | 60 | By the end of this book, you will comfortably leverage the power of Jupyter to 61 | perform various tasks in data science successfully. 62 | 63 | 64 | Jupyter In Depth 65 | ---------------- 66 | 67 | .. image:: _static/jupyter-in-depth.png 68 | :width: 200px 69 | :alt: jupyter-in-depth 70 | :target: _static/jupyter-in-depth.png 71 | 72 | * `Jupyter In Depth `_ 73 | 74 | * Jesse Bacon Thursday, August 31, 2017 75 | * 1 hour and 43 minutes 76 | * Packt Publishing 77 | * August 2017 78 | 79 | Jupyter has emerged as a popular tool for code exposition and the sharing of research artefacts. It has interactive display capabilities and the pluggable kernel system allows data scientists to switch back and forth between multiple programming languages. 80 | 81 | The course will walk you through the core modules and standard capabilities of the console, client, and notebook server. By exploring the Python language, you will be able to get starter projects for configurations management, file system monitoring, and encrypted backup solutions for safeguarding their data. In the final Sections, you will be able to build dashboards in a Jupyter notebook to report back information about the project and the status of various Jupyter components. 82 | 83 | 84 | 85 | Jupyter Notebook for All - Part II [Video] 86 | ------------------------------------------ 87 | 88 | .. image:: _static/jupyter-notebook-for-all-II.jpg 89 | :width: 200px 90 | :alt: Jupyter Notebook for All - Part II 91 | :target: _static/jupyter-notebook-for-all-II.jpg 92 | 93 | 94 | 95 | * `Jupyter Notebook for All - Part II `_ 96 | * By Dan Toomey 97 | * 1 hour and 14 minutes 98 | * Packt Publishing 99 | * March 2017 100 | 101 | Jupyter Notebook is a web-based environment that enables interactive computing 102 | in notebook documents. It allows you to create and share documents that contain 103 | live code, equations, visualizations, and explanatory text. The Jupyter Notebook 104 | system is extensively used in domains such as data cleaning and transformation, 105 | numerical simulation, statistical modeling, machine learning, and much more. 106 | This tutorial starts with a detailed overview of the Jupyter Notebook system and 107 | its installation in different environments. Next you will learn to integrate the 108 | Jupyter system with different programming languages such as R, Python, 109 | JavaScript, and Julia; further, you'll explore the various versions and packages 110 | that are compatible with the Notebook system. Moving ahead, you'll master 111 | interactive widgets, namespaces, and working with Jupyter in multiuser mode. 112 | Towards the end, you will use Jupyter with a big dataset and will apply all the 113 | functionalities learned throughout the video. 114 | 115 | 116 | 117 | Jupyter Notebook for All - Part I [Video] 118 | ----------------------------------------- 119 | 120 | .. image:: _static/jupyter-notebook-for-all-I.jpg 121 | :width: 200px 122 | :alt: Jupyter Notebook for All - Part I 123 | :target: _static/jupyter-notebook-for-all-I.jpg 124 | 125 | 126 | * `Jupyter Notebook for All - Part I `_ 127 | * By Dan Toomey 128 | * 1 hour 23 minutes 129 | * Packt Publishing 130 | * March 2017 131 | 132 | Jupyter Notebook is a web-based environment that enables interactive computing 133 | in notebook documents. It allows you to create and share documents that contain 134 | live code, equations, visualizations, and explanatory text. The Jupyter Notebook 135 | system is extensively used in domains such as data cleaning and transformation, 136 | numerical simulation, statistical modeling, machine learning, and much more. 137 | This tutorial starts with a detailed overview of the Jupyter Notebook system and 138 | its installation in different environments. Next you will learn to integrate the 139 | Jupyter system with different programming languages such as R, Python, 140 | JavaScript, and Julia; further, you'll explore the various versions and packages 141 | that are compatible with the Notebook system. Moving ahead, you'll master 142 | interactive widgets, namespaces, and working with Jupyter in multiuser mode. 143 | Towards the end, you will use Jupyter with a big dataset and will apply all the 144 | functionalities learned throughout the video. 145 | 146 | Learning Jupyter 147 | ---------------- 148 | 149 | .. image:: _static/learning-jupyter-book.png 150 | :width: 200px 151 | :alt: Learning Jupyter 152 | :target: _static/learning-jupyter-book.png 153 | 154 | * `Learning Jupyter `_ 155 | * By Dan Toomey 156 | * 238 Pages 157 | * Packt Publishing 158 | * November 2016 159 | 160 | 161 | Jupyter Notebook is a web-based environment that enables interactive computing 162 | in notebook documents. It allows you to create and share documents that contain 163 | live code, equations, visualizations, and explanatory text. The Jupyter 164 | Notebook system is extensively used in domains such as data cleaning and 165 | transformation, numerical simulation, statistical modeling, machine learning, 166 | and much more. 167 | 168 | This book starts with a detailed overview of the Jupyter Notebook system and 169 | its installation in different environments. Next we’ll help you will learn to 170 | integrate Jupyter system with different programming languages such as R, 171 | Python, JavaScript, and Julia and explore the various versions and packages 172 | that are compatible with the Notebook system. Moving ahead, you master 173 | interactive widgets, namespaces, and working with Jupyter in a multiuser mode. 174 | 175 | Towards the end, you will use Jupyter with a big data set and will apply all 176 | the functionalities learned throughout the book. 177 | 178 | 179 | Mastering IPython 4.0 180 | --------------------- 181 | 182 | .. image:: _static/mastering-ipython-book.png 183 | :width: 200px 184 | :alt: Mastering IPython 185 | :target: _static/mastering-ipython-book.png 186 | 187 | * `Mastering IPython 4.0 `_ 188 | * by `Thomas Bitterman `_ 189 | * 382 pages 190 | * Packt Publishing 191 | * May 2016 192 | * Code available under MIT License `on GitHub `_ 193 | 194 | This book will get IPython developers up to date with the latest advancements 195 | in IPython and dive deep into interactive computing with IPython. This an 196 | advanced guide on interactive and parallel computing with IPython will explore 197 | advanced visualizations and high-performance computing with IPython in detail. 198 | 199 | You will quickly brush up your knowledge of IPython kernels and wrapper 200 | kernels, then we'll move to advanced concepts such as testing, Sphinx, JS 201 | events, interactive work, and the ZMQ cluster. The book will cover topics such 202 | as IPython Console Lexer, advanced configuration, and third-party tools. 203 | 204 | By the end of this book, you will be able to use IPython for interactive and 205 | parallel computing in a high-performance computing environment. 206 | 207 | 208 | IPython Cookbook 209 | ---------------- 210 | 211 | .. image:: _static/ipython-cookbook.jpg 212 | :width: 200px 213 | :alt: IPython Cookbook 214 | :target: _static/ipython-cookbook.jpg 215 | 216 | * `IPython Interactive Computing and Visualization Cookbook `_ 217 | * by `Cyrille Rossant `_ 218 | * 512 pages 219 | * Packt Publishing 220 | * September 25 2014 221 | 222 | This is an advanced-level guide to IPython for data science, and the sequel of 223 | the IPython minibook. 224 | 225 | IPython Minibook 226 | ---------------- 227 | 228 | .. image:: _static/ipython-book.jpg 229 | :width: 200px 230 | :alt: IPython Minibook 231 | :target: _static/ipython-book.jpg 232 | 233 | * `Learning IPython for Interactive Computing and Data Visualization `_ 234 | * by `Cyrille Rossant `_ 235 | * 175 pages 236 | * Packt Publishing 237 | * October 25 2015 238 | 239 | This book is a beginner-level introduction to Python for data analysis, covering IPython, the Jupyter Notebook, pandas, NumPy, matplotlib, and many other libraries. There is an introduction to the Python programming language for complete beginners. There are also contents for more advanced users, like parallel computing with IPython and high-performance computing with Numba and Cython. 240 | 241 | 242 | Get your Book on this page 243 | -------------------------- 244 | 245 | Getting your book on this page will automatically add it on the sidebar. 246 | 247 | Thanks for writing about IPython or Jupyter, we would be happy to get a link to 248 | your book on this page, the simplest would be to submit a GitHub Pull Request 249 | against `The IPython website repository page 250 | `_. You can 251 | also directly contact us in order to do that for you. 252 | 253 | A requirement for a book to be listed on this page is that all the code 254 | examples included in the book are licensed under an OSI-approved license. 255 | Besides, we recommend non-copyleft license such as CC-0. 256 | 257 | We reserve the right to refuse or remove any publication at our discretion. 258 | 259 | You can get more information by reading our :ref:`books_policy`. 260 | 261 | -------------------------------------------------------------------------------- /books_policy.rst: -------------------------------------------------------------------------------- 1 | .. _books_policy: 2 | 3 | ============ 4 | Books Policy 5 | ============ 6 | 7 | Our policy for listing books on the website is as follows. This will be 8 | uniformly applied across publishers, so the project can maintain its 9 | neutrality regarding IPython-related books (all language below would apply 10 | in the future to Jupyter-oriented books). 11 | 12 | 1. Criteria for inclusion in the homepage 13 | 14 | We will list books that are specifically and mostly about IPython itself, 15 | rather than just mentioning IPython in a chapter or two (though see Note in 16 | #2 below). 17 | 18 | For example, the currently listed book by Cyrille Rossant amply qualifies, 19 | but Wes McKinney's "Python for Data Analysis", while having an excellent 20 | chapter devoted to IPython, would not get a link on the home page. 21 | 22 | 2. Our "Books" page: 23 | 24 | We will create a main page listing in reverse chronological order the various 25 | books that are mainly devoted to IPython. For each book, we simply list its 26 | title, author and actual publisher page (or Amazon, whatever the author prefers 27 | or publisher prefers), along with a cover image. No 28 | editorializing/reviews/etc. 29 | 30 | There may be a section at the bottom listing books that include some useful 31 | material about IPython (more than just a sentence but less than say 1/2 the 32 | book). These would be listed for reference but would have no front-page 33 | link (e.g. Wes' book). 34 | 35 | Note: the core team reserves the right to *not* include, or remove a book in this 36 | listing. If someone out there publishes a book that we deem to be 37 | absolutely terrible, we reserve the right to simply not list it. 38 | 39 | 3. What we show on the homepage 40 | 41 | We will have a single image for books, and that will be a randomly rotating 42 | screenshot of all currently available books. That image will be a link to that 43 | book's entry in the "Books" page. The randomly rotating screenshot may show 44 | recently published book more often. 45 | 46 | On the Book page, the books will be ordered with most recent at the top. 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /citing.rst: -------------------------------------------------------------------------------- 1 | ================ 2 | Citing IPython 3 | ================ 4 | 5 | If IPython has been significant to a project that leads to an academic publication, 6 | please acknowledge that fact by citing the project. As of now, the canonical 7 | academic reference for IPython is `this paper 8 | `_, for which here are both 9 | a BibTex and a plaintext reference you can use:: 10 | 11 | @Article{PER-GRA:2007, 12 | Author = {P\'erez, Fernando and Granger, Brian E.}, 13 | Title = {{IP}ython: a System for Interactive Scientific Computing}, 14 | Journal = {Computing in Science and Engineering}, 15 | Volume = {9}, 16 | Number = {3}, 17 | Pages = {21--29}, 18 | month = may, 19 | year = 2007, 20 | url = "https://ipython.org", 21 | ISSN = "1521-9615", 22 | doi = {10.1109/MCSE.2007.53}, 23 | publisher = {IEEE Computer Society}, 24 | } 25 | 26 | or in plaintext: 27 | 28 | Fernando Pérez, Brian E. Granger, *IPython: A System for Interactive 29 | Scientific Computing*, Computing in Science and Engineering, vol. 9, no. 3, 30 | pp. 21-29, May/June 2007, doi:10.1109/MCSE.2007.53. URL: https://ipython.org 31 | 32 | Thank you! 33 | -------------------------------------------------------------------------------- /conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # ipythonscipy.org documentation build configuration file, created by 4 | # sphinx-quickstart on Sat Dec 18 17:03 2010. 5 | # 6 | # This file is execfile()d with the current directory set to its containing dir. 7 | # 8 | # Note that not all possible configuration values are present in this 9 | # autogenerated file. 10 | # 11 | # All configuration values have a default; values that are commented out 12 | # serve to show the default. 13 | 14 | import sys, os 15 | 16 | # If extensions (or modules to document with autodoc) are in another directory, 17 | # add these directories to sys.path here. If the directory is relative to the 18 | # documentation root, use os.path.abspath to make it absolute, like shown here. 19 | #sys.path.append(os.path.abspath('sphinxext')) 20 | 21 | # -- General configuration ----------------------------------------------------- 22 | 23 | # Add any Sphinx extension module names here, as strings. They can be extensions 24 | # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. 25 | extensions = ['sphinx.ext.doctest', 26 | 'sphinx.ext.todo', 27 | 'sphinx.ext.ifconfig', 28 | 29 | #'ipython_console_highlighting', 30 | ] 31 | 32 | # Add any paths that contain templates here, relative to this directory. 33 | templates_path = ['_templates'] 34 | 35 | # The suffix of source filenames. 36 | source_suffix = '.rst' 37 | 38 | # The encoding of source files. 39 | #source_encoding = 'utf-8-sig' 40 | 41 | # The master toctree document. 42 | master_doc = 'index' 43 | 44 | # General information about the project. 45 | project = "IPython" 46 | copyright = "the IPython development team. Python is trademark of the Python Software Foundation" 47 | 48 | # google analytics id 49 | googleanalytics_id = 'UA-38683231-1' 50 | 51 | # The version info for the project you're documenting, acts as replacement for 52 | # |version| and |release|, also used in various other places throughout the 53 | # built documents. 54 | # 55 | # The short X.Y version. 56 | version = '' 57 | # The full version, including alpha/beta/rc tags. 58 | release = '' 59 | 60 | # The language for content autogenerated by Sphinx. Refer to documentation 61 | # for a list of supported languages. 62 | #language = None 63 | 64 | # There are two options for replacing |today|: either, you set today to some 65 | # non-false value, then it is used: 66 | #today = '' 67 | # Else, today_fmt is used as the format for a strftime call. 68 | #today_fmt = '%B %d, %Y' 69 | 70 | # List of documents that shouldn't be included in the build. 71 | unused_docs = [] 72 | 73 | # List of directories, relative to source directory, that shouldn't be searched 74 | # for source files. 75 | exclude_trees = ['_build','.git','s','resources','attic','blog', 76 | 'code/lyxport/dist'] 77 | 78 | # The reST default role (used for this markup: `text`) to use for all documents. 79 | #default_role = None 80 | 81 | # If true, '()' will be appended to :func: etc. cross-reference text. 82 | #add_function_parentheses = True 83 | 84 | # If true, the current module name will be prepended to all description 85 | # unit titles (such as .. function::). 86 | #add_module_names = True 87 | 88 | # If true, sectionauthor and moduleauthor directives will be shown in the 89 | # output. They are ignored by default. 90 | #show_authors = False 91 | 92 | # The name of the Pygments (syntax highlighting) style to use. 93 | pygments_style = 'sphinx' 94 | 95 | # A list of ignored prefixes for module index sorting. 96 | #modindex_common_prefix = [] 97 | 98 | 99 | # -- Options for HTML output --------------------------------------------------- 100 | 101 | # The theme to use for HTML and HTML Help pages. Major themes that come with 102 | # Sphinx are currently 'default' and 'sphinxdoc'. 103 | #html_theme = 'default' 104 | #html_theme = 'sphinxdoc' 105 | html_theme = 'agogo' # inherits from sphinxdoc and modifies it a little 106 | 107 | # The style sheet to use for HTML and HTML Help pages. A file of that name 108 | # must exist either in Sphinx' static/ path, or in one of the custom paths 109 | # given in html_static_path. 110 | html_style = 'agogo.css' 111 | 112 | # Theme options are theme-specific and customize the look and feel of a theme 113 | # further. For a list of options available for each theme, see the 114 | # documentation. 115 | html_theme_options = {} 116 | 117 | # Only works with the default theme, makes the sidebar not scroll: 118 | #html_theme_options = { "stickysidebar": "true" } 119 | 120 | # Add any paths that contain custom themes here, relative to this directory. 121 | html_theme_path = ['themes'] 122 | 123 | # The name for this set of Sphinx documents. If None, it defaults to 124 | # " v documentation".ke 125 | html_title = u"IPython" 126 | 127 | # A shorter title for the navigation bar. Default is the same as html_title. 128 | html_short_title = "IPython" 129 | 130 | # The name of an image file (relative to this directory) to place at the top 131 | # of the sidebar. 132 | #html_logo = None 133 | html_logo = "logos/IPy_header.png" 134 | 135 | # The name of an image file (within the static path) to use as favicon of the 136 | # pixels large. 137 | html_favicon = "favicon.ico" 138 | 139 | # Add any paths that contain custom static files (such as style sheets) here, 140 | # relative to this directory. They are copied after the builtin static files, 141 | # so a file named "default.css" will overwrite the builtin "default.css". 142 | html_static_path = ['_static'] 143 | 144 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 145 | # using the given strftime format. 146 | #html_last_updated_fmt = '%b %d, %Y' 147 | 148 | # If true, SmartyPants will be used to convert quotes and dashes to 149 | # typographically correct entities. 150 | #html_use_smartypants = True 151 | 152 | # Custom sidebar templates, maps document names to template names. 153 | # TODO: split this up into several chunks 154 | 155 | html_sidebars = { 156 | "**": ["sidebar_links.html"], 157 | "searchresults": ["sidebar_links.html"], 158 | } 159 | 160 | # Additional templates that should be rendered to pages, maps page names to 161 | # template names. 162 | html_additional_pages = {'screenshots/index': 'screenshots.html', 163 | 'download': 'download.html', 164 | 'gallery': 'gallery.html', 165 | } 166 | 167 | # If false, no module index is generated. 168 | html_use_modindex = False 169 | 170 | # If false, no index is generated. 171 | html_use_index = False 172 | 173 | # If true, the index is split into individual pages for each letter. 174 | #html_split_index = False 175 | 176 | # If true, links to the reST sources are added to the pages. 177 | html_show_sourcelink = False 178 | 179 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 180 | #html_show_sphinx = True 181 | 182 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 183 | #html_show_copyright = True 184 | 185 | # If true, an OpenSearch description file will be output, and all pages will 186 | # contain a tag referring to it. The value of this option must be the 187 | # base URL from which the finished HTML is served. 188 | #html_use_opensearch = '' 189 | 190 | # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). 191 | #html_file_suffix = '' 192 | -------------------------------------------------------------------------------- /documentation.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Documentation 3 | ============= 4 | 5 | `IPython documentation `__ is now hosted on the 6 | *Read the Docs* service. 7 | 8 | Other pieces 9 | ------------ 10 | 11 | Many pieces which were previously part of IPython were split out in version 4, 12 | and now have their own documentation. 13 | 14 | * `Jupyter `_ includes: 15 | 16 | - The `Jupyter notebook `__ 17 | and `notebook file format `__ 18 | - The `Jupyter Qt console `__ 19 | - The `kernel messaging protocol `__ 20 | - Many other components 21 | 22 | * `ipyparallel `_ 23 | (formerly ``IPython.parallel``) 24 | * `ipykernel `__ (minimal docs, only 25 | release notes for the ipykernel package) 26 | * `ipywidgets `__ 27 | (formerly ``IPython.html.widgets``) 28 | * `Traitlets `__, 29 | the config system used by IPython and Jupyter 30 | 31 | .. _docs_all_releases: 32 | 33 | Documentation for older releases 34 | -------------------------------- 35 | 36 | * `3.x `__ 37 | * `2.x `__ 38 | * `1.x `__ 39 | * `0.13.2 `__ 40 | * `0.13.1 `__ 41 | * `0.13 `__ 42 | * `0.12.1 `__ 43 | * `0.12 `__ 44 | * 0.11: `HTML `__ and `PDF `__. 45 | * 0.10.2: `HTML `__ and `PDF `__. 46 | * 0.10.1: `HTML `__ and `PDF `__. 47 | * 0.10: `HTML `__ and `PDF `__. 48 | * 0.9.1: `HTML `__ and `PDF `__. 49 | * 0.9: `HTML `__ and `PDF `__. 50 | -------------------------------------------------------------------------------- /donate.rst: -------------------------------------------------------------------------------- 1 | ============================= 2 | Support IPython Development 3 | ============================= 4 | 5 | IPython will always be 100% open source software, free for all to use and 6 | released under the liberal terms of the modified BSD license. But while the 7 | whole team does its best to work efficiently, and we actively try to find 8 | funding from multiple sources, the reality is that we have limited resources 9 | and this fact hinders our development capabilities. 10 | 11 | If you have found IPython to be useful in your work, research or company, 12 | please consider making a donation to the project commensurate with your 13 | resources. Any amount helps! 14 | -------------------------------------------------------------------------------- /faq.rst: -------------------------------------------------------------------------------- 1 | === 2 | FAQ 3 | === 4 | 5 | If your question isn't answered below, check `the docs `_, then ask on the `mailing list `_. 6 | 7 | .. contents:: 8 | :local: 9 | :backlinks: none 10 | 11 | Can IPython run under IronPython/PyPy/Jython/other Python interpreters? 12 | ----------------------------------------------------------------------- 13 | 14 | The terminal-based shell should run on any interpreter which complies with 15 | the necessary version of Python. IPython 0.11 requires Python 2.6 16 | or above, and as of June 2011, IronPython and PyPy both support this. 17 | 18 | The most likely problems would come from Readline and from using the undocumented 19 | sys._getframe() function. On Windows we ship our own `pyreadline `_, 20 | which might also work under IronPython. PyPy ships its own readline module, 21 | which should now work. 22 | 23 | If IPython does not work under a supported interpreter, please 24 | `file a bug `_. 25 | 26 | IPython crashes under OS X when using the arrow keys 27 | ---------------------------------------------------- 28 | Under some circumstances, using the arrow keys to navigate your input history can cause a complete crash of the Python interpreter. 29 | 30 | **Answer:** This is due to a bug in the readline library from the official builds. There are a few solutions you can take: 31 | 32 | 1. Use a different Python version from Apple's default (MacPython or Fink have been reported to work) 33 | 34 | 2. You can disable in your ipythonrc file the following lines by commenting them out:: 35 | 36 | readline_parse_and_bind "\e[A": history-search-backward 37 | readline_parse_and_bind "\e[B": history-search-forward 38 | 39 | You will lose searching in your history with the arrow keys, but at least Python won't crash. 40 | 41 | Does IPython play well with Windows? 42 | ------------------------------------ 43 | 44 | Yes, it most definitely does! There are some things that should be noted: `see 45 | the installation documentation `_. 46 | 47 | What is the best way to install IPython? 48 | ---------------------------------------- 49 | 50 | See `the installation documentation `_ for full details. 51 | 52 | The standard Python installation mechanisms (``setup.py``, ``pip`` or ``easy_install``) all work for installing IPython to use in a terminal. Windows users are best off installing `distribute `_, then running the .exe installer, to create start menu shortcuts. 53 | 54 | To use the notebook or the Qt console, it's easiest to install through a package manager, or download a Python distribution such as `Anaconda `_ or `Enthought Canopy `_. Otherwise, you will need to install pyzmq, along with tornado for the notebook, and PyQt4/PySide and pygments for the Qt console. 55 | -------------------------------------------------------------------------------- /google46f5e5c36b67754a.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google46f5e5c36b67754a.html -------------------------------------------------------------------------------- /index.rst: -------------------------------------------------------------------------------- 1 | IPython provides a rich architecture for interactive computing with: 2 | 3 | - A powerful interactive shell. 4 | - A kernel for Jupyter_. 5 | - Support for interactive data visualization and use of `GUI toolkits`_. 6 | - Flexible, embeddable_ interpreters to load into your own projects. 7 | - Easy to use, high performance tools for `parallel computing`_. 8 | 9 | .. image:: _static/ipy_0.13.png 10 | :width: 400px 11 | :alt: IPython clients 12 | :target: _static/ipy_0.13.png 13 | 14 | .. _notebook: notebook.html 15 | 16 | .. _gui toolkits: https://ipython.org/ipython-doc/stable/interactive/reference.html#gui-event-loop-support 17 | 18 | .. _embeddable: https://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipython 19 | 20 | .. _parallel computing: https://ipyparallel.readthedocs.io/en/latest/ 21 | 22 | To get started with IPython in the Jupyter Notebook, see our `official example 23 | collection`_. Our `notebook gallery`__ is an excellent way to see the many 24 | things you can do with IPython while learning about a variety of topics, from 25 | basic programming to advanced statistics or quantum mechanics. 26 | 27 | .. _official example collection: https://nbviewer.org/github/ipython/ipython/blob/6.x/examples/IPython%20Kernel/Index.ipynb 28 | 29 | .. __: https://github.com/jupyter/jupyter/wiki 30 | 31 | To learn more about IPython, you can download our :doc:`talks and presentations 32 | `, or read 33 | our `extensive documentation `_. IPython is open source 34 | (BSD license), and is used by a range of `other projects 35 | `_; add your project to that 36 | list if it uses IPython as a library, and please don't forget to :ref:`cite the 37 | project `. 38 | 39 | IPython supports Python 2.7 and 3.3 or newer. Our older 1.x series supports 40 | Python 2.6 and 3.2. 41 | 42 | 43 | Jupyter and the future of IPython 44 | ================================= 45 | 46 | IPython is a growing project, with increasingly language-agnostic components. 47 | IPython 3.x was the last monolithic release of IPython, 48 | containing the notebook server, qtconsole, etc. 49 | As of IPython 4.0, the language-agnostic parts of the project: 50 | the notebook format, message protocol, qtconsole, notebook web application, etc. 51 | have moved to new projects under the name Jupyter_. 52 | IPython itself is focused on interactive Python, 53 | part of which is providing a Python kernel for Jupyter. 54 | 55 | .. _Jupyter: https://jupyter.org 56 | 57 | 58 | Announcements 59 | ============= 60 | 61 | IPython tends to be released on the last Friday of each month, this section updated rarely. Please have a look at the release history on `PyPI `_. 62 | 63 | - **IPython 7.12.0**: Released on Jan 31st 2020. 64 | 65 | - **IPython 7.11.0 and 7.11.1**: Released on Dec 27, 2019 and Jan 1st 2020 66 | 67 | - **IPython 7.10.0 and 7.10.1**: Released on Nov 27, 2019 and Dec 1st 2019 68 | 69 | - **IPython 7.9.0**: Released on Oct 25, 2019 70 | 71 | - **IPython 7.8.0**: Released on Aug 30, 2019 72 | 73 | - **IPython 7.7.0**: Released on Jul 26, 2019 74 | 75 | - **IPython 7.6.0 and 7.6.1**: Released on June 28th, and July 3rd 2019. 76 | 77 | - **IPython 7.5**: fixes to issues brought by 7.4, documentation changes and other minor updates (April 25, 2019) 78 | 79 | - **IPython 7.4**: improvements to the completion system and miscellaneous fixes (March 21, 2019) 80 | 81 | - **IPython 7.3**: several bugfixes, minor improvements and Python 3.8 support (February 18, 2019) 82 | 83 | - **IPython 7.2**: minor bugfixes, improvements, and new configuration options 84 | (November 29, 2018) 85 | 86 | - **IPython 7.1**: fixes to new features, internal refactoring, 87 | and fixes for regressions (October 27, 2018) 88 | 89 | - **IPython 7.0**: major new features (September 27th, 2018). 90 | See the `release notes 91 | `__ 92 | for more information about what's new. 93 | 94 | - **IPython 6.5**: minor bugfixes and Python 3.7 compatibility (July 28, 2018) 95 | 96 | - **IPython 5.8**: minor bugfixes (July 28, 2018) 97 | 98 | - **IPython 6.4** and **IPython 5.7**: minor bugfixes (May 10, 2018) 99 | 100 | - **IPython 6.3** and **IPython 5.6**: new features and bugfixes 101 | (April 2, 2018) 102 | 103 | - **IPython 6.0**: This release, the first to require Python 3, integrates the 104 | Jedi library for completion. See the `release notes 105 | `__ 106 | for more information about what's new. 107 | 108 | - **JupyterCon 2017**: The first Jupyter Community Conference will take place 109 | in New York City on August 23-25 2017, along with a satellite training 110 | program on August 22-23. The Project Jupyter team has partnered with O'Reilly 111 | Media for this event; for more details, including submitting a talk, `see the 112 | JupyterCon website 113 | `_. 114 | 115 | - **IPython 5.0**: The release of IPython 5.0 brings a major revision of the 116 | terminal interface, including syntax highlighting as you type and better 117 | multiline editing, thanks to the ``prompt_toolkit`` library. See the 118 | `release notes `__ 119 | for more about the new features. 120 | 121 | - **Book**: Cyrille Rossant has published the second edition of the IPython minibook: 122 | `Learning IPython for Interactive Computing and Data Visualization 123 | `_, 124 | for which `Damian Avila `_ was a technical 125 | reviewer. We thank Packt Publishing for donating a portion of the proceeds 126 | from this book to support IPython's development. 127 | 128 | - **O'Reilly Book**: `Mining the Social Web `_ 129 | is an open source data science project and `book `_ 130 | that features nearly 130 examples with IPython Notebook and a 131 | Vagrant-powered virtual machine environment. You can preview all of the 132 | example notebooks from its GitHub `repository 133 | `_ on IPython's Notebook Viewer `here 134 | `_. 136 | 137 | `More news... `_ 138 | 139 | .. _citing: 140 | 141 | Citing IPython 142 | ============== 143 | 144 | Several of the authors of IPython are connected with academic and scientific 145 | research, so it is important for us to be able to show the impact of our work 146 | in other projects and fields. 147 | 148 | If IPython contributes to a project that leads to a scientific publication, 149 | please acknowledge this fact by citing the project. You can use this 150 | `ready-made citation entry `_. 151 | 152 | 153 | .. toctree:: 154 | :hidden: 155 | 156 | books 157 | citing 158 | documentation 159 | donate 160 | faq 161 | install 162 | microsoft-donation-2013 163 | news 164 | notebook 165 | presentation 166 | project 167 | pyreadline 168 | roadmap-announcement 169 | searchresults 170 | security 171 | sloan-grant 172 | usersurvey2011 173 | usersurvey2013 174 | whatsnew082 175 | whatsnew083 176 | 177 | .. include:: links.txt 178 | -------------------------------------------------------------------------------- /install.rst: -------------------------------------------------------------------------------- 1 | ~~~~~~~~~~~~~~~~~~ 2 | Installing IPython 3 | ~~~~~~~~~~~~~~~~~~ 4 | 5 | There are multiple ways of installing IPython. This page contains simplified installation 6 | instructions that should work for most users. Our official documentation 7 | contains `more detailed instructions `_ 8 | for manual installation targeted at advanced users and developers. 9 | 10 | If you are looking for installation documentation for the notebook and/or qtconsole, 11 | those are now part of `Jupyter `__. 12 | 13 | I already have Python 14 | --------------------- 15 | 16 | If you already have Python installed and are familiar with installing packages, you can get IPython with :command:`pip`:: 17 | 18 | pip install ipython 19 | 20 | 21 | I am getting started with Python 22 | -------------------------------- 23 | 24 | For new users who want to install a full Python environment for scientific computing and 25 | data science, we suggest installing the Anaconda or Canopy Python distributions, which provide Python, IPython and all of its dependences as well as a complete set of open source packages 26 | for scientific computing and data science. 27 | 28 | 1. Download and install Continuum's `Anaconda `_ or the free edition of Enthought's `Canopy `_. 29 | 30 | 2. Update IPython to the current version using the Terminal: 31 | 32 | Anaconda:: 33 | 34 | conda update conda 35 | conda update ipython 36 | 37 | 38 | Enthought Canopy:: 39 | 40 | enpkg ipython 41 | 42 | .. _downloads: 43 | 44 | Downloads 45 | --------- 46 | 47 | You can manually download IPython from `GitHub 48 | `_ or `PyPI 49 | `_. To install one of these versions, unpack it and run 50 | the following from the top-level source directory using the Terminal:: 51 | 52 | pip install . 53 | -------------------------------------------------------------------------------- /links.txt: -------------------------------------------------------------------------------- 1 | .. This (-*- rst -*-) format file contains commonly used link targets 2 | and name substitutions. It may be included in many files, 3 | therefore it should only contain link targets and name 4 | substitutions. Try grepping for "^\.\. _" to find plausible 5 | candidates for this list. 6 | 7 | NOTE: reST targets are 8 | __not_case_sensitive__, so only one target definition is needed for 9 | nipy, NIPY, Nipy, etc... 10 | 11 | .. 12 | .. _grant: http://ipython.org/sloan-grant.html 13 | 14 | .. Python projects 15 | .. _ipython: http://ipython.org 16 | .. _numpy: http://numpy.scipy.org 17 | .. _scipy: http://www.scipy.org 18 | .. _scipy_conference: http://conference.scipy.org 19 | .. _`ipython manual`: http://ipython.org/ipython-doc/stable/index.html 20 | .. _matplotlib: http://matplotlib.org 21 | .. _python: http://www.python.org 22 | .. _sympy: http://code.google.com/p/sympy 23 | .. _nipy: http://nipy.org 24 | .. _sage: http://sagemath.org 25 | 26 | .. Other organizations 27 | .. _Alfred P. Sloan Foundation: http://www.sloan.org 28 | .. _Enthought inc: 29 | .. _Enthought: http://www.enthought.com 30 | .. _Enthought Canopy: http://www.enthought.com/products/canopy/ 31 | .. _HPCMP: http://www.hpcmo.hpc.mil 32 | .. _ERDC: http://www.erdc.usace.army.mil 33 | 34 | 35 | .. Other tools and projects 36 | .. _git: http://git-scm.com 37 | .. _github: http://github.com 38 | 39 | .. Licenses 40 | .. _BSD: http://www.opensource.org/licenses/bsd-license.php 41 | .. _GPL: http://www.gnu.org/licenses/gpl.html 42 | .. _LGPL: http://www.gnu.org/copyleft/lesser.html 43 | -------------------------------------------------------------------------------- /logos/IPy-sq-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/logos/IPy-sq-14.png -------------------------------------------------------------------------------- /logos/IPy_Droid-Sans-Mono-Logo.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 56 | 58 | 69 | 72 | 73 | 77 | 81 | 87 | 93 | 99 | 105 | 111 | 117 | 123 | 129 | 135 | 141 | 147 | 153 | 159 | 165 | 171 | 177 | 183 | 189 | 195 | 201 | 207 | 208 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | IP 238 | 239 | [ 247 | 248 | ] 254 | 255 | : 261 | 262 | y 268 | 269 | 270 | IPython 276 | -------------------------------------------------------------------------------- /logos/IPy_Droid-Sans-Mono.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 46 | 48 | 59 | 62 | 63 | 67 | 71 | 77 | 83 | 89 | 95 | 101 | 107 | 113 | 119 | 125 | 131 | 137 | 143 | 149 | 155 | 161 | 167 | 173 | 179 | 185 | 191 | 197 | 198 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 227 | IPython 233 | 234 | 235 | 238 | Interactive Computing 244 | 245 | 246 | IP 252 | 253 | [ 261 | 262 | ] 268 | 269 | : 275 | 276 | y 282 | 283 | 284 | -------------------------------------------------------------------------------- /logos/IPy_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/logos/IPy_header.png -------------------------------------------------------------------------------- /logos/IPy_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/logos/IPy_logo.png -------------------------------------------------------------------------------- /logos/ipython-in-pygtk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/logos/ipython-in-pygtk.png -------------------------------------------------------------------------------- /logos/logo-hpc2008-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython-website/40be1b735d4da339a423abb5539c79201e1ef4e8/logos/logo-hpc2008-header.png -------------------------------------------------------------------------------- /microsoft-donation-2013.rst: -------------------------------------------------------------------------------- 1 | .. _microsoft-donation-2013: 2 | 3 | ======================================== 4 | Microsoft Corporation sponsors IPython 5 | ======================================== 6 | 7 | .. image:: _static/microsoft-logo.png 8 | 9 | We are thrilled to announce that in August 2013, Microsoft made a donation of 10 | $100,000 to sponsor IPython's continued development. 11 | 12 | This donation was received through NumFOCUS, and is the next step in a 13 | fruitful collaboration IPython has had with Microsoft: 14 | 15 | - In 2009 we added integration with Windows HPC Server for IPython's parallel 16 | computing capabilities. 17 | 18 | - In 2010, the `Python Tools for Visual Studio`_ team developed integration 19 | with IPython into the PTVS project. 20 | 21 | - In 2012, we showed how IPython could be integrated into an `Azure-based 22 | workflow`_, using the Notebook to easily control computational resources 23 | in Microsoft's cloud platform. 24 | 25 | We are extremely grateful for this contribution, which we will use to continue 26 | strengthening multiple aspects of IPython. While we have other sources of 27 | funding and the support of the larger open source community, these new funds 28 | will help us to focus effort in specific areas where we identify additional 29 | challenges or opportunities beyond the scope of those resources. 30 | 31 | .. _Python tools for visual studio: http://pytools.codeplex.com 32 | .. _azure-based workflow: http://www.windowsazure.com/en-us/develop/python/tutorials/ipython-notebook 33 | 34 | .. include:: links.txt 35 | -------------------------------------------------------------------------------- /notebook.rst: -------------------------------------------------------------------------------- 1 | .. _notebook: 2 | 3 | The Jupyter Notebook 4 | ==================== 5 | 6 | (Formerly known as the IPython Notebook) 7 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8 | 9 | The IPython Notebook is now known as the Jupyter Notebook. It is an interactive 10 | computational environment, in which you can combine code execution, rich text, 11 | mathematics, plots and rich media. For more details on the Jupyter Notebook, 12 | please see the Jupyter_ website. 13 | 14 | .. _Jupyter: https://jupyter.org/ 15 | -------------------------------------------------------------------------------- /presentation.rst: -------------------------------------------------------------------------------- 1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 | Presentations on IPython 3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 | 5 | 6 | We have given a number of talks and presentations about IPython: 7 | 8 | ------ 9 | 2014 10 | ------ 11 | 12 | * Fernando gave a keynote address at PyCon 2014 entitled *Python and Science: 13 | How OSS and Python are transforming science*. The `video is availible 14 | `_ on the PyCon 2014 YouTube site. 15 | * At PyCon 2014 there was also a tutorial *IPython in depth: high productivity 16 | interactive and parallel python*. The entire 3 hour long tutorial can be viewed 17 | `here `_. 18 | 19 | ------ 20 | 2013 21 | ------ 22 | 23 | * Fernando's SciPy 2013 Keynote entitled *IPython: from the shell to a book with 24 | a single tool...the method behind the madness* can be viewed `on YouTube 25 | `_. 26 | * The SciPy tutorial *IPython in Depth* is also available: 27 | `Part 1 `_, 28 | `Part 2 `_, 29 | `Part 3 `_. 30 | 31 | ------ 32 | 2012 33 | ------ 34 | 35 | * Fernando's talk *IPython: Python at your fingertips* is available in `PDF 36 | `_ and PyVideos.org also 37 | posted the `full video `_. 38 | 39 | * From our `IPython in-depth PyCon 2012 tutorial`__, we have PDF slides both 40 | for the `introduction 41 | `_ and 42 | for the `notebook 43 | `_. 44 | The full 3+ hour tutorial video is also `available on YouTube 45 | `_. Note that *all* PyCon 2012 46 | videos are online at the incredible `PyVideo.org site`_. 47 | 48 | .. __: https://us.pycon.org/2012/schedule/presentation/121/ 49 | .. _pyvideo.org site: http://pyvideo.org/category/17/pycon-us-2012 50 | 51 | -------- 52 | 2011 53 | -------- 54 | 55 | * `Slides `__ 56 | from a talk about IPython for the Sheffield Python user group. 57 | * `Slides `__ and `video 58 | `__ 59 | of a presentation about the new features in IPython 0.11 at the Scipy 2011 60 | conference. 61 | * A `tutorial `__ on using IPython 62 | for parallel computing with our new ZeroMQ infrastructure. 63 | 64 | ---------- 65 | 2010 66 | ---------- 67 | 68 | * `Slides `__ 69 | from a talk that Fernando Perez presented at the `SciPy India 2010 conference 70 | `__. 71 | * Brian Granger has written a `whitepaper 72 | `__ 73 | describing the new support that ipcluster has for Windows HPC Server 2008. If 74 | you use IPython's parallel computing architecture on Windows, this provides a 75 | very nice way of starting the controller and engines on a cluster. The 76 | whitepaper shows how to get started with IPython and Windows HPC Server 200 77 | as well two examples of using IPython to perform an interactive parallel 78 | computation. This material is also in our documentation `here 79 | `__ and 80 | `here 81 | `__. 82 | Many thanks to Microsoft for funding Brian Granger to work on this. 83 | 84 | -------- 85 | 2009 86 | -------- 87 | 88 | * At `SciPy '09 `__, we had a `lightning talk 89 | `__ on the state of IPython. 90 | * At the `IAM CSE09 conference `__ we gave 91 | two presentations about IPython: a `general one 92 | `__ 93 | and another focused on `parallel and distributed computing 94 | `__. 95 | If you are interested, the slides from all the presentations at this meeting 96 | `are available 97 | `__. 98 | 99 | --------- 100 | 2008 101 | --------- 102 | 103 | * A `talk `__ at 104 | `23andMe `__ where Fernando spoke about ipython in general, with 105 | some details about its facilities for distributed computing. 106 | 107 | --------- 108 | 2007 109 | --------- 110 | 111 | * `Slides `__ 112 | from Dave Hudak, from the Ohio Supercomputing Center, about a ''proposed'' 113 | system using IPython for high-level, fully managed access to supercomputing 114 | resources (this system hasn't been implemented yet as of Sept 2008). 115 | * An `article about IPython 116 | `__, 117 | written by Fernando Perez and Brian Granger, published in the `May/June 2007 118 | issue `__ of the 119 | journal ''Computing in Science and Engineering''. 120 | * A `set of slides `__ by 121 | Bill Spotz, from Sandia National Labs, on using IPython to interactively use 122 | the `Trilinos `__ parallel solvers. 123 | * Two `talks `__ about IPython at 124 | `PyCon2007 `__ (see the demos and movies 125 | as well). 126 | * A `talk 127 | `__ 128 | at an `Interactive Parallel Computation in Support of Research in Algebra, 129 | Geometry and Number Theory `__. 131 | 132 | --------- 133 | 2006 134 | --------- 135 | 136 | * `Slides 137 | `__ 138 | of a talk entitled "Interactive Parallel Computing with Python and IPython," 139 | at CU Boulder. 140 | * A `poster 141 | `__ 142 | at the `DANSE kickoff meeting 143 | `__. 144 | * A `lightening talk 145 | `__ 146 | at `SciPy'06 `__ about the Parallel Computing 147 | capabilities of IPython. 148 | * `Slides `__ and `MP3 audio 149 | `__ of a talk at 150 | `SAGE Days 2006 `__. 151 | * A `poster 152 | `__ 153 | presented at `SIAM's Parallel Processing '06 conference 154 | `__. 155 | 156 | --------- 157 | 2005 158 | --------- 159 | 160 | * Two talks at SciPy'05: one about `parallel computing 161 | `__ 162 | and one about `interactive notebooks 163 | `__. 164 | 165 | ----------- 166 | 2004 167 | ----------- 168 | 169 | * A `talk `__ at SciPy'04. 170 | 171 | ------- 172 | 2003 173 | ------- 174 | 175 | * An `overview of IPython `__ at SciPy'03. 176 | -------------------------------------------------------------------------------- /project.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | Project 3 | ========== 4 | 5 | IPython is BSD-licensed, open-source software that is developed as a set of Subprojects under the 6 | `ipython `_ Github organization. These Subprojects are all part of the 7 | larger `Project Jupyter `_ umbrella. For further information about project 8 | governance, sponsorship and development, please see the `Project page 9 | `_ on Jupyter's website. 10 | 11 | 12 | -------------------------------------------------------------------------------- /pyreadline.rst: -------------------------------------------------------------------------------- 1 | ============== 2 | **PyReadline** 3 | ============== 4 | 5 | PyReadline is a Python module providing a readline API on Windows, using ctypes. 6 | 7 | IPython previously used PyReadline to run on Windows, but moved away from it for 8 | IPython 5.0. PyReadline is not actively developed at the moment (early 2017), 9 | but you can still find it `on PyPI `_ 10 | and `on GitHub `_. 11 | -------------------------------------------------------------------------------- /roadmap-announcement.rst: -------------------------------------------------------------------------------- 1 | Roadmap to 1.0 and Beyond 2 | ------------------------- 3 | 4 | TL;DR summary: Hi! IPython 1.0 coming mid-August 2013. See the grant_ which is 5 | funding the bulk of the work, as well as our roadmap_ for achieving the 6 | grant's objectives. 7 | 8 | There's been a lot of excitement on about the grant the IPython team received 9 | from the Sloan Foundation. The easiest way to communicate the contents of the 10 | Sloan grant is to just provide it in its entirety, which is what we've done 11 | with direct links for `html`_ and `pdf`_ version. 12 | 13 | The interested reader will find a description of changes coming to IPython 14 | over the next two years, as well as the motivation behind them, and the 15 | personnel involved. (For example, the astute reader of the grant will 16 | correctly infer that this email is one way in which I am filling my 17 | responsibility as "community engagement and evangelism"... GO TEAM!) 18 | 19 | Two weeks ago, the bulk of IPython's core contributors had a series of 20 | planning sessions. For three days, `Brian`_, `Fernando`_, `Min`_, and 21 | `I`_ met on campus in Berkeley, with `Thomas`_ and `Matthias`_ 22 | joining in via video teleconference (and `Brad`_, for one of the days, too). 23 | 24 | .. _Brian: https://github.com/ellisonbg 25 | .. _Fernando: https://github.com/fperez 26 | .. _Min: https://github.com/minrk 27 | .. _I: https://github.com/ivanov 28 | .. _Thomas: https://github.com/takluyver 29 | .. _Matthias: https://github.com/Carreau 30 | .. _Brad: https://github.com/bfroehle 31 | 32 | You can see the `full notes from those meetings`_. 33 | 34 | .. _full notes from those meetings: https://github.com/ipython/ipython/wiki/Dev:-Meeting-notes,-February-6,-2013 35 | 36 | Our primary objective was to outline a plan of what work we want to accomplish 37 | in the next two years (broadly speaking) as well as to make concrete goals for 38 | our next (1.0!) release, which will land around mid-August 2013. 39 | 40 | It's kind of funny that there's a message from Fernando to [ipython-user] back 41 | in April of 2005 titled `"Towards IPython 1.0, the famous big cleanup"`_. In 42 | it, Fernando makes a last call for outstanding critical bugs because he's 43 | preparing users for a transition toward big changes in the IPython code base. 44 | Because, once he makes the first commit and starts working on the cleanup, 45 | he'll have to ignore every request made "until the new shiny ipython emerges 46 | from the process, reborn in a glory which shall blind the world." Toward the 47 | end of the email, he finishes with: "I hope the changes will be worth it, and 48 | when the dust settles, we'll have something we can call IPython 1.0"... And 49 | eight years and a few months after that email was sent, we will! :) 50 | 51 | What will 1.0 look like? Biggest changes on the user side will be the 52 | integration of `nbconvert`_ into IPython proper. But that's just my summary 53 | of it, the interested reader is encouraged to read the gory details in the 54 | roadmap_. 55 | 56 | 57 | that's it from me for now, 58 | 59 | best, 60 | 61 | Paul Ivanov 62 | 63 | .. _grant: https://ipython.org/sloan-grant.html 64 | .. _html: https://ipython.org/_static/sloangrant/sloan-grant.html 65 | .. _pdf: https://ipython.org/_static/sloangrant/sloan-grant.pdf 66 | .. _roadmap: https://github.com/ipython/ipython/wiki/Roadmap:-IPython 67 | .. _"Towards IPython 1.0, the famous big cleanup": http://mail.scipy.org/pipermail/ipython-user/2005-April/002648.html 68 | .. _nbconvert: https://github.com/jupyter/nbconvert 69 | 70 | -------------------------------------------------------------------------------- /searchresults.rst: -------------------------------------------------------------------------------- 1 | .. This displays the search results from the Google Custom Search engine. 2 | Don't link to it directly. 3 | 4 | Search results 5 | ============== 6 | 7 | .. raw:: html 8 | 9 |
Loading
10 | 11 | 36 | 173 | -------------------------------------------------------------------------------- /security.rst: -------------------------------------------------------------------------------- 1 | .. _security: 2 | 3 | ====================== 4 | Security in IPython 5 | ====================== 6 | 7 | See the IPython documentation for more information on `notebook security`_, 8 | or `reporting security issues`_ 9 | 10 | .. _notebook security: https://ipython.org/ipython-doc/2/notebook/security.html 11 | .. _reporting security issues: https://jupyter-notebook.readthedocs.io/en/stable/security.html#reporting-security-issues 12 | 13 | -------------------------------------------------------------------------------- /sloan-grant.rst: -------------------------------------------------------------------------------- 1 | .. _sloan_grant: 2 | 3 | ====================== 4 | Sloan Foundation Grant 5 | ====================== 6 | 7 | We are pleased to announce that the IPython project has received a $1.15M grant 8 | from `the Alfred P. Sloan foundation `_, that will support 9 | IPython development for the next two years (1/1/2013-12/31/2014). The grant, 10 | which is being made to the University of California, Berkeley and California 11 | Polytechnic State University, San Luis Obispo, will enable the project to focus 12 | on developing the IPython Notebook as a general tool for scientific and 13 | technical computing that is open, collaborative and reproducible. 14 | 15 | The grant ( `html`_ | `pdf`_ ) will fund the following project staff for two 16 | years: 17 | 18 | * Fernando Perez, UC Berkeley, ¾ time project PI 19 | * Brian Granger, Cal Poly San Luis Obispo, ¾ time project co-PI 20 | * Min Ragan-Kelley, UC Berkeley, full time lead project engineer 21 | * Paul Ivanov, UC Berkeley, Postdoc, full time developer 22 | * Thomas Kluyver, UC Berkeley, Postdoc, full time developer 23 | * Matthew Brett, UC Berkeley, ½ time researcher (Y1), applied statistics Notebooks 24 | * JB Poline, UC Berkeley, ½ time researcher (Y1), applied statistics Notebooks 25 | 26 | The main objectives of the grant are: 27 | 28 | * Build interactive JavaScript widgets for the IPython Notebook that enable 29 | computations and visualizations to be controlled with UI controls (sliders, 30 | buttons, etc.). 31 | * Improve the IPython Notebook format by creating libraries for converting 32 | Notebooks to various formats (LaTeX, PDF, HTML, Presentations) and integrating 33 | these into the Notebook web application. 34 | * Adding multiuser support to the Notebook web application, to enable small to 35 | medium sized groups of trusted individuals to run a central Notebook server 36 | for collaborative research and teaching. 37 | * Develop IPython Notebooks for applied statistics in collaboration with 38 | Jonathan Taylor, who will use these materials in his Applied Statistics 39 | course at Stanford (`STAT 191 `_) 40 | 41 | The grant will also provide resources for two development sprints per year at 42 | UC Berkeley, which will include all of the core IPython developers, as well as 43 | funding for cloud computing resources (for things like CI hosting and nbviewer) 44 | and conference travel for project staff. 45 | 46 | We'd like to thank Josh Greenberg, our program director at the Sloan foundation, 47 | for the phenomenal guidance and support he provided during the grant proposal 48 | preparation and detailed review process. We look forward to working with him 49 | over the next few years! 50 | 51 | And last but not least, we want to thank the entire community of users and 52 | developers of IPython, without whom this would not have been possible: IPython 53 | is a project driven strictly by the real-world needs of its users, and therein 54 | lies its value. 55 | 56 | You can view the full grant here: `html`_ `pdf`_. 57 | 58 | .. _html: _static/sloangrant/sloan-grant.html 59 | .. _pdf: _static/sloangrant/sloan-grant.pdf 60 | 61 | -------------------------------------------------------------------------------- /themes/agogo/layout.html: -------------------------------------------------------------------------------- 1 | {# 2 | agogo/layout.html 3 | ~~~~~~~~~~~~~~~~~ 4 | 5 | Sphinx layout template for the agogo theme, originally written 6 | by Andi Albrecht. 7 | 8 | :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. 9 | :license: BSD, see LICENSE for details. 10 | 11 | NOTE: carries modifications for IPython. 12 | #} 13 | {% extends "basic/layout.html" %} 14 | 15 | {# IPython-specific block #} 16 | {% set css_files = css_files + ["_static/ipython.css"] %} 17 | 18 | {% block header %} 19 |
20 |
21 | {%- block headertitle %} 22 | 23 | {%- if logo_url %} 24 | 27 | {%- endif %} 28 | {#

{{ shorttitle|e }}

#} 29 | {%- endblock %} 30 |
31 | {% include 'navbar.html' %} 32 |
33 |
34 |
35 | {% endblock %} 36 | 37 | 38 | 39 | {% block content %} 40 |
41 |
42 | {%- block sidebar2 %} 43 | {# We don't want the logo here #} 44 | {%- block sidebarlogo %} {% endblock %} 45 | {{ sidebar() }} 46 | {% endblock %} 47 |
48 | {%- block document %} 49 | {{ super() }} 50 | {%- endblock %} 51 |
52 |
53 |
54 |
55 | {% endblock %} 56 | 57 | {% block footer %} 58 | 61 | {% endblock %} 62 | 63 | {% block relbar1 %}{% endblock %} 64 | 65 | {% block relbar2 %}{% endblock %} 66 | -------------------------------------------------------------------------------- /themes/agogo/static/agogo.css_t: -------------------------------------------------------------------------------- 1 | /* 2 | * agogo.css_t 3 | * ~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- agogo theme. 6 | * 7 | * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | * { 13 | margin: 0px; 14 | padding: 0px; 15 | } 16 | 17 | 18 | div.header-wrapper { 19 | border-top: 0px solid #babdb6; 20 | padding: 1em 1em 0; 21 | min-height: 0px; 22 | } 23 | 24 | body { 25 | font-family: {{ theme_bodyfont }}; 26 | line-height: 1.4em; 27 | color: black; 28 | background-color: {{ theme_bgcolor }}; 29 | } 30 | 31 | 32 | /* Page layout */ 33 | 34 | div.header, div.content, div.footer { 35 | max-width: {{ theme_pagewidth }}; 36 | margin-left: auto; 37 | margin-right: auto; 38 | } 39 | 40 | div.header-wrapper { 41 | border-bottom: 0px solid #2e3436; 42 | } 43 | 44 | 45 | /* Default body styles */ 46 | a { 47 | color: {{ theme_linkcolor }}; 48 | } 49 | 50 | div.bodywrapper a, div.footer a { 51 | text-decoration: underline; 52 | } 53 | 54 | .clearer { 55 | clear: both; 56 | } 57 | 58 | .left { 59 | float: left; 60 | } 61 | 62 | .right { 63 | float: right; 64 | } 65 | 66 | .line-block { 67 | display: block; 68 | margin-top: 1em; 69 | margin-bottom: 1em; 70 | } 71 | 72 | .line-block .line-block { 73 | margin-top: 0; 74 | margin-bottom: 0; 75 | margin-left: 1.5em; 76 | } 77 | 78 | h1, h2, h3, h4 { 79 | font-weight: normal; 80 | color: {{ theme_headercolor2 }}; 81 | margin-bottom: .8em; 82 | } 83 | 84 | h1 { 85 | color: {{ theme_headercolor1 }}; 86 | line-height: 1.1em; 87 | text-align: left; 88 | } 89 | 90 | h2 { 91 | padding-bottom: .5em; 92 | border-bottom: 1px solid {{ theme_headercolor2 }}; 93 | } 94 | 95 | a.headerlink { 96 | visibility: hidden; 97 | color: #dddddd; 98 | padding-left: .3em; 99 | } 100 | 101 | h1:hover > a.headerlink, 102 | h2:hover > a.headerlink, 103 | h3:hover > a.headerlink, 104 | h4:hover > a.headerlink, 105 | h5:hover > a.headerlink, 106 | h6:hover > a.headerlink, 107 | dt:hover > a.headerlink { 108 | visibility: visible; 109 | } 110 | 111 | img { 112 | border: 0; 113 | } 114 | 115 | pre { 116 | background-color: #EEE; 117 | padding: 0.5em; 118 | } 119 | 120 | div.admonition { 121 | margin-top: 10px; 122 | margin-bottom: 10px; 123 | padding: 2px 7px 1px 7px; 124 | border-left: 0.2em solid black; 125 | } 126 | 127 | p.admonition-title { 128 | margin: 0px 10px 5px 0px; 129 | font-weight: bold; 130 | } 131 | 132 | dt:target, .highlighted { 133 | background-color: #fbe54e; 134 | } 135 | 136 | /* Header */ 137 | 138 | div.header {} 139 | 140 | div.header h1 { 141 | font-family: "Trebuchet MS", Helvetica, sans-serif; 142 | font-weight: normal; 143 | font-size: 250%; 144 | letter-spacing: .08em; 145 | line-height: 70px; 146 | margin-bottom: 0; 147 | } 148 | 149 | div.header h1 a { 150 | color: white; 151 | } 152 | 153 | div.header h1 a:hover { 154 | text-decoration: none; 155 | } 156 | 157 | div.header div.rel { 158 | margin-top: 1em; 159 | border-top: 1px solid #AAA; 160 | border-bottom: 1px solid #AAA; 161 | padding: 3px 1em; 162 | } 163 | 164 | div.header div.rel a { 165 | color: {{ theme_linkcolor }}; 166 | letter-spacing: .05em; 167 | font-weight: bold; 168 | } 169 | 170 | div.logo {} 171 | 172 | img.logo { 173 | border: 0; 174 | } 175 | 176 | 177 | /* Content */ 178 | div.content-wrapper { 179 | background-color: white; 180 | padding: 1em; 181 | } 182 | 183 | div.document { 184 | max-width: {{ theme_documentwidth }}; 185 | } 186 | 187 | div.body { 188 | padding-right: 2em; 189 | text-align: {{ theme_textalign }}; 190 | } 191 | 192 | div.document ul { 193 | margin: 1.5em; 194 | list-style-type: square; 195 | } 196 | 197 | div.document dd { 198 | margin-left: 1.2em; 199 | margin-top: .4em; 200 | margin-bottom: 1em; 201 | } 202 | 203 | div.document .section { 204 | margin-top: 1.7em; 205 | } 206 | div.document .section:first-child { 207 | margin-top: 0px; 208 | } 209 | 210 | div.document div.highlight { 211 | padding: 3px; 212 | background-color: #eeeeec; 213 | border-top: 2px solid #dddddd; 214 | border-bottom: 2px solid #dddddd; 215 | margin-top: .8em; 216 | margin-bottom: .8em; 217 | } 218 | 219 | div.document h2 { 220 | margin-top: .7em; 221 | } 222 | 223 | div.document p { 224 | margin-bottom: .5em; 225 | } 226 | 227 | div.document li.toctree-l1 { 228 | margin-bottom: 1em; 229 | } 230 | 231 | div.document .descname { 232 | font-weight: bold; 233 | } 234 | 235 | div.document .docutils.literal { 236 | background-color: #eeeeec; 237 | padding: 1px; 238 | } 239 | 240 | div.document .docutils.xref.literal { 241 | background-color: transparent; 242 | padding: 0px; 243 | } 244 | 245 | div.document blockquote { 246 | margin: 1em; 247 | } 248 | 249 | div.document ol { 250 | margin: 1.5em; 251 | } 252 | 253 | 254 | /* Sidebar */ 255 | 256 | div.sphinxsidebar { 257 | width: {{ theme_sidebarwidth }}; 258 | padding: 0 1em; 259 | float: right; 260 | font-size: .93em; 261 | background-color: white; 262 | } 263 | 264 | div.sphinxsidebar a, div.header a { 265 | text-decoration: none; 266 | } 267 | 268 | div.sphinxsidebar a:hover, div.header a:hover { 269 | text-decoration: underline; 270 | } 271 | 272 | div.sphinxsidebar h3 { 273 | color: #2e3436; 274 | text-transform: uppercase; 275 | font-size: 130%; 276 | letter-spacing: .1em; 277 | margin-bottom: .4em; 278 | } 279 | 280 | div.sphinxsidebar h4 { 281 | margin-bottom: 0; 282 | font-weight: bold; 283 | } 284 | 285 | div.sphinxsidebar .tile { 286 | border: 1px solid #D1DDE2; 287 | background-color: #E1E8EC; 288 | padding-left: 0.5em; 289 | margin: 1em 0; 290 | } 291 | 292 | div.sphinxsidebar ul { 293 | list-style-type: none; 294 | } 295 | 296 | div.sphinxsidebar li.toctree-l1 a { 297 | display: block; 298 | padding: 1px; 299 | border: 1px solid #dddddd; 300 | background-color: #eeeeec; 301 | margin-bottom: .4em; 302 | padding-left: 3px; 303 | color: #2e3436; 304 | } 305 | 306 | div.sphinxsidebar li.toctree-l2 a { 307 | background-color: transparent; 308 | border: none; 309 | margin-left: 1em; 310 | border-bottom: 1px solid #dddddd; 311 | } 312 | 313 | div.sphinxsidebar li.toctree-l3 a { 314 | background-color: transparent; 315 | border: none; 316 | margin-left: 2em; 317 | border-bottom: 1px solid #dddddd; 318 | } 319 | 320 | div.sphinxsidebar li.toctree-l2:last-child a { 321 | border-bottom: none; 322 | } 323 | 324 | div.sphinxsidebar li.toctree-l1.current a { 325 | border-right: 5px solid {{ theme_headerlinkcolor }}; 326 | } 327 | 328 | div.sphinxsidebar li.toctree-l1.current li.toctree-l2 a { 329 | border-right: none; 330 | } 331 | 332 | div.sidebarblock { 333 | padding-bottom: .4em; 334 | border-bottom: 1px solid #AAA; 335 | margin-bottom: .8em; 336 | } 337 | 338 | 339 | /* Footer */ 340 | 341 | div.footer-wrapper { 342 | padding-top: 10px; 343 | padding-bottom: 10px; 344 | } 345 | 346 | div.footer { 347 | border-top: 2px solid #aaa; 348 | text-align: right; 349 | } 350 | 351 | div.footer, div.footer a { 352 | color: #888a85; 353 | } 354 | 355 | 356 | /* Styles copied from basic theme */ 357 | 358 | img.align-left, .figure.align-left, object.align-left { 359 | clear: left; 360 | float: left; 361 | margin-right: 1em; 362 | } 363 | 364 | img.align-right, .figure.align-right, object.align-right { 365 | clear: right; 366 | float: right; 367 | margin-left: 1em; 368 | } 369 | 370 | img.align-center, .figure.align-center, object.align-center { 371 | display: block; 372 | margin-left: auto; 373 | margin-right: auto; 374 | } 375 | 376 | .align-left { 377 | text-align: left; 378 | } 379 | 380 | .align-center { 381 | clear: both; 382 | text-align: center; 383 | } 384 | 385 | .align-right { 386 | text-align: right; 387 | } 388 | 389 | /* -- search page ----------------------------------------------------------- */ 390 | 391 | ul.search { 392 | margin: 10px 0 0 20px; 393 | padding: 0; 394 | } 395 | 396 | ul.search li { 397 | padding: 5px 0 5px 20px; 398 | background-image: url(file.png); 399 | background-repeat: no-repeat; 400 | background-position: 0 7px; 401 | } 402 | 403 | ul.search li a { 404 | font-weight: bold; 405 | } 406 | 407 | ul.search li div.context { 408 | color: #888; 409 | margin: 2px 0 0 30px; 410 | text-align: left; 411 | } 412 | 413 | ul.keywordmatches li.goodmatch a { 414 | font-weight: bold; 415 | } 416 | 417 | /* -- index page ------------------------------------------------------------ */ 418 | 419 | table.contentstable { 420 | width: 90%; 421 | } 422 | 423 | table.contentstable p.biglink { 424 | line-height: 150%; 425 | } 426 | 427 | a.biglink { 428 | font-size: 1.3em; 429 | } 430 | 431 | span.linkdescr { 432 | font-style: italic; 433 | padding-top: 5px; 434 | font-size: 90%; 435 | } 436 | 437 | /* -- general index --------------------------------------------------------- */ 438 | 439 | table.indextable td { 440 | text-align: left; 441 | vertical-align: top; 442 | } 443 | 444 | table.indextable dl, table.indextable dd { 445 | margin-top: 0; 446 | margin-bottom: 0; 447 | } 448 | 449 | table.indextable tr.pcap { 450 | height: 10px; 451 | } 452 | 453 | table.indextable tr.cap { 454 | margin-top: 10px; 455 | background-color: #f2f2f2; 456 | } 457 | 458 | img.toggler { 459 | margin-right: 3px; 460 | margin-top: 3px; 461 | cursor: pointer; 462 | } 463 | 464 | /* -- viewcode extension ---------------------------------------------------- */ 465 | 466 | .viewcode-link { 467 | float: right; 468 | } 469 | 470 | .viewcode-back { 471 | float: right; 472 | font-family:: {{ theme_bodyfont }}; 473 | } 474 | 475 | div.viewcode-block:target { 476 | margin: -1px -3px; 477 | padding: 0 3px; 478 | background-color: #f4debf; 479 | border-top: 1px solid #ac9; 480 | border-bottom: 1px solid #ac9; 481 | } 482 | -------------------------------------------------------------------------------- /themes/agogo/static/ipython.css: -------------------------------------------------------------------------------- 1 | /* Extra styles for the IPython website 2 | */ 3 | 4 | #books-and-videos img { 5 | float:left; 6 | margin: 20px; 7 | } 8 | 9 | #books-and-videos ul { 10 | display: inline-block; 11 | } 12 | #books-and-videos h2 { 13 | clear: left; 14 | } 15 | 16 | 17 | 18 | /* Used to make a box with side-by-side Ohloh.net buttons */ 19 | #ohloh { 20 | padding: 0; 21 | } 22 | 23 | #ohloh-use { 24 | float: left; 25 | } 26 | 27 | #ohloh-stats { 28 | float: right; 29 | margin: 3px 0px 0px 0px; 30 | } 31 | 32 | /* A simple div to flush previously-set attributes that may mess up layout further down if they are kept unmodified. 33 | */ 34 | .clear { 35 | height: 0; 36 | font-size: 1px; 37 | margin: 0; 38 | padding: 0; 39 | line-height: 0; 40 | clear: both; 41 | } 42 | -------------------------------------------------------------------------------- /themes/agogo/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = agogo.css 4 | pygments_style = tango 5 | 6 | [options] 7 | bodyfont = "Verdana", Arial, sans-serif 8 | pagewidth = 70em 9 | documentwidth = 55em 10 | sidebarwidth = 14em 11 | bgcolor = white 12 | headerbg = url(bgtop.png) top left repeat-x 13 | footerbg = url(bgfooter.png) top left repeat-x 14 | linkcolor = #ce5c00 15 | headercolor1 = #204a87 16 | headercolor2 = #3465a4 17 | headerlinkcolor = #fcaf3e 18 | textalign = justify 19 | -------------------------------------------------------------------------------- /usersurvey2011.rst: -------------------------------------------------------------------------------- 1 | IPython User Survey 2011 2 | ======================== 3 | 4 | The first IPython user survey was run from 20 May 2011 to 21 September 2011, and 5 | was promoted via the ipython-user mailing list and from the `IPython homepage 6 | `_. The questions (all optional) were: 7 | 8 | * What country do you live in? 9 | * On what platforms do you use IPython? (Windows, Mac OS X, Linux, Other) 10 | * What parts of IPython do you use? (Interactive Shell, Parallel computing, Other) 11 | * How do you use IPython? 12 | * How would you like IPython to improve in the future? 13 | 14 | In total, it attracted 240 responses, which can be viewed `here `_. 15 | Thank-you to everyone who answered our questions. 16 | 17 | Countries 18 | --------- 19 | 20 | 42% of respondents were in the USA, followed by the UK (11%) and Germany (9%). 21 | In order of decreasing frequency, the full list of countries is: 22 | 23 | USA, UK, Germany, France, Canada, Austria, Spain, Switzerland, Sweden, Australia, 24 | Denmark, Norway, China, Singapore, Argentina, Greece, ** Romania, Russia, Finland, 25 | Ireland, Italy, Brazil, Japan, Colombia, Peru, India, Uruguay, South Africa, 26 | Taipei, New Zealand, Saudi Arabia, Holland, Ukraine, Belgium, Slovenia, Israel, 27 | Luxembourg, Czech Republic 28 | 29 | ** Countries after this marker were only recorded by one respondent. 30 | 31 | .. image:: _static/survey2011/countries.png 32 | 33 | Platforms 34 | --------- 35 | 36 | The majority of users use IPython on Linux (80%), with Windows (38%) and Macs 37 | (32%) roughly equal. One user listed NetBSD, and one listed Solaris. 38 | 39 | .. image:: _static/survey2011/platforms.png 40 | 41 | Usage 42 | ----- 43 | 44 | Predictably, all respondents use the interactive shell. 15% also use parallel 45 | computing features. Among 'Other', the only recurring answer was embedding 46 | IPython. Note that the Qt console & HTML notebook were not included, as they 47 | weren't released when the survey started. 48 | 49 | .. image:: _static/survey2011/partsused.png 50 | 51 | Sector 52 | ------ 53 | 54 | Many respondents are in academia (37%), and they mentioned diverse branches of 55 | the sciences. 20% of respondents are in some form of industry (five mentioned 56 | finance), and 16% use it for personal or hobby development. 57 | 58 | There was considerable overlap between groups, with many users in academia and 59 | industry also using IPython at home. In addition, six respondents mentioned that 60 | they were learning Python or programming, and three that they use it for teaching. 61 | 62 | Note that these figures are collected from a free text answer, so they're somewhat 63 | subjective. 64 | 65 | .. image:: _static/survey2011/sector.png 66 | 67 | 68 | Among the interesting areas in which IPython is used are: 69 | 70 | * Programming hospital equipment 71 | * Calibrating spaceflight instruments 72 | * In the US Army Corps of Engineers 73 | * Cinema ticketing systems 74 | * Development of rolling stock (trains) 75 | * Controlling a synchotron 76 | 77 | Requests 78 | -------- 79 | 80 | No theme seemed to appear in the answers to where future development should go. 81 | I interpret this as a good sign—there's nothing our users feel is clearly 82 | wrong. 83 | 84 | Some users requested features that already exist, especially features in 85 | the latest release (e.g. multiline editing, Python 3 support). Hopefully this 86 | will improve as new releases get into distributions' repositories, but maybe we 87 | should promote key features better. 88 | 89 | 10 respondents suggested that the documentation could be improved. 90 | 91 | At least 8 users talked about better ways to reload modules. This seems to be a 92 | fundamental difference between Python and MATLAB, but perhaps there are ways of 93 | easing the experience for switchers. 94 | 95 | 8 respondents either use IPython in Emacs, or said that they'd like 96 | better emacs bindings. Unfortunately, none of the core developers are motivated 97 | to learn Emacs lisp, but we welcome contributions from Emacs users. 98 | 99 | 5 people mentioned better support for Windows. We're keen to support any platform, 100 | and we have fixed many Windows bugs, but the main developers are Linux or Mac 101 | users, so we rely on others to report issues. We have a productive collaboration 102 | with Enthought, who bring IPython to many Windows users through EPD. 103 | 104 | Design of the survey 105 | -------------------- 106 | 107 | Next time, we could collect better data about: 108 | 109 | * How many people use IPython in their own projects, e.g. embedding it or 110 | creating CLIs for libraries 111 | * How people get IPython, e.g. via EPD, repositories or PyPI 112 | * Whether people have used similar software before, e.g. MATLAB 113 | * What sector respondents are in, in a more structured form 114 | 115 | Every question, however, must be balanced against keeping the survey short so 116 | that people finish answering it. 117 | -------------------------------------------------------------------------------- /usersurvey2013.rst: -------------------------------------------------------------------------------- 1 | IPython User Survey 2013 2 | ======================== 3 | 4 | The full responses, and summaries of responses to some questions, are available 5 | as `a Google Spreadsheet `_. 6 | 7 | Countries 8 | --------- 9 | 10 | 42% of respondents were in the USA, followed by the UK (7.1%) and Germany (6.7%). 11 | These numbers are largely similar to the last user survey, two years ago, but 12 | the diversity of countries in the 'tail' has increased. In total, respondents 13 | came from 48 countries (in descending order of frequency): 14 | 15 | USA, UK, Germany, France, Brazil, Canada, Spain, Argentina, Belgium, Netherlands, 16 | Austria, Australia, Norway, Colombia, Russia, Mexico, Italy, Czech Republic, 17 | India, Bermuda, Ireland, Denmark, New Zealand, Romania, Serbia, Singapore, Chile, 18 | Vietnam, Croatia, Switzerland, Portugal, China, Taiwan, Maldives, Ecuador, 19 | Israel, El Salvador, Slovenia, Thailand, Poland, Finland, Belarus, Estonia, 20 | Egypt, South Africa, Peru, Greece, Japan 21 | 22 | .. image:: _static/survey2013/countries.png 23 | :scale: 75% 24 | 25 | See the 'Countries' sheet of the results spreadsheet for the cleaned data. 26 | 27 | IPython versions 28 | ---------------- 29 | 30 | We see a rapid changeover - IPython 1.0 was released while the survey was 31 | running, and by the end of the survey, more people reported using 1.0 than 32 | 0.13, the previous release. Very few people were using older releases, although 33 | two people mentioned using the 0.8 series. 34 | 35 | The survey respondents are probably biased towards people who actively update 36 | IPython to newer versions, so we can assume that a greater proportion of the 37 | total population of users are on older versions. Nonetheless, the take up rates 38 | are encouraging. 39 | 40 | .. image:: _static/survey2013/ipy_versions.png 41 | 42 | 43 | IPython components 44 | ------------------ 45 | 46 | The notebook was the most popular component, with 84% saying they use it, followed 47 | by the classic terminal interface (76%). The Qt console was the least used 48 | interface (27%). 49 | 50 | Over half of respondents use pylab (55%). 16% use the parallel computing framework 51 | in IPython. 52 | 53 | Other components that people mentioned include nbconvert, nbviewer, rmagic 54 | and traitlets. We should include some of these in future surveys. 55 | 56 | .. image:: _static/survey2013/components.png 57 | 58 | 59 | Platforms 60 | --------- 61 | 62 | These results were similar to the previous survey. Linux was the most popular 63 | operating system (81%), while roughly equal numbers use Windows (34%) and Mac 64 | (39%). Of the cloud platforms, only Amazon EC2 has any significant usage, with 65 | 6% of respondents. 66 | 67 | Minor platforms: two people listed Wakari here (others listed it under embedding 68 | products). Two people use Microsoft Azure. FreeBSD, AIX, Rackspace and Raspberry 69 | Pi were each mentioned once. 70 | 71 | .. image:: _static/survey2013/platforms.png 72 | 73 | Python versions 74 | --------------- 75 | 76 | As expected, Python 2.7 is the most widely used release (97%). However, a 77 | significant fraction (22%) have also used IPython with Python 3.3. 7% of users 78 | still use Python 2.6, and 4% use 3.2 - we will be dropping support for both of 79 | these versions in IPython 2.0. Very few are on even older versions. 80 | 81 | .. image:: _static/survey2013/py_versions.png 82 | 83 | Projects integrating IPython 84 | ---------------------------- 85 | 86 | 59 people (13%) reported using IPython with the `Spyder IDE `_. 87 | Anecdotally, we have seen more people using Spyder in Europe than in North America, 88 | and the results somewhat support this. Although the US was still the largest single 89 | country among users of IPython and Spyder, it accounted for only 20% of 90 | the users, less than the 42% from the US in the whole survey. 91 | 92 | Projects integrating IPython with the two heavyweight editors, vim and emacs, 93 | have 12 and 10 users respectively. A long list of other integrations included 94 | editors, Python packages and hosted services on the web, but only a few 95 | respondents mentioned each one. 96 | 97 | See the 'Integration' sheet of the results spreadsheet for the cleaned data. 98 | 99 | Installation 100 | ------------ 101 | 102 | No one installation method dominated. The leading techniques were pip/easy_install 103 | (48%), Linux distribution repositories (44%) and Python distributions (38%). 104 | 105 | .. image:: _static/survey2013/installation.png 106 | 107 | Support resources 108 | ----------------- 109 | 110 | Almost all users (91%) report using the online documentation, highlighting the 111 | importance of keeping this up to date. Stackoverflow is also very important (68%). 112 | In contrast, only 3% of respondents have used our Hipchat chat rooms - though 113 | these are quite new, so people may not be aware of them yet. 114 | 115 | .. image:: _static/survey2013/help_resources.png 116 | 117 | Role 118 | ---- 119 | 120 | Once again, many of our users are in academia (65%), but we also have a 121 | significant group of users in industry (38%) and 'hobby' usage (37%), i.e. people 122 | using IPython outside their jobs. These numbers are not directly comparable to 123 | the last survey, because last time, the categories were taken from a free text 124 | answer. 125 | 126 | 24% of respondents also said they were using IPython in education. In the future, 127 | we could break this down more to look at teaching and learning. 128 | 129 | .. image:: _static/survey2013/role.png 130 | 131 | Use cases 132 | --------- 133 | 134 | People's descriptions of the projects where they use IPython were many and varied. 135 | A few specific highlights include modelling quantum computing systems (row 93 in the results spreadsheet), 136 | computer vision (162), phylogenetic relationships of languages (201), e-Democracy 137 | (261), pressure measurements under animals' feet (423), and processing data from 138 | particle colliders (195) and gamma ray telescopes (454). 139 | 140 | Grouping the responses, people are using IPython in at least these areas: 141 | 142 | - Finance/economics 143 | - Bioinformatics 144 | - Neuroscience 145 | - Chemistry 146 | - Astronomy 147 | - Physics 148 | 149 | And in these ways: 150 | 151 | - Machine learning 152 | - Data cleaning 153 | - Writing papers 154 | - Developing other application and libraries 155 | - Matlab replacement 156 | 157 | Suggestions box 158 | --------------- 159 | 160 | Categorised suggestions are listed on the 'Suggestions' sheet of the result 161 | spreadsheet. Some responses were split into multiple suggestions. 162 | 163 | A number of themes appeared: 164 | 165 | - nbconvert: Already much improved since the survey, and we continue to improve it. 166 | - File navigation, notebooks in different directories: Coming in IPython 2! 167 | - Widgets: Coming in IPython 2! 168 | - Interactive plots: Various projects are exploring this, and the new widget 169 | machinery in IPython 2 will provide a foundation for further work. 170 | - Variable explorer: One can be built on top of the widget framework. 171 | - Keyboard shortcuts: Much improved, and much more customisable, in IPython 2. 172 | - JS API: IPython 2 has an 'nbextension' system, and the Javascript API is 173 | gradually becoming more stable. 174 | - Better ways to deal with long notebooks: On the radar for IPython 3. 175 | - Integration with other languages: IPython 3 will take a big step by integrating 176 | multiple kernel types into the UI. 177 | - Multi-user support: A multi-user server is a goal for IPython 3. Other projects 178 | like Jiffylab and IPydra provide another model of multi-user server. 179 | - Docs: We're improving them, but we could still do better. 180 | - Parallel: ipcluster's launchers are in need of various improvements. We 181 | plan to rewrite the ipcluster script as an RPC service, which should improve 182 | many of these cases, especially SSH. The documentation could also use a lot of 183 | attention, especially because there were several requests for features that already exist. 184 | - Security: After long discussion, we have created a new security model for 185 | IPython 2. 186 | - Installation: We point new users to Anaconda, which is one download including 187 | Python, IPython, numpy, and many other packages. We know installation can be 188 | painful, but we don't know how to solve this well at the moment. 189 | - Hiding cells: We plan to add options for this to nbconvert. We're also planning 190 | a way to tag cells in the notebook UI, which could be used to control what 191 | nbconvert shows. 192 | - Concurrent editing: On the radar, but some way off. We need to get multi-user 193 | sorted out first. 194 | - Python 3 support: I (Thomas) use Python 3 daily, and I'll keep improving docs, 195 | examples, etc. 196 | - Editor features: We are enabling CodeMirror features like bracket matching. 197 | Features like refactoring tools and static analysis should be possible to write 198 | as extensions. 199 | - Sphinx integration: On the radar. The yt project has done some work on this. 200 | - Slideshows: Exporting to static slides with nbconvert has been improved since 201 | 1.0, and there's ongoing development of an extension to present live, 202 | executable notebooks as slides. 203 | - Integration with version control: No current plans. 204 | - Debugger: No current plans. 205 | 206 | 207 | Other comments 208 | -------------- 209 | 210 | Categorised comments are listed on the 'Comments' sheet of the result 211 | spreadsheet. 212 | 213 | Thank-you to everyone who used the comments or suggestions fields to thank 214 | or compliment us. We honestly weren't fishing for complements when we wrote the 215 | survey. 216 | 217 | A few more people wanted better documentation - see the section above. 218 | 219 | Other than that, there was no theme apparent in the comments. All of them have 220 | been read. If you want to follow up, please get in touch with us - the survey was 221 | anonymous, so we can't get in touch with you. 222 | -------------------------------------------------------------------------------- /whatsnew082.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | WhatsNew082 3 | ==================== 4 | 5 | ---------------------------- 6 | New features in 0.8.2 7 | ---------------------------- 8 | 9 | This does not list bugfixes, enhanced internals or api additions. 10 | 11 | * "Shadow history" remembers everything you've entered, forever. Remember that 12 | arcane command line you entered three weeks ago? Just grep the shadow 13 | history with "%hist -g"! `See cookbook 14 | `__ for details. 15 | * %rep is a new magic function that allows you to fetch command lines from 16 | history for editing. Do "%rep?" for details. 17 | * System command aliases (created by %rehashx) are lower case in win32. 18 | * Macros can now take arguments. `See cookbook 19 | `__. 20 | * %macro without arguments lists available macros. 21 | * Directory history (the easiest way to see it is by doing 'cd -') is now 22 | persistent across sessions. 23 | * ipython -i -c : -i (interact) prevents IPython session from exiting 24 | after executing . can now contain IPython syntax (!foo, %magic 25 | etc). 26 | * new profiles: doctest, zope. scipy is now in ipy_profile_scipy.py instead of 27 | ipythonrc-scipy. 28 | * new extensions: 29 | 30 | - ipy_traits_completer.py: complete Traits attributes 31 | - ipy_legacy.py: enable deprecated features 32 | - mglob.py: enhanced globbing - ``%mglob !.svn/ rec:*.py`` 33 | - ipy_exportdb.py: create a portable .py file from your %store'd macros, 34 | aliases, strings and bookmarks for distribution. `See cookbook 35 | `__ . 36 | - ipy_render.py: win32: render templates using Itpl format to clipboard 37 | (e.g. render 'hello $a'). `See cookbook 38 | `__. 39 | - ipy_editors.py: Bunch of popular editors readily configured for 40 | IPython. See ipy_user_conf.py for instructions on how to enable them. 41 | - ipy_fsops.py: Has useful shell utils for plain (non-cygwin enabled) win32 42 | installations: icp, imv, imkdir, igrep, irm, collect (collect is useful 43 | for others as well). 44 | 45 | * py2exe version supported (ipykit) 46 | * The title bar of IPython window shows the currently executing system 47 | command. 48 | * Prompt on win32 in pysh ('-p sh' profile) now has the drive letter for 49 | enhanced location awareness, and uses / instead of \. 50 | * Errors from misusing magics are much less verbose now (due to UserError 51 | exception). 52 | * String Lists provide a convenient way to manipulate command output. See 53 | `Cookbook `__. 54 | * Directory stack (%pushd, %popd, %dirs) works more predictably now. 55 | * %time allows IPython expressions (which includes system commands - e.g. try 56 | "%time !ls") 57 | * Callable aliases can be used to extend IPython (provide new commands) in a 58 | more elegant manner than magic commands. Also, no % is 59 | necessary/allowed. See ipy_fsops.py for examples. 60 | * Improved Leopard support for tab-completion, though a few issues remain. 61 | 62 | ---------------- 63 | Known issues 64 | ---------------- 65 | 66 | * We still get crashes from KeyboardInterrupt occasionally (caused by pressing 67 | ctrl+C or ctrl+break) 68 | * Unicode support is not yet perfect, so expect problems on Unicode 69 | input/output. 70 | * The manual is hopelessly out of date. This is something we will look into 71 | during 0.8.3 cycle; in the meantime, see the documentation page on the wiki 72 | [superseded], and the user-maintained `cookbook 73 | `__. 74 | * Under OSX Leopard, we are seeing some readline-related problems with history 75 | recall. It is not clear yet whether the issue is with IPython or Leopard's 76 | readline support itself. We're investigating the issue. 77 | -------------------------------------------------------------------------------- /whatsnew083.rst: -------------------------------------------------------------------------------- 1 | ------------------------- 2 | New features in 0.8.3 3 | ------------------------- 4 | 5 | This does not list bugfixes, enhanced internals or api additions. 6 | 7 | * ILeo, realized by ipy_leo extension on IPython side and ipython.py plugin on Leo side, allows high level integration between 8 | IPython and Leo literate editor / outliner. This includes editing interactive IPython objects, convenient manipulation of 9 | leo document content, etc. This essentially makes Leo an IPython notebook where you can store your work data and commands persistently, 10 | and play with ideas and data in highly interactive fashion. See http://webpages.charter.net/edreamleo/IPythonBridge.html for details 11 | 12 | * Multithreaded shells (used e.g. by matplotlib interaction) have been improved, reducing the possibility of corner case 13 | deadlocks. IPython also recovers from deadlock within few seconds if it happens, so you don't lose your work. 14 | 15 | * %tasks and %kill in ipy_jobctrl extension allow you to kill OS processes launched from python when ctrl+C just won't do it 16 | 17 | * New option "autoexec" allows queuing commands to run at IPython startup, from config files. See ipy_user_conf.py for examples 18 | 19 | * %edit MyClass works also when MyClass was created in another %edit session. 20 | 21 | * New command line arguments: 22 | 23 | * ``-pydb`` to tell ipython to use pydb as the default debugger (it is no longer assumed when pydb is installed) 24 | * ``-twisted`` installs a twisted reactor in IPython process, where all entered commands are run in a deferred twisted call. 25 | This ensures that everything, apart from input IPython line entry, occurs in same thread. 26 | 27 | * var = !cmd no longer prints the output in addition to storing it in variable 28 | 29 | * sh profile: LA (last arg of previous command) supported, like bash $!. This allows you to enter system commands 30 | like "cp $LA /tmp" or "cp $LA(3) /tmp") 31 | 32 | * Improvements in the development process that should lower the barrier of entry: 33 | 34 | * IPython now uses ReStructuredText and Sphinx for documentation. Consequently, documentation has also been updated for significant 35 | parts (though it's not perfect yet) 36 | * We have switched from Subversion to Bazaar and Launchpad. You can still file bugs in Trac, but Launchpad is recommended 37 | 38 | * New notable extensions (to name a few): 39 | 40 | * ipy_autoreload automatically reloads your modules, saving you tons of reload() calls 41 | * ipy_winpdb provides %wdb magic that acts like %run -d, but allows you to debug a script in WinPdb, 42 | a cross-platform GUI debugger 43 | * ipy_greedycompleter makes tab completion less picky, so stuff like d['hello'].foo. actually yields completions. 44 | * ipy_bzr provides a Bazaar (bzr) tab completer that knows all the commands and options specific to that command. 45 | Recommended if you have used "bzr shell" from bzrtools previously. 46 | 47 | * Lots of improvements in wxIPython, the wx based GUI that liberates IPython from the confines of the console. 48 | 49 | --------------------------------------------------------------------------------