##// END OF EJS Templates
First pass at editing pr
Carol Willing -
Show More
@@ -1,3 +1,3
1 -e .
1 -e ../.
2 2 ipykernel
3 3 setuptools>=18.5
@@ -1,282 +1,284
1 1 # -*- coding: utf-8 -*-
2 2 #
3 3 # IPython documentation build configuration file.
4 4
5 5 # NOTE: This file has been edited manually from the auto-generated one from
6 6 # sphinx. Do NOT delete and re-generate. If any changes from sphinx are
7 7 # needed, generate a scratch one and merge by hand any new fields needed.
8 8
9 9 #
10 10 # This file is execfile()d with the current directory set to its containing dir.
11 11 #
12 12 # The contents of this file are pickled, so don't put values in the namespace
13 13 # that aren't pickleable (module imports are okay, they're removed automatically).
14 14 #
15 15 # All configuration values have a default value; values that are commented out
16 16 # serve to show the default value.
17 17
18 18 import sys, os
19 19
20 20 ON_RTD = os.environ.get('READTHEDOCS', None) == 'True'
21 21
22 22 if ON_RTD:
23 23 # Mock the presence of matplotlib, which we don't have on RTD
24 24 # see
25 25 # http://read-the-docs.readthedocs.io/en/latest/faq.html
26 26 tags.add('rtd')
27 27
28 28 # RTD doesn't use the Makefile, so re-run autogen_{things}.py here.
29 29 for name in ('config', 'api', 'magics'):
30 30 fname = 'autogen_{}.py'.format(name)
31 31 fpath = os.path.abspath(os.path.join('..', fname))
32 32 with open(fpath) as f:
33 33 exec(compile(f.read(), fname, 'exec'), {
34 34 '__file__': fpath,
35 35 '__name__': '__main__',
36 36 })
37 37 else:
38 38 import sphinx_rtd_theme
39 39 html_theme = "sphinx_rtd_theme"
40 40 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
41 41
42 42 # If your extensions are in another directory, add it here. If the directory
43 43 # is relative to the documentation root, use os.path.abspath to make it
44 44 # absolute, like shown here.
45 45 sys.path.insert(0, os.path.abspath('../sphinxext'))
46 46
47 47 # We load the ipython release info into a dict by explicit execution
48 48 iprelease = {}
49 49 exec(compile(open('../../IPython/core/release.py').read(), '../../IPython/core/release.py', 'exec'),iprelease)
50 50
51 51 # General configuration
52 52 # ---------------------
53 53
54 54 # Add any Sphinx extension module names here, as strings. They can be extensions
55 55 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
56 56 extensions = [
57 57 'matplotlib.sphinxext.mathmpl',
58 58 'matplotlib.sphinxext.only_directives',
59 59 'matplotlib.sphinxext.plot_directive',
60 60 'sphinx.ext.autodoc',
61 61 'sphinx.ext.autosummary',
62 62 'sphinx.ext.doctest',
63 63 'sphinx.ext.inheritance_diagram',
64 64 'sphinx.ext.intersphinx',
65 65 'IPython.sphinxext.ipython_console_highlighting',
66 66 'IPython.sphinxext.ipython_directive',
67 67 'sphinx.ext.napoleon', # to preprocess docstrings
68 68 'github', # for easy GitHub links
69 69 'magics',
70 70 ]
71 71
72 72 if ON_RTD:
73 73 # Remove extensions not currently supported on RTD
74 74 extensions.remove('matplotlib.sphinxext.only_directives')
75 75 extensions.remove('matplotlib.sphinxext.mathmpl')
76 76 extensions.remove('matplotlib.sphinxext.plot_directive')
77 77 extensions.remove('IPython.sphinxext.ipython_directive')
78 78 extensions.remove('IPython.sphinxext.ipython_console_highlighting')
79 79
80 80 # Add any paths that contain templates here, relative to this directory.
81 81 templates_path = ['_templates']
82 82
83 83 # The suffix of source filenames.
84 84 source_suffix = '.rst'
85 85
86 86 def is_stable(extra):
87 87 for ext in {'dev', 'b', 'rc'}:
88 88 if ext in extra:
89 89 return False
90 90 return True
91 91
92 92 if is_stable(iprelease['_version_extra']):
93 93 tags.add('ipystable')
94 94 else:
95 95 tags.add('ipydev')
96 96 rst_prolog = """
97 97 .. warning::
98 98
99 99 This documentation is for a development version of IPython. There may be
100 100 significant differences from the latest stable release.
101 101
102 102 """
103 103
104 104 # The master toctree document.
105 105 master_doc = 'index'
106 106
107 107 # General substitutions.
108 108 project = 'IPython'
109 109 copyright = 'The IPython Development Team'
110 110
111 111 # ghissue config
112 112 github_project_url = "https://github.com/ipython/ipython"
113 113
114 114 # numpydoc config
115 115 numpydoc_show_class_members = False # Otherwise Sphinx emits thousands of warnings
116 116 numpydoc_class_members_toctree = False
117 117
118 118 # The default replacements for |version| and |release|, also used in various
119 119 # other places throughout the built documents.
120 120 #
121 121 # The full version, including alpha/beta/rc tags.
122 122 release = "%s" % iprelease['version']
123 123 # Just the X.Y.Z part, no '-dev'
124 124 version = iprelease['version'].split('-', 1)[0]
125 125
126 126
127 127 # There are two options for replacing |today|: either, you set today to some
128 128 # non-false value, then it is used:
129 129 #today = ''
130 130 # Else, today_fmt is used as the format for a strftime call.
131 131 today_fmt = '%B %d, %Y'
132 132
133 133 # List of documents that shouldn't be included in the build.
134 134 #unused_docs = []
135 135
136 136 # Exclude these glob-style patterns when looking for source files. They are
137 137 # relative to the source/ directory.
138 138 exclude_patterns = ['whatsnew/pr']
139 139
140 140
141 141 # If true, '()' will be appended to :func: etc. cross-reference text.
142 142 #add_function_parentheses = True
143 143
144 144 # If true, the current module name will be prepended to all description
145 145 # unit titles (such as .. function::).
146 146 #add_module_names = True
147 147
148 148 # If true, sectionauthor and moduleauthor directives will be shown in the
149 149 # output. They are ignored by default.
150 150 #show_authors = False
151 151
152 152 # The name of the Pygments (syntax highlighting) style to use.
153 153 pygments_style = 'sphinx'
154 154
155 155 # Set the default role so we can use `foo` instead of ``foo``
156 156 default_role = 'literal'
157 157
158 158 # Options for HTML output
159 159 # -----------------------
160 160
161 161 # The style sheet to use for HTML and HTML Help pages. A file of that name
162 162 # must exist either in Sphinx' static/ path, or in one of the custom paths
163 163 # given in html_static_path.
164 164 # html_style = 'default.css'
165 # html_favicon = 'favicon.ico'
165
166 166
167 167 # The name for this set of Sphinx documents. If None, it defaults to
168 168 # "<project> v<release> documentation".
169 169 #html_title = None
170 170
171 171 # The name of an image file (within the static path) to place at the top of
172 172 # the sidebar.
173 173 #html_logo = None
174 174
175 175 # Add any paths that contain custom static files (such as style sheets) here,
176 176 # relative to this directory. They are copied after the builtin static files,
177 177 # so a file named "default.css" will overwrite the builtin "default.css".
178 178 html_static_path = ['_static']
179
180 # Favicon needs the directory name
179 181 html_favicon = '_static/favicon.ico'
180 182 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
181 183 # using the given strftime format.
182 184 html_last_updated_fmt = '%b %d, %Y'
183 185
184 186 # If true, SmartyPants will be used to convert quotes and dashes to
185 187 # typographically correct entities.
186 188 #html_use_smartypants = True
187 189
188 190 # Custom sidebar templates, maps document names to template names.
189 191 #html_sidebars = {}
190 192
191 193 # Additional templates that should be rendered to pages, maps page names to
192 194 # template names.
193 195 html_additional_pages = {
194 196 'interactive/htmlnotebook': 'notebook_redirect.html',
195 197 'interactive/notebook': 'notebook_redirect.html',
196 198 'interactive/nbconvert': 'notebook_redirect.html',
197 199 'interactive/public_server': 'notebook_redirect.html',
198 200 }
199 201
200 202 # If false, no module index is generated.
201 203 #html_use_modindex = True
202 204
203 205 # If true, the reST sources are included in the HTML build as _sources/<name>.
204 206 #html_copy_source = True
205 207
206 208 # If true, an OpenSearch description file will be output, and all pages will
207 209 # contain a <link> tag referring to it. The value of this option must be the
208 210 # base URL from which the finished HTML is served.
209 211 #html_use_opensearch = ''
210 212
211 213 # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
212 214 #html_file_suffix = ''
213 215
214 216 # Output file base name for HTML help builder.
215 217 htmlhelp_basename = 'ipythondoc'
216 218
217 219 intersphinx_mapping = {'python': ('http://docs.python.org/3/', None),
218 220 'rpy2': ('http://rpy.sourceforge.net/rpy2/doc-2.4/html/', None),
219 221 'traitlets': ('http://traitlets.readthedocs.io/en/latest/', None),
220 222 'jupyterclient': ('http://jupyter-client.readthedocs.io/en/latest/', None),
221 223 'ipyparallel': ('http://ipyparallel.readthedocs.io/en/latest/', None),
222 224 'jupyter': ('http://jupyter.readthedocs.io/en/latest/', None),
223 225 }
224 226
225 227 # Options for LaTeX output
226 228 # ------------------------
227 229
228 230 # The paper size ('letter' or 'a4').
229 231 latex_paper_size = 'letter'
230 232
231 233 # The font size ('10pt', '11pt' or '12pt').
232 234 latex_font_size = '11pt'
233 235
234 236 # Grouping the document tree into LaTeX files. List of tuples
235 237 # (source start file, target name, title, author, document class [howto/manual]).
236 238
237 239 latex_documents = [
238 240 ('index', 'ipython.tex', 'IPython Documentation',
239 241 u"""The IPython Development Team""", 'manual', True),
240 242 ('parallel/winhpc_index', 'winhpc_whitepaper.tex',
241 243 'Using IPython on Windows HPC Server 2008',
242 244 u"Brian E. Granger", 'manual', True)
243 245 ]
244 246
245 247 # The name of an image file (relative to this directory) to place at the top of
246 248 # the title page.
247 249 #latex_logo = None
248 250
249 251 # For "manual" documents, if this is true, then toplevel headings are parts,
250 252 # not chapters.
251 253 #latex_use_parts = False
252 254
253 255 # Additional stuff for the LaTeX preamble.
254 256 #latex_preamble = ''
255 257
256 258 # Documents to append as an appendix to all manuals.
257 259 #latex_appendices = []
258 260
259 261 # If false, no module index is generated.
260 262 latex_use_modindex = True
261 263
262 264
263 265 # Options for texinfo output
264 266 # --------------------------
265 267
266 268 texinfo_documents = [
267 269 (master_doc, 'ipython', 'IPython Documentation',
268 270 'The IPython Development Team',
269 271 'IPython',
270 272 'IPython Documentation',
271 273 'Programming',
272 274 1),
273 275 ]
274 276
275 277 modindex_common_prefix = ['IPython.']
276 278
277 279
278 280 # Cleanup
279 281 # -------
280 282 # delete release info to avoid pickling errors from sphinx
281 283
282 284 del iprelease
@@ -1,193 +1,193
1 1 .. _release_process:
2 2
3 3 =======================
4 4 IPython release process
5 5 =======================
6 6
7 7 This document contains the process that is used to create an IPython release.
8 8
9 9 Conveniently, the `release` script in the `tools` directory of the `IPython`
10 10 repository automates most of the release process. This document serves as a
11 11 handy reminder and checklist for the release manager.
12 12
13 13 1. Set Environment variables
14 14 ----------------------------
15 15
16 16 Set environment variables to document previous release tag, current
17 17 release milestone, current release version, and git tag::
18 18
19 19 PREV_RELEASE=4.0.0
20 20 MILESTONE=4.1
21 21 VERSION=4.1.0
22 22 BRANCH=master
23 23
24 24 These variables may be used later to copy/paste as answers to the script
25 25 questions instead of typing the appropriate command when the time comes. These
26 26 variables are not used by the scripts directly; therefore, there is no need to
27 27 `export` the variables.
28 28
29 29 2. Create GitHub stats and finish release note
30 30 ----------------------------------------------
31 31
32 32 .. note::
33 33
34 34 Before generating the GitHub stats, verify that all closed issues and
35 35 pull requests have `appropriate milestones <https://github.com/ipython/ipython/wiki/Dev%3A-GitHub-workflow#milestones>`_.
36 36 `This search <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
37 37 should return no results before creating the GitHub stats.
38 38
39 39 If a major release:
40 40
41 41 - merge any pull request notes into what's new::
42 42
43 43 python tools/update_whatsnew.py
44 44
45 45 - update `docs/source/whatsnew/development.rst`, to ensure it covers
46 46 the major release features
47 47 - move the contents of `development.rst` to `versionX.rst` where `X` is
48 48 the numerical release version
49 49 - generate summary of GitHub contributions, which can be done with::
50 50
51 51 python tools/github_stats.py --milestone $MILESTONE > stats.rst
52 52
53 53 which may need some manual cleanup of `stats.rst`. Add the cleaned
54 54 `stats.rst` results to `docs/source/whatsnew/github-stats-X.rst` where
55 55 `X` is the numerical release version. If creating a major release, make
56 56 a new `github-stats-X.rst` file; if creating a minor release, the
57 57 content from `stats.rst` may simply be added to the top of an existing
58 58 `github-stats-X.rst` file.
59 59
60 60 To find duplicates and update `.mailmap`, use::
61 61
62 62 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
63 63
64 64 3. Make sure the repository is clean
65 65 ------------------------------------
66 66
67 67 of any file that could be problematic.
68 68 Remove all non-tracked files with:
69 69
70 70 .. code::
71 71
72 72 git clean -xfdi
73 73
74 74 This will ask for confirmation before removing all untracked files. Make
75 75 sure the ``dist/`` folder is clean to avoid any stale builds from
76 76 previous build attempts.
77 77
78 78
79 79 4. Update the release version number
80 80 ------------------------------------
81 81
82 82 Edit `IPython/core/release.py` to have the current version.
83 83
84 84 in particular, update version number and ``_version_extra`` content in
85 85 ``IPython/core/release.py``.
86 86
87 87 Make sure the version number matches pep440, in particular, `rc` and `beta` are
88 88 not separated by `.` or the `sdist` and `bdist` will appear as different
89 89 releases. For example, a valid version number for a release candidate (rc)
90 90 release is: ``1.3rc1``. Notice that there is no separator between the '3' and
91 91 the 'r'. Check the environment variable `$VERSION` as well.
92 92
93 93
94 Comment remove the `developpement` entry in `whatsnew/index.rst`. TODO, figure
94 Comment remove the `development` entry in `whatsnew/index.rst`. TODO, figure
95 95 out how to make that automatic.
96 96
97 97 5. Run the `tools/build_release` script
98 98 ---------------------------------------
99 99
100 100 Running `tools/build_release` does all the file checking and building that
101 101 the real release script will do. This makes test installations, checks that
102 102 the build procedure runs OK, and tests other steps in the release process.
103 103
104 104 The `build_release` script will in particular verify that the version number
105 105 match PEP 440, in order to avoid surprise at the time of build upload.
106 106
107 107 We encourage creating a test build of the docs as well.
108 108
109 109 6. Create and push the new tag
110 110 ------------------------------
111 111
112 112 Commit the changes to release.py::
113 113
114 114 git commit -am "release $VERSION"
115 115 git push origin $BRANCH
116 116
117 117 Create and push the tag::
118 118
119 119 git tag -am "release $VERSION" "$VERSION"
120 120 git push origin --tags
121 121
122 122 Update release.py back to `x.y-dev` or `x.y-maint`, and re-add the
123 `developpement` entry in `docs/source/whatsnew/index.rst` and push::
123 `development` entry in `docs/source/whatsnew/index.rst` and push::
124 124
125 125 git commit -am "back to development"
126 126 git push origin $BRANCH
127 127
128 128 7. Get a fresh clone
129 129 --------------------
130 130
131 131 Get a fresh clone of the tag for building the release::
132 132
133 133 cd /tmp
134 134 git clone --depth 1 https://github.com/ipython/ipython.git -b "$VERSION"
135 135
136 136 8. Run the release script
137 137 -------------------------
138 138
139 139 Run the `release` script, this step requires having a current wheel, Python >=3.4 and Python 2.7.::
140 140
141 141 cd tools && ./release
142 142
143 143 This makes the tarballs, zipfiles, and wheels, and put them under the `dist/`
144 144 folder. Be sure to test the ``wheel`` and the ``sdist`` locally before uploading
145 145 them to PyPI.
146 146
147 147 Use the following to actually upload the result of the build:
148 148
149 149 ./release upload
150 150
151 151 It should posts them to ``archive.ipython.org`` and registers the release
152 152 with PyPI if you have the various authorisations.
153 153
154 154 You might need to use `twine <https://github.com/pypa/twine>`_ (`twine upload
155 155 dist/*`) manually to actually upload on PyPI. Unlike setuptools, twine is able
156 156 to upload packages over SSL.
157 157
158 158
159 159 9. Draft a short release announcement
160 160 -------------------------------------
161 161
162 162 The announcement should include:
163 163
164 164 - release highlights
165 165 - a link to the html version of the *What's new* section of the documentation
166 166 - a link to upgrade or installation tips (if necessary)
167 167
168 168 Post the announcement to the mailing list and or blog, and link from Twitter.
169 169
170 170 10. Update milestones on GitHub
171 171 -------------------------------
172 172
173 173 These steps will bring milestones up to date:
174 174
175 175 - close the just released milestone
176 176 - open a new milestone for the next release (x, y+1), if the milestone doesn't
177 177 exist already
178 178
179 179 11. Update the IPython website
180 180 ------------------------------
181 181
182 182 The IPython website should document the new release:
183 183
184 184 - add release announcement (news, announcements)
185 185 - update current version and download links
186 186 - update links on the documentation page (especially if a major release)
187 187
188 188 12. Celebrate!
189 189 --------------
190 190
191 191 Celebrate the release and please thank the contributors for their work. Great
192 192 job!
193 193
@@ -1,110 +1,111
1 1 .. _introduction:
2 2
3 3 =====================
4 4 IPython Documentation
5 5 =====================
6 6
7 7 .. htmlonly::
8 8
9 9 :Release: |release|
10 10 :Date: |today|
11 11
12 12 Welcome to the official IPython documentation
13 13
14 14 IPython provides a rich toolkit to help you make the most out of using Python
15 15 interactively. Its main components are:
16 16
17 17 * A powerful interactive Python shell
18
18 19 * A `Jupyter <http://jupyter.org/>`_ kernel to work with Python code in Jupyter
19 20 notebooks and other interactive frontends.
20 21
21 22 The enhanced interactive Python shells and kernel have the following main
22 23 features:
23 24
24 25 * Comprehensive object introspection.
25 26
26 27 * Input history, persistent across sessions.
27 28
28 29 * Caching of output results during a session with automatically generated
29 30 references.
30 31
31 32 * Extensible tab completion, with support by default for completion of python
32 33 variables and keywords, filenames and function keywords.
33 34
34 35 * Extensible system of 'magic' commands for controlling the environment and
35 36 performing many tasks related either to IPython or the operating system.
36 37
37 38 * A rich configuration system with easy switching between different setups
38 39 (simpler than changing $PYTHONSTARTUP environment variables every time).
39 40
40 41 * Session logging and reloading.
41 42
42 43 * Extensible syntax processing for special purpose situations.
43 44
44 45 * Access to the system shell with user-extensible alias system.
45 46
46 47 * Easily embeddable in other Python programs and GUIs.
47 48
48 49 * Integrated access to the pdb debugger and the Python profiler.
49 50
50 51
51 52 The Command line interface inherit all the above functionality and posses
52 53
53 * real multiline editting.
54 * real multi-line editing.
54 55
55 56 * syntax highlighting as you type
56 57
57 * intgration with command line editor for a better workflow.
58 * integration with command line editor for a better workflow.
58 59
59 60 The kernel also have its share of feature, when used with a compatible frontend
60 61 it allows for:
61 62
62 63 * rich display system for object allowing to display Html, Images, Latex,Sounds
63 64 Video.
64 65
65 * interactive widgets with the use of the ``ipywigets`` package.
66 * interactive widgets with the use of the ``ipywidgets`` package.
66 67
67 68
68 69 This documentation will walk through most of the features of the IPython
69 70 command line and kernel, as well as describe the internals mechanisms in order
70 71 to improve your Python workflow.
71 72
72 73 You can always find the table of content for this documentation in the left
73 74 sidebar, allowing you to come back on previous section if needed, or skip ahead.
74 75
75 76
76 77 The latest development version is always available from IPython's `GitHub
77 78 repository <http://github.com/ipython/ipython>`_.
78 79
79 80
80 81
81 82
82 83 .. toctree::
83 84 :maxdepth: 1
84 85 :hidden:
85 86
86 87 self
87 88 overview
88 89 whatsnew/index
89 90 install/index
90 91 interactive/index
91 92 config/index
92 93 development/index
93 94 coredev/index
94 95 api/index
95 96 about/index
96 97
97 98 .. seealso::
98 99
99 100 `Jupyter documentation <http://jupyter.readthedocs.io/en/latest/>`__
100 101 The Notebook code and many other pieces formerly in IPython are now parts
101 102 of Project Jupyter.
102 103 `ipyparallel documentation <http://ipyparallel.readthedocs.io/en/latest/>`__
103 104 Formerly ``IPython.parallel``.
104 105
105 106
106 107 .. htmlonly::
107 108 * :ref:`genindex`
108 109 * :ref:`modindex`
109 110 * :ref:`search`
110 111
@@ -1,60 +1,58
1 1 .. _install_index:
2 2
3 3 ============
4 4 Installation
5 5 ============
6 6
7 7 .. toctree::
8 8 :maxdepth: 3
9 9 :hidden:
10 10
11 11
12 12 install
13 13 kernel_install
14 14
15 15
16 16
17 This sections will guide you into `installing IPython itself <install>`_, and
18 installing `kernels for jupyter <kernel_install>`_ if you are working with
19 multiple version of Python, or multiple environments.
20
21 To know more, head to the next section.
17 This sections will guide you through `installing IPython itself <install>`_, and
18 installing `kernels for Jupyter <kernel_install>`_ if you wish to work with
19 multiple version of Python, or multiple environments.
22 20
23 21
24 22 Quick install reminder
25 23 ~~~~~~~~~~~~~~~~~~~~~~
26 24
27 Here is a quick reminder of the various commands needed if you are already
28 familiar with IPython and are just searching to refresh your memory:
25 Here is a quick reminder of the commands needed for installation if you are
26 already familiar with IPython and are just searching to refresh your memory:
29 27
30 28 Install IPython:
31 29
32 30 .. code-block:: bash
33 31
34 32 $ pip install ipython
35 33
36 34
37 35 Install and register an IPython kernel with Jupyter:
38 36
39 37
40 38 .. code-block:: bash
41 39
42 40 $ python -m pip install ipykernel
43 41
44 42 $ python -m ipykernel install [--user] [--name <machine-readable-name>] [--display-name <"User Friendly Name">]
45 43
46 44 for more help see
47 45
48 46 .. code-block:: bash
49 47
50 48 $ python -m ipykernel install --help
51 49
52 50
53 51
54 52 .. seealso::
55 53
56 54 `Installing Jupyter <http://jupyter.readthedocs.io/en/latest/install.html>`__
57 55 The Notebook, nbconvert, and many other former pieces of IPython are now
58 56 part of Project Jupyter.
59 57
60 58
@@ -1,131 +1,132
1 1 Installing IPython
2 2 ==================
3 3
4 4
5 5 IPython requires Python 2.7 or β‰₯ 3.3.
6 6
7 7
8 8 Quick Install
9 9 -------------
10 10
11 11 With ``pip`` already installed :
12 12
13 13 .. code-block:: bash
14 14
15 15 $ pip install ipython
16 16
17 This should install IPython as well as all the other dependency required.
17 This installs IPython as well as its dependencies.
18 18
19 If you try to use IPython with notebooks or the Qt console, you should also install
20 ``jupyter``.
19 If you want to use IPython with notebooks or the Qt console, you should also
20 install Jupyter ``pip install jupyter``.
21 21
22 22
23 23
24 24 Overview
25 25 --------
26 26
27 27 This document describes in detail the steps required to install IPython.
28 28 For a few quick ways to get started with package managers or full Python distributions,
29 29 see `the install page <http://ipython.org/install.html>`_ of the IPython website.
30 30
31 31 Please let us know if you have problems installing IPython or any of its dependencies.
32 32
33 33 IPython and most dependencies should be installed via :command:`pip`.
34 34 In many scenarios, this is the simplest method of installing Python packages.
35 35 More information about :mod:`pip` can be found on
36 36 `its PyPI page <https://pip.pypa.io>`__.
37 37
38 38
39 39 More general information about installing Python packages can be found in
40 40 `Python's documentation <http://docs.python.org>`_.
41 41
42 42
43 43 Installing IPython itself
44 44 ~~~~~~~~~~~~~~~~~~~~~~~~~
45 45
46 46 IPython requires several dependencies to work correctly, it is not recommended
47 to install IPython and all it's dependencies manually as this can be quite long and trouble some.
48 You should likely use the python package manager ``pip``
47 to install IPython and all its dependencies manually as this can be quite long and troublesome.
48 You should use the python package manager ``pip``.
49 49
50 50 Installation using pip
51 51 ~~~~~~~~~~~~~~~~~~~~~~
52 52
53 Make sure you have the latest version of :mod:`pip` (Β the Python package
53 Make sure you have the latest version of :mod:`pip` (the Python package
54 54 manager) installed. If you do not, head to `Pip documentation
55 <https://pip.pypa.io/en/stable/installing/>`_ and install it first.
55 <https://pip.pypa.io/en/stable/installing/>`_ and install :mod:`pip` first.
56 56
57 57 The quickest way to get up and running with IPython is to install it with pip:
58 58
59 59 .. code-block:: bash
60 60
61 61 $ pip install ipython
62 62
63 63 That's it.
64 64
65 65
66 66 Installation from source
67 67 ~~~~~~~~~~~~~~~~~~~~~~~~
68 68
69 69 If you don't want to use :command:`pip`, or don't have it installed,
70 70 grab the latest stable tarball of IPython `from PyPI
71 71 <https://pypi.python.org/pypi/ipython>`__. Then do the following:
72 72
73 73 .. code-block:: bash
74 74
75 75 $ tar -xzf ipython.tar.gz
76 76 $ cd ipython
77 77 $ pip install .
78 78
79 79 Do not invoke ``setup.py`` directly as this can have undesirable consequences for further upgrades.
80 80 Try to also avoid any usage of ``easy_install`` that can have similar undesirable consequences.
81 81
82 82 If you are installing to a location (like ``/usr/local``) that requires higher
83 83 permissions, you may need to run the last command with :command:`sudo`. You can
84 also install in user specific location by using the ``--user`` flag in conjunction with pip
84 also install in user specific location by using the ``--user`` flag in conjunction with pip.
85 85
86 To can run IPython's test suite, use the :command:`iptest` command from outside of the IPython source tree:
86 To run IPython's test suite, use the :command:`iptest` command from outside of the IPython source tree:
87 87
88 88 .. code-block:: bash
89 89
90 90 $ iptest
91 91
92 92
93 93 Installing the development version
94 94 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95 95
96 96 It is also possible to install the development version of IPython from our
97 97 `Git <http://git-scm.com/>`_ source code repository. To do this you will
98 98 need to have Git installed on your system. Then do:
99 99
100 100 .. code-block:: bash
101 101
102 102 $ git clone https://github.com/ipython/ipython.git
103 103 $ cd ipython
104 104 $ pip install .
105 105
106 106 Some users want to be able to follow the development branch as it changes.
107 107 With :mod:`pip` installed, you can replace the last step by:
108 108
109 109 .. code-block:: bash
110 110
111 111 $ pip install -e .
112 112
113 113 This creates links in the right places and installs the command line script to
114 114 the appropriate location.
115 115
116 116 Then, if you want to update your IPython at any time, do:
117 117
118 118 .. code-block:: bash
119 119
120 120 $ git pull
121 121
122 122 .. _dependencies:
123 123
124 124 Dependencies
125 125 ~~~~~~~~~~~~
126 126
127 127 IPython relies on a number of other Python packages. Installing using a package
128 128 manager like pip or conda will ensure the necessary packages are installed. If
129 129 you install manually, it's up to you to make sure dependencies are installed.
130 They're not listed here, because they may change from release to release, and
131 depending on platform so a static list will inevitably get out of date.
130 They're not listed here since a static list would inevitably fall out of date as
131 dependencies may change from release to release and also vary depending on
132 the platform.
@@ -1,296 +1,296
1 1 .. _overview:
2 2
3 3 ========
4 4 Overview
5 5 ========
6 6
7 7 One of Python's most useful features is its interactive interpreter.
8 8 It allows for very fast testing of ideas without the overhead of
9 9 creating test files as is typical in most programming languages.
10 10 However, the interpreter supplied with the standard Python distribution
11 11 is somewhat limited for extended interactive use.
12 12
13 13 The goal of IPython is to create a comprehensive environment for
14 14 interactive and exploratory computing. To support this goal, IPython
15 15 has three main components:
16 16
17 17 * An enhanced interactive Python shell.
18 18
19 19 * A decoupled :ref:`two-process communication model <ipythonzmq>`, which
20 20 allows for multiple clients to connect to a computation kernel, most notably
21 21 the web-based notebook provided with `Jupyter <https://jupyter.org>`_.
22 22
23 23 * An architecture for interactive parallel computing now part of the
24 24 `ipyparallel` package.
25 25
26 26 All of IPython is open source (released under the revised BSD license).
27 27
28 28 Enhanced interactive Python shell
29 29 =================================
30 30
31 31 IPython's interactive shell (:command:`ipython`), has the following goals,
32 32 amongst others:
33 33
34 34 1. Provide an interactive shell superior to Python's default. IPython
35 35 has many features for tab-completion, object introspection, system shell
36 36 access, command history retrieval across sessions, and its own special
37 37 command system for adding functionality when working interactively. It
38 38 tries to be a very efficient environment both for Python code development
39 39 and for exploration of problems using Python objects (in situations like
40 40 data analysis).
41 41
42 42 2. Serve as an embeddable, ready to use interpreter for your own
43 43 programs. An interactive IPython shell can be started with a single call
44 44 from inside another program, providing access to the current namespace.
45 45 This can be very useful both for debugging purposes and for situations
46 46 where a blend of batch-processing and interactive exploration are needed.
47 47
48 48 3. Offer a flexible framework which can be used as the base
49 49 environment for working with other systems, with Python as the underlying
50 50 bridge language. Specifically scientific environments like Mathematica,
51 51 IDL and Matlab inspired its design, but similar ideas can be
52 52 useful in many fields.
53 53
54 54 4. Allow interactive testing of threaded graphical toolkits. IPython
55 55 has support for interactive, non-blocking control of GTK, Qt, WX, GLUT, and
56 56 OS X applications via special threading flags. The normal Python
57 57 shell can only do this for Tkinter applications.
58 58
59 59 Main features of the interactive shell
60 60 --------------------------------------
61 61
62 62 * Dynamic object introspection. One can access docstrings, function
63 63 definition prototypes, source code, source files and other details
64 64 of any object accessible to the interpreter with a single
65 65 keystroke (:samp:`?`, and using :samp:`??` provides additional detail).
66 66
67 67 * Searching through modules and namespaces with :samp:`*` wildcards, both
68 68 when using the :samp:`?` system and via the :samp:`%psearch` command.
69 69
70 70 * Completion in the local namespace, by typing :kbd:`TAB` at the prompt.
71 71 This works for keywords, modules, methods, variables and files in the
72 72 current directory. This is supported via the ``prompt_toolkit`` library.
73 73 Custom completers can be implemented easily for different purposes
74 74 (system commands, magic arguments etc.)
75 75
76 76 * Numbered input/output prompts with command history (persistent
77 77 across sessions and tied to each profile), full searching in this
78 78 history and caching of all input and output.
79 79
80 80 * User-extensible 'magic' commands. A set of commands prefixed with
81 81 :samp:`%` or :samp:`%%` is available for controlling IPython itself and provides
82 82 directory control, namespace information and many aliases to
83 83 common system shell commands.
84 84
85 85 * Alias facility for defining your own system aliases.
86 86
87 87 * Complete system shell access. Lines starting with :samp:`!` are passed
88 88 directly to the system shell, and using :samp:`!!` or :samp:`var = !cmd`
89 89 captures shell output into python variables for further use.
90 90
91 91 * The ability to expand python variables when calling the system shell. In a
92 92 shell command, any python variable prefixed with :samp:`$` is expanded. A
93 93 double :samp:`$$` allows passing a literal :samp:`$` to the shell (for access
94 94 to shell and environment variables like :envvar:`PATH`).
95 95
96 96 * Filesystem navigation, via a magic :samp:`%cd` command, along with a
97 97 persistent bookmark system (using :samp:`%bookmark`) for fast access to
98 98 frequently visited directories.
99 99
100 100 * A lightweight persistence framework via the :samp:`%store` command, which
101 101 allows you to save arbitrary Python variables. These get restored
102 102 when you run the :samp:`%store -r` command.
103 103
104 104 * Automatic indentation and highlighting of code as you type (through the
105 105 `prompt_toolkit` library).
106 106
107 107 * Macro system for quickly re-executing multiple lines of previous
108 108 input with a single name via the :samp:`%macro` command. Macros can be
109 109 stored persistently via :samp:`%store` and edited via :samp:`%edit`.
110 110
111 111 * Session logging (you can then later use these logs as code in your
112 112 programs). Logs can optionally timestamp all input, and also store
113 113 session output (marked as comments, so the log remains valid
114 114 Python source code).
115 115
116 116 * Session restoring: logs can be replayed to restore a previous
117 117 session to the state where you left it.
118 118
119 119 * Verbose and colored exception traceback printouts. Easier to parse
120 120 visually, and in verbose mode they produce a lot of useful
121 121 debugging information (basically a terminal version of the cgitb
122 122 module).
123 123
124 124 * Auto-parentheses via the :samp:`%autocall` command: callable objects can be
125 125 executed without parentheses: :samp:`sin 3` is automatically converted to
126 126 :samp:`sin(3)`
127 127
128 128 * Auto-quoting: using :samp:`,`, or :samp:`;` as the first character forces
129 129 auto-quoting of the rest of the line: :samp:`,my_function a b` becomes
130 130 automatically :samp:`my_function("a","b")`, while :samp:`;my_function a b`
131 131 becomes :samp:`my_function("a b")`.
132 132
133 133 * Extensible input syntax. You can define filters that pre-process
134 134 user input to simplify input in special situations. This allows
135 135 for example pasting multi-line code fragments which start with
136 136 :samp:`>>>` or :samp:`...` such as those from other python sessions or the
137 137 standard Python documentation.
138 138
139 139 * Flexible :ref:`configuration system <config_overview>`. It uses a
140 140 configuration file which allows permanent setting of all command-line
141 141 options, module loading, code and file execution. The system allows
142 142 recursive file inclusion, so you can have a base file with defaults and
143 143 layers which load other customizations for particular projects.
144 144
145 145 * Embeddable. You can call IPython as a python shell inside your own
146 146 python programs. This can be used both for debugging code or for
147 147 providing interactive abilities to your programs with knowledge
148 148 about the local namespaces (very useful in debugging and data
149 149 analysis situations).
150 150
151 151 * Easy debugger access. You can set IPython to call up an enhanced version of
152 152 the Python debugger (pdb) every time there is an uncaught exception. This
153 153 drops you inside the code which triggered the exception with all the data
154 154 live and it is possible to navigate the stack to rapidly isolate the source
155 155 of a bug. The :samp:`%run` magic command (with the :samp:`-d` option) can run
156 156 any script under pdb's control, automatically setting initial breakpoints for
157 157 you. This version of pdb has IPython-specific improvements, including
158 158 tab-completion and traceback coloring support. For even easier debugger
159 159 access, try :samp:`%debug` after seeing an exception.
160 160
161 161 * Profiler support. You can run single statements (similar to
162 162 :samp:`profile.run()`) or complete programs under the profiler's control.
163 163 While this is possible with standard cProfile or profile modules,
164 164 IPython wraps this functionality with magic commands (see :samp:`%prun`
165 165 and :samp:`%run -p`) convenient for rapid interactive work.
166 166
167 167 * Simple timing information. You can use the :samp:`%timeit` command to get
168 168 the execution time of a Python statement or expression. This machinery is
169 169 intelligent enough to do more repetitions for commands that finish very
170 170 quickly in order to get a better estimate of their running time.
171 171
172 172 .. sourcecode:: ipython
173 173
174 174 In [1]: %timeit 1+1
175 175 10000000 loops, best of 3: 25.5 ns per loop
176 176
177 177 In [2]: %timeit [math.sin(x) for x in range(5000)]
178 178 1000 loops, best of 3: 719 Β΅s per loop
179 179
180 180 ..
181 181
182 182 To get the timing information for more than one expression, use the
183 183 :samp:`%%timeit` cell magic command.
184 184
185 185
186 186 * Doctest support. The special :samp:`%doctest_mode` command toggles a mode
187 187 to use doctest-compatible prompts, so you can use IPython sessions as
188 188 doctest code. By default, IPython also allows you to paste existing
189 189 doctests, and strips out the leading :samp:`>>>` and :samp:`...` prompts in
190 190 them.
191 191
192 192 .. _ipythonzmq:
193 193
194 194 Decoupled two-process model
195 195 ==============================
196 196
197 197 IPython has abstracted and extended the notion of a traditional
198 198 *Read-Evaluate-Print Loop* (REPL) environment by decoupling the *evaluation*
199 199 into its own process. We call this process a **kernel**: it receives execution
200 200 instructions from clients and communicates the results back to them.
201 201
202 202 This decoupling allows us to have several clients connected to the same
203 203 kernel, and even allows clients and kernels to live on different machines.
204 204 With the exclusion of the traditional single process terminal-based IPython
205 205 (what you start if you run ``ipython`` without any subcommands), all
206 206 other IPython machinery uses this two-process model. Most of this is now part
207 207 of the `Jupyter` project, whis includes ``jupyter console``, ``jupyter
208 208 qtconsole``, and ``jupyter notebook``.
209 209
210 210 As an example, this means that when you start ``jupyter qtconsole``, you're
211 211 really starting two processes, a kernel and a Qt-based client can send
212 212 commands to and receive results from that kernel. If there is already a kernel
213 213 running that you want to connect to, you can pass the ``--existing`` flag
214 214 which will skip initiating a new kernel and connect to the most recent kernel,
215 215 instead. To connect to a specific kernel once you have several kernels
216 216 running, use the ``%connect_info`` magic to get the unique connection file,
217 217 which will be something like ``--existing kernel-19732.json`` but with
218 218 different numbers which correspond to the Process ID of the kernel.
219 219
220 220 You can read more about using `jupyter qtconsole
221 221 <http://jupyter.org/qtconsole/>`_, and
222 `ipython notebook <http://jupyter-notebook.readthedocs.io/en/latest/>`_. There
222 `jupyter notebook <http://jupyter-notebook.readthedocs.io/en/latest/>`_. There
223 223 is also a :ref:`message spec <messaging>` which documents the protocol for
224 224 communication between kernels
225 225 and clients.
226 226
227 227 .. seealso::
228 228
229 229 `Frontend/Kernel Model`_ example notebook
230 230
231 231
232 232 Interactive parallel computing
233 233 ==============================
234 234
235 235 .. note::
236 236
237 237 This functionality is optional and now part of the `ipyparallel
238 238 <http://ipyparallel.readthedocs.io/>`_ project.
239 239
240 240 Increasingly, parallel computer hardware, such as multicore CPUs, clusters and
241 241 supercomputers, is becoming ubiquitous. Over the last several years, we have
242 242 developed an architecture within IPython that allows such hardware to be used
243 243 quickly and easily from Python. Moreover, this architecture is designed to
244 244 support interactive and collaborative parallel computing.
245 245
246 246 The main features of this system are:
247 247
248 248 * Quickly parallelize Python code from an interactive Python/IPython session.
249 249
250 250 * A flexible and dynamic process model that be deployed on anything from
251 251 multicore workstations to supercomputers.
252 252
253 253 * An architecture that supports many different styles of parallelism, from
254 254 message passing to task farming. And all of these styles can be handled
255 255 interactively.
256 256
257 257 * Both blocking and fully asynchronous interfaces.
258 258
259 259 * High level APIs that enable many things to be parallelized in a few lines
260 260 of code.
261 261
262 262 * Write parallel code that will run unchanged on everything from multicore
263 263 workstations to supercomputers.
264 264
265 265 * Full integration with Message Passing libraries (MPI).
266 266
267 267 * Capabilities based security model with full encryption of network connections.
268 268
269 269 * Share live parallel jobs with other users securely. We call this
270 270 collaborative parallel computing.
271 271
272 272 * Dynamically load balanced task farming system.
273 273
274 274 * Robust error handling. Python exceptions raised in parallel execution are
275 275 gathered and presented to the top-level code.
276 276
277 277 For more information, see our :ref:`overview <parallel_index>` of using IPython
278 278 for parallel computing.
279 279
280 280 Portability and Python requirements
281 281 -----------------------------------
282 282
283 283 As of the 2.0 release, IPython works with Python 2.7 and 3.3 or above.
284 284 Version 1.0 additionally worked with Python 2.6 and 3.2.
285 285 Version 0.12 was the first version to fully support Python 3.
286 286
287 287 IPython is known to work on the following operating systems:
288 288
289 289 * Linux
290 290 * Most other Unix-like OSs (AIX, Solaris, BSD, etc.)
291 291 * Mac OS X
292 292 * Windows (CygWin, XP, Vista, etc.)
293 293
294 294 See :ref:`here <install_index>` for instructions on how to install IPython.
295 295
296 296 .. include:: links.txt
@@ -1,164 +1,165
1 1 ============
2 2 5.x Series
3 3 ============
4 4
5 5 IPython 5.0
6 6 ===========
7 7
8 8 Released June, 2016
9 9
10 10 IPython 5.0 now uses `prompt-toolkit` for the command line interface, thus
11 11 allowing real multi-line editing and syntactic coloration as you type.
12 12
13 13
14 14 When using IPython as a subprocess, like for emacs inferior-shell, IPython can
15 15 be started with --simple-prompt flag, which will bypass the prompt_toolkit
16 16 input layer. In this mode completion, prompt color and many other features are
17 17 disabled.
18 18
19 19 Backwards incompatible changes
20 20 ------------------------------
21 21
22 22
23 23 The `install_ext magic` function which was deprecated since 4.0 have now been deleted.
24 24 You can still distribute and install extension as packages on PyPI.
25 25
26 26 Update IPython event triggering to ensure callback registration and
27 27 unregistration only affects the set of callbacks the *next* time that event is
28 28 triggered. See :ghissue:`9447` and :ghpull:`9453`.
29 29
30 30 This is a change to the existing semantics, wherein one callback registering a
31 31 second callback when triggered for an event would previously be invoked for
32 32 that same event.
33 33
34 34 Integration with pydb has been removed since pydb development has been stopped
35 35 since 2012, and pydb is not installable from PyPI
36 36
37 37
38 38
39 39 Replacement of readline in TerminalInteractiveShell and PDB
40 40 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41 41
42 42 IPython 5.0 now uses ``prompt_toolkit``. The
43 43 ``IPython.terminal.interactiveshell.TerminalInteractiveShell`` now uses
44 44 ``prompt_toolkit``. It is an almost complete rewrite, so many settings have
45 45 thus changed or disappeared. The class keep the same name to avoid breaking
46 46 user configuration for the options which names is unchanged.
47 47
48 48 The usage of ``prompt_toolkit`` is accompanied by a complete removal of all
49 49 code, using ``readline``. A particular effect of not using `readline` anymore
50 50 is that `.inputrc` settings are note effective anymore. Options having similar
51 51 effects have likely been replaced by a configuration option on IPython itself
52 52 (e.g: vi input mode).
53 53
54 54 The `PromptManager` class have been removed, and the prompt machinery simplified.
55 55 See `TerminalInteractiveShell.prompts` configurable for how to setup your prompts.
56 56
57 57 .. note::
58 58
59 59 During developement and beta cycle, ``TerminalInteractiveShell`` was
60 60 temporarly moved to ``IPtyhon.terminal.ptshell``.
61 61
62 62
63 63 Most of the above remarks also affect `IPython.core.debugger.Pdb`, the `%debug`
64 64 and `%pdb` magic which do not use readline anymore either.
65 65
66 66 The color handling has been slightly changed and is now exposed
67 67 through, in particular the colors of prompts and as you type
68 68 highlighting can be affected by :
69 69 ``TerminalInteractiveShell.highlight_style``. With default
70 70 configuration the ``--colors`` flag and ``%colors`` magic behavior
71 71 should be mostly unchanged. See the `colors <termcolour>`_ section of
72 72 our documentation
73 73
74 74 Provisional Changes
75 75 -------------------
76 76
77 77 Provisional changes are in experimental functionality that may, or may not make
78 78 it to future version of IPython, and which API may change without warnings.
79 79 Activating these feature and using these API is at your own risk, and may have
80 80 security implication for your system, especially if used with the Jupyter notebook,
81 81
82 82 When running via the Jupyter notebook interfaces, or other compatible client,
83 83 you can enable rich documentation experimental functionality:
84 84
85 85 When the ``docrepr`` package is installed setting the boolean flag
86 86 ``InteractiveShell.sphinxify_docstring`` to ``True``, will process the various
87 87 object through sphinx before displaying them (see the ``docrepr`` package
88 88 documentation for more information.
89 89
90 90 You need to also enable the IPython pager display rich HTML representation
91 91 using the ``InteractiveShell.enable_html_pager`` boolean configuration option.
92 92 As usual you can set these configuration options globally in your configuration
93 93 files, alternatively you can turn them on dynamically using the following
94 94 snippet:
95 95
96 96 .. code-block:: python
97 97
98 98 ip = get_ipython()
99 99 ip.sphinxify_docstring = True
100 100 ip.enable_html_pager = True
101 101
102 102
103 103 You can test the effect of various combinations of the above configuration in
104 104 the Jupyter notebook, with things example like :
105 105
106 106 .. code-block:: ipython
107 107
108 108 import numpy as np
109 109 np.histogram?
110 110
111 111
112 112 This is part of an effort to make Documentation in Python richer and provide in
113 113 the long term if possible dynamic examples that can contain math, images,
114 114 widgets... As stated above this is nightly experimental feature with a lot of
115 115 (fun) problem to solve. We would be happy to get your feedback and expertise on
116 116 it.
117 117
118 118
119 119 Removed Feature
120 120 ---------------
121 121
122 122 - ``TerminalInteractiveShell.autoedit_syntax`` Has been broken for many years now
123 123 apparently. It has been removed.
124 124
125 125
126 126 Deprecated Features
127 127 -------------------
128 128
129 Some deprecated feature, don't forget to enable ``DeprecationWarning`` as error
130 of you are using IPython in Continuous Integration setup or in your testing in general:
129 Some deprecated features are listed in this section. Don't forget to enable
130 ``DeprecationWarning`` as an error if you are using IPython in a Continuous
131 Integration setup or in your testing in general:
131 132
132 133 .. code-block:: python
133 134
134 135 import warnings
135 136 warnings.filterwarnings('error', '.*', DeprecationWarning, module='yourmodule.*')
136 137
137 138
138 - ``hooks.fix_error_editor`` seem to be unused and is pending deprecation.
139 - ``hooks.fix_error_editor`` seems unused and is pending deprecation.
139 140 - `IPython/core/excolors.py:ExceptionColors` is deprecated.
140 - `IPython.core.InteractiveShell:write()` is deprecated, use `sys.stdout` instead.
141 - `IPython.core.InteractiveShell:write_err()` is deprecated, use `sys.stderr` instead.
142 - The `formatter` keyword argument to `Inspector.info` in `IPython.core.oinspec` has now no effects.
143 - The `global_ns` keyword argument of IPython Embed was deprecated, and will now have no effect. Use `module` keyword argument instead.
141 - `IPython.core.InteractiveShell:write()` is deprecated; use `sys.stdout` instead.
142 - `IPython.core.InteractiveShell:write_err()` is deprecated; use `sys.stderr` instead.
143 - The `formatter` keyword argument to `Inspector.info` in `IPython.core.oinspec` has no effect.
144 - The `global_ns` keyword argument of IPython Embed was deprecated, and has no effect. Use `module` keyword argument instead.
144 145
145 146
146 147 Known Issues:
147 148 -------------
148 149
149 150 - ``<Esc>`` Key does not dismiss the completer and does not clear the current
150 151 buffer. This is an on purpose modification due to current technical
151 152 limitation. Cf :ghpull:`9572`. Escape the control character which is used
152 153 for other shortcut, and there is no practical way to distinguish. Use Ctr-G
153 154 or Ctrl-C as an alternative.
154 155
155 156 - Cannot use ``Shift-Enter`` and ``Ctrl-Enter`` to submit code in terminal. cf
156 157 :ghissue:`9587` and :ghissue:`9401`. In terminal there is no practical way to
157 158 distinguish these key sequences from a normal new line return.
158 159
159 160 - ``PageUp`` and ``pageDown`` do not move through completion menu.
160 161
161 162 - Color styles might not adapt to terminal emulator themes. This will need new
162 163 version of Pygments to be released, and can be mitigated with custom themes.
163 164
164 165
General Comments 0
You need to be logged in to leave comments. Login now