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