##// END OF EJS Templates
Merge pull request #3908 from minrk/whatsnew-nbconvert...
Paul Ivanov -
r11997:3e1b96f4 merge
parent child Browse files
Show More
@@ -1,295 +1,301 b''
1 1 ============
2 2 1.0 Series
3 3 ============
4 4
5 5 Release 1.0.0: An Afternoon Hack
6 6 ================================
7 7
8 8
9 9 IPython 1.0 requires Python β‰₯ 2.6.5 or β‰₯ 3.2.1.
10 10 It does not support Python 3.0, 3.1, or 2.5.
11 11
12 12 This is a big release. The principal milestone is the addition of :mod:`IPython.nbconvert`,
13 13 but there has been a great deal of work improving all parts of IPython as well.
14 14
15 15 The previous version (0.13) was released on June 30, 2012,
16 16 and in this development cycle we had:
17 17
18 18 - ~12 months of work.
19 19 - ~700 pull requests merged.
20 20 - ~600 issues closed (non-pull requests).
21 21 - contributions from ~150 authors.
22 22 - ~4000 commits.
23 23
24 24 The amount of work included in this release is so large that we can only cover
25 25 here the main highlights; please see our :ref:`detailed release statistics
26 26 <issues_list_100>` for links to every issue and pull request closed on GitHub
27 27 as well as a full list of individual contributors.
28 28 It includes
29 29
30 30 Reorganization
31 31 --------------
32 32
33 33 There have been two major reorganizations in IPython 1.0:
34 34
35 35 - Added :mod:`IPython.kernel` for all kernel-related code.
36 36 This means that :mod:`IPython.zmq` has been removed,
37 37 and much of it is now in :mod:`IPython.kernel.zmq`,
38 38 some of it being in the top-level :mod:`IPython.kernel`.
39 39 - We have removed the `frontend` subpackage,
40 40 as it caused unnecessary depth. So what was :mod:`IPython.frontend.qt`
41 41 is now :mod:`IPython.qt`, and so on. The one difference is that
42 42 the notebook has been further flattened, so that
43 43 :mod:`IPython.frontend.html.notebook` is now just `IPython.html`.
44 44 There is a shim module, so :mod:`IPython.frontend` is still
45 45 importable in 1.0, but there will be a warning.
46 46 - The IPython sphinx directives are now installed in :mod:`IPython.sphinx`,
47 47 so they can be imported by other projects.
48 48
49 49
50 50 Public APIs
51 51 -----------
52 52
53 53 For the first time since 0.10 (sorry, everyone),
54 54 there is an official public API for starting IPython:
55 55
56 56 .. sourcecode:: python
57 57
58 58 from IPython import start_ipython
59 59 start_ipython()
60 60
61 61 This is what packages should use that start their own IPython session,
62 62 but don't actually want embedded IPython (most cases).
63 63 :func:`IPython.embed()` is used for embedding IPython into the calling namespace,
64 64 similar to calling :func:`Pdb.set_trace`, whereas :func:`start_ipython`
65 65 will start a plain IPython session, loading config and startup files as normal.
66 66
67 67 We also have added:
68 68
69 69 .. sourcecode:: python
70 70
71 71 from IPython import get_ipython
72 72
73 73
74 74 Which is a *library* function for getting the current IPython instance,
75 75 and will return ``None`` if no IPython instance is running.
76 76 This is the official way to check whether your code is called from inside an IPython session.
77 77 If you want to check for IPython without unnecessarily importing IPython,
78 78 use this function:
79 79
80 80 .. sourcecode:: python
81 81
82 82 def get_ipython():
83 83 """return IPython instance if there is one, None otherwise"""
84 84 import sys
85 85 if "IPython" in sys.modules:
86 86 import IPython
87 87 return IPython.get_ipython()
88 88
89 89 Core
90 90 ----
91 91
92 92 - The input transformation framework has been reworked. This fixes some corner
93 93 cases, and adds more flexibility for projects which use IPython, like SymPy &
94 94 SAGE. For more details, see :doc:`/config/inputtransforms`.
95 95 - Exception types can now be displayed with a custom traceback, by defining a
96 96 ``_render_traceback_()`` method which returns a list of strings, each
97 97 containing one line of the traceback.
98 98 - A new command, ``ipython history trim`` can be used to delete everything but
99 99 the last 1000 entries in the history database.
100 100 - ``__file__`` is defined in both config files at load time,
101 101 and ``.ipy`` files executed with ``%run``.
102 102 - ``%logstart`` and ``%logappend`` are no longer broken.
103 103 - Add glob expansion for ``%run``, e.g. ``%run -g script.py *.txt``.
104 104 - Expand variables (``$foo``) in Cell Magic argument line.
105 105 - By default, :command:`iptest` will exclude various slow tests.
106 106 All tests can be run with :command:`iptest --all`.
107 107 - SQLite history can be disabled in the various cases that it does not behave well.
108 108 - ``%edit`` works on interactively defined variables.
109 109 - editor hooks have been restored from quarantine, enabling TextMate as editor,
110 110 etc.
111 111 - The env variable PYTHONSTARTUP is respected by IPython.
112 112 - A ``%matplotlib`` magic is added, which is like the old ``%pylab`` magic,
113 113 but it does not import anything to the interactive namespace.
114 114 It is recommended that users switch to ``%matplotlib`` and explicit imports.
115 115
116 116
117 117 Backwards incompatible changes
118 118 ******************************
119 119
120 120 - Calling :meth:`InteractiveShell.prefilter` will no longer perform static
121 121 transformations - the processing of escaped commands such as ``%magic`` and
122 122 ``!system``, and stripping input prompts from code blocks. This functionality
123 123 was duplicated in :mod:`IPython.core.inputsplitter`, and the latter version
124 124 was already what IPython relied on. A new API to transform input will be ready
125 125 before release.
126 126 - Functions from :mod:`IPython.lib.inputhook` to control integration with GUI
127 127 event loops are no longer exposed in the top level of :mod:`IPython.lib`.
128 128 Code calling these should make sure to import them from
129 129 :mod:`IPython.lib.inputhook`.
130 130 - For all kernel managers, the ``sub_channel`` attribute has been renamed to
131 131 ``iopub_channel``.
132 132 - Users on Python versions before 2.6.6, 2.7.1 or 3.2 will now need to call
133 133 :func:`IPython.utils.doctestreload.doctest_reload` to make doctests run
134 134 correctly inside IPython. Python releases since those versions are unaffected.
135 135 For details, see :ghpull:`3068` and `Python issue 8048 <http://bugs.python.org/issue8048>`_.
136 136 - The ``InteractiveShell.cache_main_mod()`` method has been removed, and
137 137 :meth:`~IPython.core.interactiveshell.InteractiveShell.new_main_mod` has a
138 138 different signature, expecting a filename where earlier versions expected
139 139 a namespace. See :ghpull:`3555` for details.
140 140 - The short-lived plugin system has been removed. Extensions are the way to go.
141 141
142 142
143 143 .. _nbconvert1:
144 144
145 145 NbConvert
146 146 ---------
147 147
148 148 The major milestone for IPython 1.0 is the addition of :mod:`IPython.nbconvert` - tools for converting
149 149 IPython notebooks to various other formats.
150 150
151 151 .. warning::
152 152
153 153 nbconvert is Ξ±-level preview code in 1.0
154 154
155 155 To use nbconvert to convert various file formats::
156 156
157 ipython nbconvert --format full_html *.ipynb
157 ipython nbconvert --to html *.ipynb
158 158
159 159 See ``ipython nbconvert --help`` for more information.
160 160 nbconvert depends on `pandoc`_ for many of the translations to and from various formats.
161 161
162 .. seealso::
163
164 :ref:`nbconvert`
165
162 166 .. _pandoc: http://johnmacfarlane.net/pandoc/
163 167
164 168 Notebook
165 169 --------
166 170
167 171 Major changes to the IPython Notebook in 1.0:
168 172
169 173 - The notebook is now autosaved, by default at an interval of two minutes.
170 174 When you press 'save' or Ctrl-S, a *checkpoint* is made, in a hidden folder.
171 175 This checkpoint can be restored, so that the autosave model is strictly safer
172 176 than traditional save. If you change nothing about your save habits,
173 177 you will always have a checkpoint that you have written,
174 178 and an autosaved file that is kept up to date.
179 - The notebook supports :func:`raw_input` / :func:`input`, and thus also ``%debug``,
180 and many other Python calls that expect user input.
175 181 - You can load custom javascript and CSS in the notebook by editing the files
176 182 :file:`$(ipython locate profile)/static/custom/custom.{js,css}`.
177 183 - Add ``%%html``, ``%%svg``, ``%%javascript``, and ``%%latex`` cell magics
178 184 for writing raw output in notebook cells.
179 185 - add a redirect handler and anchors on heading cells, so you can link
180 186 across notebooks, directly to heading cells in other notebooks.
181 187 - Images support width and height metadata,
182 188 and thereby 2x scaling (retina support).
183 189 - ``_repr_foo_`` methods can return a tuple of (data, metadata),
184 190 where metadata is a dict containing metadata about the displayed object.
185 191 This is used to set size, etc. for retina graphics. To enable retina matplotlib figures,
186 simply set ``InlineBackend.figure_format = 'retina'`` for 2x PNG figures.
192 simply set ``InlineBackend.figure_format = 'retina'`` for 2x PNG figures,
193 in your :ref:`IPython config file <config_overview>` or via the ``%config`` magic.
187 194 - Add display.FileLink and FileLinks for quickly displaying HTML links to local files.
188 195 - Cells have metadata, which can be edited via cell toolbars.
189 196 This metadata can be used by external code (e.g. reveal.js or exporters),
190 197 when examining the notebook.
191 198 - Fix an issue parsing LaTeX in markdown cells, which required users to type ``\\\``,
192 199 instead of ``\\``.
193 200 - Notebook templates are rendered with Jinja instead of Tornado.
194 201 - ``%%file`` has been renamed ``%%writefile`` (``%%file``) is deprecated.
195 202 - ANSI (and VT100) color parsing has been improved in both performance and
196 203 supported values.
197 204 - The static files path can be found as ``IPython.html.DEFAULT_STATIC_FILES_PATH``,
198 205 which may be changed by package managers.
199 - The notebook supports :func:`raw_input`, and thus also ``%debug``.
200 206 - IPython's CSS is installed in :file:`static/css/style.min.css`
201 207 (all style, including bootstrap), and :file:`static/css/ipython.min.css`,
202 208 which only has IPython's own CSS. The latter file should be useful for embedding
203 209 IPython notebooks in other pages, blogs, etc.
204 210 - The Print View has been removed. Users are encouraged to test :ref:`ipython
205 211 nbconvert <nbconvert1>` to generate a static view.
206 212
207 213 Javascript Components
208 214 *********************
209 215
210 216 The javascript components used in the notebook have been updated significantly.
211 217
212 218 - updates to jQuery (2.0) and jQueryUI (1.10)
213 219 - Update CodeMirror to 3.14
214 220 - Twitter Bootstrap (2.3) for layout
215 221 - Font-Awesome (3.1) for icons
216 222 - highlight.js (7.3) for syntax highlighting
217 223 - marked (0.2.8) for markdown rendering
218 224 - require.js (2.1) for loading javascript
219 225
220 226 Some relevant changes that are results of this:
221 227
222 228 - Markdown cells now support GitHub-flavored Markdown (GFM),
223 229 which includes ``\`\`\`python`` code blocks and tables.
224 230 - Notebook UI behaves better on more screen sizes.
225 231 - Various code cell input issues have been fixed.
226 232
227 233
228 234 Kernel
229 235 ------
230 236
231 237 The kernel code has been substantially reorganized.
232 238
233 239 New features in the kernel:
234 240
235 241 - Kernels support ZeroMQ IPC transport, not just TCP
236 242 - The message protocol has added a top-level metadata field,
237 243 used for information about messages.
238 244 - Add a `data_pub` message that functions much like `display_pub`,
239 245 but publishes raw (usually pickled) data, rather than representations.
240 246 - Ensure that ``sys.stdout.encoding`` is defined in Kernels.
241 247 - Stdout from forked subprocesses should be forwarded to frontends (instead of crashing).
242 248
243 249 IPEP 13
244 250 *******
245 251
246 252 The KernelManager has been split into a :class:`~.KernelManager` and a :class:`~.KernelClient`.
247 253 The Manager owns a kernel and starts / signals / restarts it. There is always zero or one
248 254 KernelManager per Kernel. Clients communicate with Kernels via zmq channels,
249 255 and there can be zero-to-many Clients connected to a Kernel at any given time.
250 256
251 257 The KernelManager now automatically restarts the kernel when it dies,
252 258 rather than requiring user input at the notebook or QtConsole UI
253 259 (which may or may not exist at restart time).
254 260
255 261 In-process kernels
256 262 ******************
257 263
258 264 The Python-language frontends, particularly the Qt console, may now communicate
259 265 with in-process kernels, in addition to the traditional out-of-process
260 266 kernels. An in-process kernel permits direct access to the kernel namespace,
261 267 which is necessary in some applications. It should be understood, however, that
262 268 the in-process kernel is not robust to bad user input and will block the main
263 269 (GUI) thread while executing. Developers must decide on a case-by-case basis
264 270 whether this tradeoff is appropriate for their application.
265 271
266 272
267 273
268 274 Parallel
269 275 --------
270 276
271 277 IPython.parallel has had some refactoring as well.
272 278 There are many improvements and fixes, but these are the major changes:
273 279
274 280 - Connections have been simplified. All ports and the serialization in use
275 281 are written to the connection file, rather than the initial two-stage system.
276 282 - Serialization has been rewritten, fixing many bugs and dramatically improving
277 283 performance serializing large containers.
278 284 - Load-balancing scheduler performance with large numbers of tasks has been dramatically improved.
279 285 - There should be fewer (hopefully zero) false-positives for engine failures.
280 286 - Increased compatibility with various use cases that produced serialization / argument errors
281 287 with map, etc.
282 288 - The controller can attempt to resume operation if it has crashed,
283 289 by passing ``ipcontroller --restore``.
284 290 - Engines can monitor the Hub heartbeat, and shutdown if the Hub disappears for too long.
285 291 - add HTCondor support in launchers
286 292
287 293
288 294 QtConsole
289 295 ---------
290 296
291 297 Various fixes, including improved performance with lots of text output,
292 298 and better drag and drop support.
293 299 The initial window size of the qtconsole is now configurable via ``IPythonWidget.width``
294 300 and ``IPythonWidget.height``.
295 301
General Comments 0
You need to be logged in to leave comments. Login now