##// END OF EJS Templates
Backport PR #5489: Fix required Python versions...
Thomas Kluyver -
Show More
@@ -1,324 +1,324 b''
1 1 ============
2 2 2.0 Series
3 3 ============
4 4
5 5 Release 2.0.0
6 6 =============
7 7
8 8 April, 2014
9 9
10 IPython 2.0 requires Python β‰₯ 2.7.2 or β‰₯ 3.2.1.
11 It does not support Python 3.0, 3.1, 2.5, or 2.6.
10 IPython 2.0 requires Python β‰₯ 2.7.2 or β‰₯ 3.3.0.
11 It does not support Python 3.0, 3.1, 3.2, 2.5, or 2.6.
12 12
13 13 The principal milestones of 2.0 are:
14 14
15 15 - interactive widgets for the notebook
16 16 - directory navigation in the notebook dashboard
17 17 - persistent URLs for notebooks
18 18 - a new modal user interface in the notebook
19 19 - a security model for notebooks
20 20
21 21 Contribution summary since IPython 1.0 in August, 2013:
22 22
23 23 - ~8 months of work
24 24 - ~650 pull requests merged
25 25 - ~400 issues closed (non-pull requests)
26 26 - contributions from ~100 authors
27 27 - ~4000 commits
28 28
29 29 The amount of work included in this release is so large that we can only cover
30 30 here the main highlights; please see our :ref:`detailed release statistics
31 31 <issues_list_200>` for links to every issue and pull request closed on GitHub
32 32 as well as a full list of individual contributors.
33 33
34 34 New stuff in the IPython notebook
35 35 ---------------------------------
36 36
37 37 Directory navigation
38 38 ********************
39 39
40 40 .. image:: /_images/2.0/treeview.png
41 41 :width: 392px
42 42 :alt: Directory navigation
43 43 :align: center
44 44
45 45 The IPython notebook dashboard allows navigation into subdirectories.
46 46 URLs are persistent based on the notebook's path and name,
47 47 so no more random UUID URLs.
48 48
49 49 Serving local files no longer needs the ``files/`` prefix.
50 50 Relative links across notebooks and other files should work just as if notebooks were regular HTML files.
51 51
52 52 Interactive widgets
53 53 *******************
54 54
55 55 .. image:: /_images/2.0/widgets.png
56 56 :width: 392px
57 57 :alt: Interactive widgets
58 58 :align: center
59 59
60 60 IPython 2.0 adds :mod:`IPython.html.widgets`, for manipulating
61 61 Python objects in the kernel with GUI controls in the notebook.
62 62 IPython comes with a few built-in widgets for simple data types,
63 63 and an API designed for developers to build more complex widgets.
64 64 See the `widget docs`_ for more information.
65 65
66 66 .. _widget docs: http://nbviewer.ipython.org/github/ipython/ipython/blob/2.x/examples/Interactive%20Widgets/Index.ipynb
67 67
68 68
69 69 Modal user interface
70 70 ********************
71 71
72 72 The notebook has added separate Edit and Command modes,
73 73 allowing easier keyboard commands and making keyboard shortcut customization possible.
74 74 See the new `User Interface notebook`_ for more information.
75 75
76 76 .. _User Interface Notebook: http://nbviewer.ipython.org/github/ipython/ipython/blob/2.x/examples/Notebook/User%20Interface.ipynb
77 77
78 78
79 79 You can familiarize yourself with the updated notebook user interface, including an
80 80 explanation of Edit and Command modes, by going through the short guided tour
81 81 which can be started from the Help menu.
82 82
83 83 .. image:: /_images/2.0/user-interface.png
84 84 :width: 392px
85 85 :alt: Interface tour
86 86 :align: center
87 87
88 88
89 89 Security
90 90 ********
91 91
92 92 2.0 introduces a :ref:`security model <notebook_security>` for notebooks,
93 93 to prevent untrusted code from executing on users' behalf when notebooks open.
94 94 A quick summary of the model:
95 95
96 96 - Trust is determined by :ref:`signing notebooks<signing_notebooks>`.
97 97 - Untrusted HTML output is sanitized.
98 98 - Untrusted Javascript is never executed.
99 99 - HTML and Javascript in Markdown are never trusted.
100 100
101 101 Dashboard "Running" tab
102 102 ***********************
103 103
104 104 .. image:: /_images/2.0/running-crop.png
105 105 :width: 392px
106 106 :alt: Running tab
107 107 :align: center
108 108
109 109 The dashboard now has a "Running" tab which shows all of the running notebooks.
110 110
111 111 Single codebase Python 3 support
112 112 --------------------------------
113 113
114 114 IPython previously supported Python 3 by running 2to3 during setup. We
115 115 have now switched to a single codebase which runs natively on Python 2.7
116 116 and 3.3.
117 117
118 118 For notes on how to maintain this, see :doc:`/development/pycompat`.
119 119
120 120 Selecting matplotlib figure formats
121 121 -----------------------------------
122 122
123 123 Deprecate single-format ``InlineBackend.figure_format``
124 124 configurable in favor of ``InlineBackend.figure_formats``,
125 125 which is a set, supporting multiple simultaneous figure formats (e.g. png, pdf).
126 126
127 127 This is available at runtime with the new API function :func:`IPython.display.set_matplotlib_formats`.
128 128
129 129 clear_output changes
130 130 --------------------
131 131
132 132 * There is no longer a 500ms delay when calling ``clear_output``.
133 133 * The ability to clear stderr and stdout individually was removed.
134 134 * A new ``wait`` flag that prevents ``clear_output`` from being executed until new
135 135 output is available. This eliminates animation flickering by allowing the
136 136 user to double buffer the output.
137 137 * The output div height is remembered when the ``wait=True`` flag is used.
138 138
139 139 Extending configurable containers
140 140 ---------------------------------
141 141
142 142 Some configurable traits are containers (list, dict, set)
143 143 Config objects now support calling ``extend``, ``update``, ``insert``, etc.
144 144 on traits in config files, which will ultimately result in calling
145 145 those methods on the original object.
146 146
147 147 The effect being that you can now add to containers without having to copy/paste
148 148 the initial value::
149 149
150 150 c = get_config()
151 151 c.InlineBackend.rc.update({ 'figure.figsize' : (6, 4) })
152 152
153 153 Changes to hidden namespace on startup
154 154 --------------------------------------
155 155
156 156 Previously, all names declared in code run at startup
157 157 (startup files, ``ipython -i script.py``, etc.)
158 158 were added to the hidden namespace, which hides the names from tools like ``%whos``.
159 159 There are two changes to this behavior:
160 160
161 161 1. Scripts run on the command-line ``ipython -i script.py``now behave the same as if they were
162 162 passed to ``%run``, so their variables are never hidden.
163 163 2. A boolean config flag ``InteractiveShellApp.hide_initial_ns`` has been added to optionally
164 164 disable the hidden behavior altogether. The default behavior is unchanged.
165 165
166 166 Using dill to expand serialization support
167 167 ------------------------------------------
168 168
169 169 adds :func:`~IPython.utils.pickleutil.use_dill` for allowing
170 170 dill to extend serialization support in :mod:`IPython.parallel` (closures, etc.).
171 171 Also adds :meth:`DirectView.use_dill` convenience method for enabling dill
172 172 locally and on all engines with one call.
173 173
174 174 New IPython console lexer
175 175 -------------------------
176 176
177 177 The IPython console lexer has been rewritten and now supports tracebacks
178 178 and customized input/output prompts. See the :ref:`new lexer docs <console_lexer>`
179 179 for details.
180 180
181 181 DisplayFormatter changes
182 182 ------------------------
183 183
184 184 There was no official way to query or remove callbacks in the Formatter API.
185 185 To remedy this, the following methods are added to :class:`BaseFormatter`:
186 186
187 187 - ``lookup(instance)`` - return appropriate callback or a given object
188 188 - ``lookup_by_type(type_or_str)`` - return appropriate callback for a given type or ``'mod.name'`` type string
189 189 - ``pop(type_or_str)`` - remove a type (by type or string).
190 190 Pass a second argument to avoid KeyError (like dict).
191 191
192 192 All of the above methods raise a KeyError if no match is found.
193 193
194 194 And the following methods are changed:
195 195
196 196 - ``for_type(type_or_str)`` - behaves the same as before, only adding support for ``'mod.name'``
197 197 type strings in addition to plain types. This removes the need for ``for_type_by_name()``,
198 198 but it remains for backward compatibility.
199 199
200 200 Formatters can now raise NotImplementedError in addition to returning None
201 201 to indicate that they cannot format a given object.
202 202
203 203 Exceptions and Warnings
204 204 ***********************
205 205
206 206 Exceptions are no longer silenced when formatters fail.
207 207 Instead, these are turned into FormatterWarnings.
208 208 A FormatterWarning will also be issued if a formatter returns data of an invalid type
209 209 (e.g. an integer for 'image/png').
210 210
211 211
212 212 Other changes
213 213 -------------
214 214
215 215 * `%%capture` cell magic now captures the rich display output, not just
216 216 stdout/stderr
217 217
218 218 * In notebook, Showing tooltip on tab has been disables to avoid conflict with
219 219 completion, Shift-Tab could still be used to invoke tooltip when inside
220 220 function signature and/or on selection.
221 221
222 222 * ``object_info_request`` as been replaced by ``object_info`` for consistency in the javascript API.
223 223 ``object_info`` as a simpler interface to register callback that is incompatible with ``object_info_request``.
224 224
225 225 * Previous versions of IPython on Linux would use the XDG config directory,
226 226 creating :file:`~/.config/ipython` by default. We have decided to go
227 227 back to :file:`~/.ipython` for consistency among systems. IPython will
228 228 issue a warning if it finds the XDG location, and will move it to the new
229 229 location if there isn't already a directory there.
230 230
231 231 * Equations, images and tables are now centered in Markdown cells.
232 232 * Multiline equations are now centered in output areas; single line equations
233 233 remain left justified.
234 234
235 235 * IPython config objects can be loaded from and serialized to JSON.
236 236 JSON config file have the same base name as their ``.py`` counterpart,
237 237 and will be loaded with higher priority if found.
238 238
239 239 * bash completion updated with support for all ipython subcommands and flags, including nbconvert
240 240
241 241 * ``ipython history trim``: added ``--keep=<N>`` as an alias for the more verbose
242 242 ``--HistoryTrim.keep=<N>``
243 243 * new ``ipython history clear`` subcommand, which is the same as the newly supported
244 244 ``ipython history trim --keep=0``
245 245
246 246 * You can now run notebooks in an interactive session via ``%run notebook.ipynb``.
247 247
248 248 * Print preview is back in the notebook menus, along with options to
249 249 download the open notebook in various formats. This is powered by
250 250 nbconvert.
251 251
252 252 * :exc:`~IPython.nbconvert.utils.pandoc.PandocMissing` exceptions will be
253 253 raised if Pandoc is unavailable, and warnings will be printed if the version
254 254 found is too old. The recommended Pandoc version for use with nbconvert is
255 255 1.12.1.
256 256
257 257 * The InlineBackend.figure_format now supports JPEG output if PIL/Pillow is available.
258 258
259 259 * Input transformers (see :doc:`/config/inputtransforms`) may now raise
260 260 :exc:`SyntaxError` if they determine that input is invalid. The input
261 261 transformation machinery in IPython will handle displaying the exception to
262 262 the user and resetting state.
263 263
264 264 * Calling ``container.show()`` on javascript display is deprecated and will
265 265 trigger errors on future IPython notebook versions. ``container`` now show
266 266 itself as soon as non-empty
267 267
268 268 * Added ``InlineBackend.print_figure_kwargs`` to allow passing keyword arguments
269 269 to matplotlib's ``Canvas.print_figure``. This can be used to change the value of
270 270 ``bbox_inches``, which is 'tight' by default, or set the quality of JPEG figures.
271 271
272 272 * A new callback system has been introduced. For details, see :doc:`/config/callbacks`.
273 273
274 274 * jQuery and require.js are loaded from CDNs in the default HTML template,
275 275 so javascript is available in static HTML export (e.g. nbviewer).
276 276
277 277 Backwards incompatible changes
278 278 ------------------------------
279 279
280 280 * Python 2.6 and 3.2 are no longer supported: the minimum required
281 281 Python versions are now 2.7 and 3.3.
282 282 * The Transformer classes have been renamed to Preprocessor in nbconvert and
283 283 their `call` methods for them have been renamed to `preprocess`.
284 284 * The `call` methods of nbconvert post-processsors have been renamed to
285 285 `postprocess`.
286 286
287 287 * The module ``IPython.core.fakemodule`` has been removed.
288 288
289 289 * The alias system has been reimplemented to use magic functions. There should be little
290 290 visible difference while automagics are enabled, as they are by default, but parts of the
291 291 :class:`~IPython.core.alias.AliasManager` API have been removed.
292 292
293 293 * We fixed an issue with switching between matplotlib inline and GUI backends,
294 294 but the fix requires matplotlib 1.1 or newer. So from now on, we consider
295 295 matplotlib 1.1 to be the minimally supported version for IPython. Older
296 296 versions for the most part will work, but we make no guarantees about it.
297 297
298 298 * The :command:`pycolor` command has been removed. We recommend the much more capable
299 299 :command:`pygmentize` command from the `Pygments <http://pygments.org/>`_ project.
300 300 If you need to keep the exact output of :command:`pycolor`, you can still use
301 301 ``python -m IPython.utils.PyColorize foo.py``.
302 302
303 303 * :mod:`IPython.lib.irunner` and its command-line entry point have been removed.
304 304 It had fallen out of use long ago.
305 305
306 306 * The ``input_prefilter`` hook has been removed, as it was never
307 307 actually used by the code. The input transformer system offers much
308 308 more powerful APIs to work with input code. See
309 309 :doc:`/config/inputtransforms` for details.
310 310
311 311 * :class:`IPython.core.inputsplitter.IPythonInputSplitter` no longer has a method
312 312 ``source_raw_reset()``, but gains :meth:`~IPython.core.inputsplitter.IPythonInputSplitter.raw_reset`
313 313 instead. Use of ``source_raw_reset`` can be replaced with::
314 314
315 315 raw = isp.source_raw
316 316 transformed = isp.source_reset()
317 317
318 318 * The Azure notebook manager was removed as it was no longer compatible with the notebook storage scheme
319 319
320 320 * Simplifying configurable URLs
321 321
322 322 - base_project_url is renamed to base_url (base_project_url is kept as a deprecated alias, for now)
323 323 - base_kernel_url configurable is removed (use base_url)
324 324 - websocket_url configurable is removed (use base_url)
General Comments 0
You need to be logged in to leave comments. Login now