##// END OF EJS Templates
Update whatsnew doc from PR entries
Thomas Kluyver -
Show More
@@ -1,221 +1,277
1 1 =====================
2 2 Development version
3 3 =====================
4 4
5 5 This document describes in-flight development work.
6 6
7 7 .. warning::
8 8
9 9 Please do not edit this file by hand (doing so will likely cause merge
10 10 conflicts for other Pull Requests). Instead, create a new file in the
11 11 `docs/source/whatsnew/pr` folder
12 12
13 13 Using different kernels
14 14 -----------------------
15 15
16 16 .. image:: ../_images/kernel_selector_screenshot.png
17 17 :alt: Screenshot of notebook kernel selection dropdown menu
18 18 :align: center
19 19
20 20 You can now choose a kernel for a notebook within the user interface, rather
21 21 than starting up a separate notebook server for each kernel you want to use. The
22 22 syntax highlighting adapts to match the language you're working in.
23 23
24 24 Information about the kernel is stored in the notebook file, so when you open a
25 25 notebook, it will automatically start the correct kernel.
26 26
27 27 It is also easier to use the Qt console and the terminal console with other
28 28 kernels, using the --kernel flag::
29 29
30 30 ipython qtconsole --kernel bash
31 31 ipython console --kernel bash
32 32
33 33 # To list available kernels
34 34 ipython kernelspec list
35 35
36 36 Kernel authors should see :ref:`kernelspecs` for how to register their kernels
37 37 with IPython so that these mechanisms work.
38 38
39 39 Typing unicode identifiers
40 40 --------------------------
41 41
42 42 .. image:: /_images/unicode_completion.png
43 43
44 44 Complex expressions can be much cleaner when written with a wider choice of
45 45 characters. Python 3 allows unicode identifiers, and IPython 3 makes it easier
46 46 to type those, using a feature from Julia. Type a backslash followed by a LaTeX
47 47 style short name, such as ``\alpha``. Press tab, and it will turn into α.
48 48
49 49 Other new features
50 50 ------------------
51 51
52 52 * :class:`~.TextWidget` and :class:`~.TextareaWidget` objects now include a
53 53 ``placeholder`` attribute, for displaying placeholder text before the
54 54 user has typed anything.
55 55
56 56 * The :magic:`load` magic can now find the source for objects in the user namespace.
57 57 To enable searching the namespace, use the ``-n`` option.
58 58
59 59 .. sourcecode:: ipython
60 60
61 61 In [1]: %load -n my_module.some_function
62 62
63 63 * :class:`~.DirectView` objects have a new :meth:`~.DirectView.use_cloudpickle`
64 64 method, which works like ``view.use_dill()``, but causes the ``cloudpickle``
65 65 module from PiCloud's `cloud`__ library to be used rather than dill or the
66 66 builtin pickle module.
67 67
68 68 __ https://pypi.python.org/pypi/cloud
69 69
70 70 * Added a .ipynb exporter to nbconvert. It can be used by passing `--to notebook`
71 71 as a commandline argument to nbconvert.
72 72
73 73 * New nbconvert preprocessor called :class:`~.ClearOutputPreprocessor`. This
74 74 clears the output from IPython notebooks.
75 75
76 76 * New preprocessor for nbconvert that executes all the code cells in a notebook.
77 77 To run a notebook and save its output in a new notebook::
78 78
79 79 ipython nbconvert InputNotebook --ExecutePreprocessor.enabled=True --to notebook --output Executed
80 80
81 81 * Consecutive stream (stdout/stderr) output is merged into a single output
82 82 in the notebook document.
83 83 Previously, all output messages were preserved as separate output fields in the JSON.
84 84 Now, the same merge is applied to the stored output as the displayed output,
85 85 improving document load time for notebooks with many small outputs.
86 86
87 87 * ``NotebookApp.webapp_settings`` is deprecated and replaced with
88 88 the more informatively named ``NotebookApp.tornado_settings``.
89 89
90 90 * Using :magic:`timeit` prints warnings if there is atleast a 4x difference in timings
91 91 between the slowest and fastest runs, since this might meant that the multiple
92 92 runs are not independent of one another.
93 93
94 94 * It's now possible to provide mechanisms to integrate IPython with other event
95 95 loops, in addition to the ones we already support. This lets you run GUI code
96 96 in IPython with an interactive prompt, and to embed the IPython
97 97 kernel in GUI applications. See :doc:`/config/eventloops` for details. As part
98 98 of this, the direct ``enable_*`` and ``disable_*`` functions for various GUIs
99 99 in :mod:`IPython.lib.inputhook` have been deprecated in favour of
100 100 :meth:`~.InputHookManager.enable_gui` and :meth:`~.InputHookManager.disable_gui`.
101 101
102 102 * A ``ScrollManager`` was added to the notebook. The ``ScrollManager`` controls how the notebook document is scrolled using keyboard. Users can inherit from the ``ScrollManager`` or ``TargetScrollManager`` to customize how their notebook scrolls. The default ``ScrollManager`` is the ``SlideScrollManager``, which tries to scroll to the nearest slide or sub-slide cell.
103 103
104 104 * The function :func:`~IPython.html.widgets.interaction.interact_manual` has been
105 105 added which behaves similarly to :func:`~IPython.html.widgets.interaction.interact`,
106 106 but adds a button to explicitly run the interacted-with function, rather than
107 107 doing it automatically for every change of the parameter widgets. This should
108 108 be useful for long-running functions.
109 109
110 110 * The ``%cython`` magic is now part of the Cython module. Use `%load_ext Cython` with a version of Cython >= 0.21 to have access to the magic now.
111 111
112 112 * The Notebook application now offers integrated terminals on Unix platforms,
113 113 intended for when it is used on a remote server. To enable these, install
114 114 the ``terminado`` Python package.
115 115
116 116 * Setting the default highlighting language for nbconvert with the config option
117 117 ``NbConvertBase.default_language`` is deprecated. Nbconvert now respects
118 118 metadata stored in the :ref:`kernel spec <kernelspecs>`.
119 119
120 120 * IPython can now be configured systemwide, with files in :file:`/etc/ipython`
121 121 or :file:`/usr/local/etc/ipython` on Unix systems,
122 122 or :file:`{%PROGRAMDATA%}\\ipython` on Windows.
123 123
124 * Added support for configurable user-supplied `Jinja
125 <http://jinja.pocoo.org/>`_ HTML templates for the notebook. Paths to
126 directories containing template files can be specified via
127 ``NotebookApp.extra_template_paths``. User-supplied template directories
128 searched first by the notebook, making it possible to replace existing
129 templates with your own files.
130
131 For example, to replace the notebook's built-in ``error.html`` with your own,
132 create a directory like ``/home/my_templates`` and put your override template
133 at ``/home/my_templates/error.html``. To start the notebook with your custom
134 error page enabled, you would run::
135
136 ipython notebook '--extra_template_paths=["/home/my_templates/"]'
137
138 It's also possible to override a template while also `inheriting
139 <http://jinja.pocoo.org/docs/dev/templates/#template-inheritance>`_ from that
140 template, by prepending ``templates/`` to the ``{% extends %}`` target of
141 your child template. This is useful when you only want to override a
142 specific block of a template. For example, to add additional CSS to the
143 built-in ``error.html``, you might create an override that looks like::
144
145 {% extends "templates/error.html" %}
146
147 {% block stylesheet %}
148 {{super()}}
149 <style type="text/css">
150 /* My Awesome CSS */
151 </style>
152 {% endblock %}
153
154 * Added a widget persistence API. This allows you to persist your notebooks interactive widgets.
155 Two levels of control are provided:
156 1. Higher level- ``WidgetManager.set_state_callbacks`` allows you to register callbacks for loading and saving widget state. The callbacks you register are automatically called when necessary.
157 2. Lower level- the ``WidgetManager`` Javascript class now has ``get_state`` and ``set_state`` methods that allow you to get and set the state of the widget runtime.
158
159 Example code for persisting your widget state to session data::
160
161 %%javascript
162 require(['widgets/js/manager'], function(manager) {
163 manager.WidgetManager.set_state_callbacks(function() { // Load
164 return JSON.parse(sessionStorage.widgets_state || '{}');
165 }, function(state) { // Save
166 sessionStorage.widgets_state = JSON.stringify(state);
167 });
168 });
169
170 * Enhanced support for :magic:`env` magic. As before, :magic:`env` with no
171 arguments displays all environment variables and values. Additionally,
172 :magic:`env` can be used to get or set individual environment variables. To
173 display an individual value, use the `%env var` syntax. To set a value, use
174 `env var val` or `env var=val`. Python value expansion using `$` works as usual.
175
124 176 .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.
125 177
126 178
127 179 Backwards incompatible changes
128 180 ------------------------------
129 181
130 182 * :func:`IPython.core.oinspect.getsource` call specification has changed:
131 183
132 184 * `oname` keyword argument has been added for property source formatting
133 185 * `is_binary` keyword argument has been dropped, passing ``True`` had
134 186 previously short-circuited the function to return ``None`` unconditionally
135 187
136 188 * Removed the octavemagic extension: it is now available as ``oct2py.ipython``.
137 189
138 190 * Creating PDFs with LaTeX no longer uses a post processor.
139 191 Use `nbconvert --to pdf` instead of `nbconvert --to latex --post pdf`.
140 192
141 193 * Used https://github.com/jdfreder/bootstrap2to3 to migrate the Notebook to Bootstrap 3.
142 194
143 195 Additional changes:
144 196
145 197 - Set `.tab-content .row` `0px;` left and right margin (bootstrap default is `-15px;`)
146 198 - Removed `height: @btn_mini_height;` from `.list_header>div, .list_item>div` in `tree.less`
147 199 - Set `#header` div `margin-bottom: 0px;`
148 200 - Set `#menus` to `float: left;`
149 201 - Set `#maintoolbar .navbar-text` to `float: none;`
150 202 - Added no-padding convienence class.
151 203 - Set border of #maintoolbar to 0px
152 204
153 205 * Accessing the `container` DOM object when displaying javascript has been
154 206 deprecated in IPython 2.0 in favor of accessing `element`. Starting with
155 207 IPython 3.0 trying to access `container` will raise an error in browser
156 208 javascript console.
157 209
158 210 * ``IPython.utils.py3compat.open`` was removed: :func:`io.open` provides all
159 211 the same functionality.
160 212
161 213 * The NotebookManager and ``/api/notebooks`` service has been replaced by
162 214 a more generic ContentsManager and ``/api/contents`` service,
163 215 which supports all kinds of files.
164 216 * The Dashboard now lists all files, not just notebooks and directories.
165 217 * The ``--script`` hook for saving notebooks to Python scripts is removed,
166 218 use :samp:`ipython nbconvert --to python {notebook}` instead.
167 219
168 220 * The ``rmagic`` extension is deprecated, as it is now part of rpy2. See
169 221 :mod:`rpy2.ipython.rmagic`.
170 222
171 223 * :meth:`~.KernelManager.start_kernel` and :meth:`~.KernelManager.format_kernel_cmd`
172 224 no longer accept a ``executable`` parameter. Use the kernelspec machinery instead.
173 225
174 226 * The widget classes have been renamed from `*Widget` to `*`. The old names are
175 227 still functional, but are deprecated. i.e. `IntSliderWidget` has been renamed
176 228 to `IntSlider`.
177 229 * The ContainerWidget was renamed to Box and no longer defaults as a flexible
178 230 box in the web browser. A new FlexBox widget was added, which allows you to
179 231 use the flexible box model.
180 232
233 * The notebook now uses a single websocket at `/kernels/<kernel-id>/channels` instead of separate
234 `/kernels/<kernel-id>/{shell|iopub|stdin}` channels. Messages on each channel are identified by a
235 `channel` key in the message dict, for both send and recv.
236
181 237 .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT.
182 238
183 239 Content Security Policy
184 240 ```````````````````````
185 241
186 242 The Content Security Policy is a web standard for adding a layer of security to
187 243 detect and mitigate certain classes of attacks, including Cross Site Scripting
188 244 (XSS) and data injection attacks. This was introduced into the notebook to
189 245 ensure that the IPython Notebook and its APIs (by default) can only be embedded
190 246 in an iframe on the same origin.
191 247
192 248 Override ``headers['Content-Security-Policy']`` within your notebook
193 249 configuration to extend for alternate domains and security settings.::
194 250
195 251 c.NotebookApp.tornado_settings = {
196 252 'headers': {
197 253 'Content-Security-Policy': "frame-ancestors 'self'"
198 254 }
199 255 }
200 256
201 257 Example policies::
202 258
203 259 Content-Security-Policy: default-src 'self' https://*.jupyter.org
204 260
205 261 Matches embeddings on any subdomain of jupyter.org, so long as they are served
206 262 over SSL.
207 263
208 264 There is a `report-uri <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#report-uri>`_ endpoint available for logging CSP violations, located at
209 265 ``/api/security/csp-report``. To use it, set ``report-uri`` as part of the CSP::
210 266
211 267 c.NotebookApp.tornado_settings = {
212 268 'headers': {
213 269 'Content-Security-Policy': "frame-ancestors 'self'; report-uri /api/security/csp-report"
214 270 }
215 271 }
216 272
217 273 It simply provides the CSP report as a warning in IPython's logs. The default
218 274 CSP sets this report-uri relative to the ``base_url`` (not shown above).
219 275
220 276 For a more thorough and accurate guide on Content Security Policies, check out
221 277 `MDN's Using Content Security Policy <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy>`_ for more examples.
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now