##// END OF EJS Templates
Merge pull request #7601 from takluyver/whatsnew-update-kernels-screenshot...
Min RK -
r20190:411d6eac merge
parent child Browse files
Show More
1 NO CONTENT: modified file, binary diff hidden
@@ -1,277 +1,277 b''
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 :alt: Screenshot of notebook kernel selection dropdown menu
17 :alt: Screenshot of 'new' dropdown showing different kernels
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 124 * Added support for configurable user-supplied `Jinja
125 125 <http://jinja.pocoo.org/>`_ HTML templates for the notebook. Paths to
126 126 directories containing template files can be specified via
127 127 ``NotebookApp.extra_template_paths``. User-supplied template directories
128 128 searched first by the notebook, making it possible to replace existing
129 129 templates with your own files.
130 130
131 131 For example, to replace the notebook's built-in ``error.html`` with your own,
132 132 create a directory like ``/home/my_templates`` and put your override template
133 133 at ``/home/my_templates/error.html``. To start the notebook with your custom
134 134 error page enabled, you would run::
135 135
136 136 ipython notebook '--extra_template_paths=["/home/my_templates/"]'
137 137
138 138 It's also possible to override a template while also `inheriting
139 139 <http://jinja.pocoo.org/docs/dev/templates/#template-inheritance>`_ from that
140 140 template, by prepending ``templates/`` to the ``{% extends %}`` target of
141 141 your child template. This is useful when you only want to override a
142 142 specific block of a template. For example, to add additional CSS to the
143 143 built-in ``error.html``, you might create an override that looks like::
144 144
145 145 {% extends "templates/error.html" %}
146 146
147 147 {% block stylesheet %}
148 148 {{super()}}
149 149 <style type="text/css">
150 150 /* My Awesome CSS */
151 151 </style>
152 152 {% endblock %}
153 153
154 154 * Added a widget persistence API. This allows you to persist your notebooks interactive widgets.
155 155 Two levels of control are provided:
156 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 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 158
159 159 Example code for persisting your widget state to session data::
160 160
161 161 %%javascript
162 162 require(['widgets/js/manager'], function(manager) {
163 163 manager.WidgetManager.set_state_callbacks(function() { // Load
164 164 return JSON.parse(sessionStorage.widgets_state || '{}');
165 165 }, function(state) { // Save
166 166 sessionStorage.widgets_state = JSON.stringify(state);
167 167 });
168 168 });
169 169
170 170 * Enhanced support for :magic:`env` magic. As before, :magic:`env` with no
171 171 arguments displays all environment variables and values. Additionally,
172 172 :magic:`env` can be used to get or set individual environment variables. To
173 173 display an individual value, use the `%env var` syntax. To set a value, use
174 174 `env var val` or `env var=val`. Python value expansion using `$` works as usual.
175 175
176 176 .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.
177 177
178 178
179 179 Backwards incompatible changes
180 180 ------------------------------
181 181
182 182 * :func:`IPython.core.oinspect.getsource` call specification has changed:
183 183
184 184 * `oname` keyword argument has been added for property source formatting
185 185 * `is_binary` keyword argument has been dropped, passing ``True`` had
186 186 previously short-circuited the function to return ``None`` unconditionally
187 187
188 188 * Removed the octavemagic extension: it is now available as ``oct2py.ipython``.
189 189
190 190 * Creating PDFs with LaTeX no longer uses a post processor.
191 191 Use `nbconvert --to pdf` instead of `nbconvert --to latex --post pdf`.
192 192
193 193 * Used https://github.com/jdfreder/bootstrap2to3 to migrate the Notebook to Bootstrap 3.
194 194
195 195 Additional changes:
196 196
197 197 - Set `.tab-content .row` `0px;` left and right margin (bootstrap default is `-15px;`)
198 198 - Removed `height: @btn_mini_height;` from `.list_header>div, .list_item>div` in `tree.less`
199 199 - Set `#header` div `margin-bottom: 0px;`
200 200 - Set `#menus` to `float: left;`
201 201 - Set `#maintoolbar .navbar-text` to `float: none;`
202 202 - Added no-padding convienence class.
203 203 - Set border of #maintoolbar to 0px
204 204
205 205 * Accessing the `container` DOM object when displaying javascript has been
206 206 deprecated in IPython 2.0 in favor of accessing `element`. Starting with
207 207 IPython 3.0 trying to access `container` will raise an error in browser
208 208 javascript console.
209 209
210 210 * ``IPython.utils.py3compat.open`` was removed: :func:`io.open` provides all
211 211 the same functionality.
212 212
213 213 * The NotebookManager and ``/api/notebooks`` service has been replaced by
214 214 a more generic ContentsManager and ``/api/contents`` service,
215 215 which supports all kinds of files.
216 216 * The Dashboard now lists all files, not just notebooks and directories.
217 217 * The ``--script`` hook for saving notebooks to Python scripts is removed,
218 218 use :samp:`ipython nbconvert --to python {notebook}` instead.
219 219
220 220 * The ``rmagic`` extension is deprecated, as it is now part of rpy2. See
221 221 :mod:`rpy2.ipython.rmagic`.
222 222
223 223 * :meth:`~.KernelManager.start_kernel` and :meth:`~.KernelManager.format_kernel_cmd`
224 224 no longer accept a ``executable`` parameter. Use the kernelspec machinery instead.
225 225
226 226 * The widget classes have been renamed from `*Widget` to `*`. The old names are
227 227 still functional, but are deprecated. i.e. `IntSliderWidget` has been renamed
228 228 to `IntSlider`.
229 229 * The ContainerWidget was renamed to Box and no longer defaults as a flexible
230 230 box in the web browser. A new FlexBox widget was added, which allows you to
231 231 use the flexible box model.
232 232
233 233 * The notebook now uses a single websocket at `/kernels/<kernel-id>/channels` instead of separate
234 234 `/kernels/<kernel-id>/{shell|iopub|stdin}` channels. Messages on each channel are identified by a
235 235 `channel` key in the message dict, for both send and recv.
236 236
237 237 .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT.
238 238
239 239 Content Security Policy
240 240 ```````````````````````
241 241
242 242 The Content Security Policy is a web standard for adding a layer of security to
243 243 detect and mitigate certain classes of attacks, including Cross Site Scripting
244 244 (XSS) and data injection attacks. This was introduced into the notebook to
245 245 ensure that the IPython Notebook and its APIs (by default) can only be embedded
246 246 in an iframe on the same origin.
247 247
248 248 Override ``headers['Content-Security-Policy']`` within your notebook
249 249 configuration to extend for alternate domains and security settings.::
250 250
251 251 c.NotebookApp.tornado_settings = {
252 252 'headers': {
253 253 'Content-Security-Policy': "frame-ancestors 'self'"
254 254 }
255 255 }
256 256
257 257 Example policies::
258 258
259 259 Content-Security-Policy: default-src 'self' https://*.jupyter.org
260 260
261 261 Matches embeddings on any subdomain of jupyter.org, so long as they are served
262 262 over SSL.
263 263
264 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
265 265 ``/api/security/csp-report``. To use it, set ``report-uri`` as part of the CSP::
266 266
267 267 c.NotebookApp.tornado_settings = {
268 268 'headers': {
269 269 'Content-Security-Policy': "frame-ancestors 'self'; report-uri /api/security/csp-report"
270 270 }
271 271 }
272 272
273 273 It simply provides the CSP report as a warning in IPython's logs. The default
274 274 CSP sets this report-uri relative to the ``base_url`` (not shown above).
275 275
276 276 For a more thorough and accurate guide on Content Security Policies, check out
277 277 `MDN's Using Content Security Policy <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy>`_ for more examples.
General Comments 0
You need to be logged in to leave comments. Login now