This repository was archived by the owner on Apr 4, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathchanges.html
More file actions
732 lines (719 loc) · 47.2 KB
/
changes.html
File metadata and controls
732 lines (719 loc) · 47.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>What’s new — IPython 0.10.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '0.10.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="IPython 0.10.2 documentation" href="index.html" />
<link rel="next" title="IPython Developer’s Guide" href="development/index.html" />
<link rel="prev" title="History" href="history.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="development/index.html" title="IPython Developer’s Guide"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="history.html" title="History"
accesskey="P">previous</a> |</li>
<li><a href="index.html">IPython 0.10.2 documentation</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="what-s-new">
<span id="changes"></span><h1>What’s new<a class="headerlink" href="#what-s-new" title="Permalink to this headline">¶</a></h1>
<div class="section" id="release-0-10-2">
<h2>Release 0.10.2<a class="headerlink" href="#release-0-10-2" title="Permalink to this headline">¶</a></h2>
<p>IPython 0.10.2 was released April 9, 2011. This is a minor bugfix release that
preserves backward compatibility. At this point, all IPython development
resources are focused on the 0.11 series that includes a complete architectural
restructuring of the project as well as many new capabilities, so this is
likely to be the last release of the 0.10.x series. We have tried to fix all
major bugs in this series so that it remains a viable platform for those not
ready yet to transition to the 0.11 and newer codebase (since that will require
some porting effort, as a number of APIs have changed).</p>
<p>Thus, we are not opening a 0.10.3 active development branch yet, but if the
user community requires new patches and is willing to maintain/release such a
branch, we’ll be happy to host it on the IPython github repositories.</p>
<p>Highlights of this release:</p>
<ul class="simple">
<li>The main one is the closing of github ticket #185, a major regression we had
in 0.10.1 where pylab mode with GTK (or gthread) was not working correctly,
hence plots were blocking with GTK. Since this is the default matplotlib
backend on Unix systems, this was a major annoyance for many users. Many
thanks to Paul Ivanov for helping resolve this issue.</li>
<li>Fix IOError bug on Windows when used with -gthread.</li>
<li>Work robustly if $HOME is missing from environment.</li>
<li>Better POSIX support in ssh scripts (remove bash-specific idioms).</li>
<li>Improved support for non-ascii characters in log files.</li>
<li>Work correctly in environments where GTK can be imported but not started
(such as a linux text console without X11).</li>
</ul>
<p>For this release we merged 24 commits, contributed by the following people
(please let us know if we ommitted your name and we’ll gladly fix this in the
notes for the future):</p>
<ul class="simple">
<li>Fernando Perez</li>
<li>MinRK</li>
<li>Paul Ivanov</li>
<li>Pieter Cristiaan de Groot</li>
<li>TvrtkoM</li>
</ul>
</div>
<div class="section" id="release-0-10-1">
<h2>Release 0.10.1<a class="headerlink" href="#release-0-10-1" title="Permalink to this headline">¶</a></h2>
<p>IPython 0.10.1 was released October 11, 2010, over a year after version 0.10.
This is mostly a bugfix release, since after version 0.10 was released, the
development team’s energy has been focused on the 0.11 series. We have
nonetheless tried to backport what fixes we could into 0.10.1, as it remains
the stable series that many users have in production systems they rely on.</p>
<p>Since the 0.11 series changes many APIs in backwards-incompatible ways, we are
willing to continue maintaining the 0.10.x series. We don’t really have time
to actively write new code for 0.10.x, but we are happy to accept patches and
pull requests on the IPython <a class="reference external" href="http://github.com/ipython">github site</a>. If sufficient contributions are
made that improve 0.10.1, we will roll them into future releases. For this
purpose, we will have a branch called 0.10.2 on github, on which you can base
your contributions.</p>
<p>For this release, we applied approximately 60 commits totaling a diff of over
7000 lines:</p>
<div class="highlight-python"><pre>(0.10.1)amirbar[dist]> git diff --oneline rel-0.10.. | wc -l
7296</pre>
</div>
<p>Highlights of this release:</p>
<ul>
<li><p class="first">The only significant new feature is that IPython’s parallel computing
machinery now supports natively the Sun Grid Engine and LSF schedulers. This
work was a joint contribution from Justin Riley, Satra Ghosh and Matthieu
Brucher, who put a lot of work into it. We also improved traceback handling
in remote tasks, as well as providing better control for remote task IDs.</p>
</li>
<li><p class="first">New IPython Sphinx directive contributed by John Hunter. You can use this
directive to mark blocks in reSructuredText documents as containing IPython
syntax (including figures) and the will be executed during the build:</p>
<div class="highlight-ipython"><div class="highlight"><pre><span class="gp">In [2]: </span><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <span class="c"># ensure a fresh figure</span>
<span class="go">@savefig psimple.png width=4in</span>
<span class="gp">In [3]: </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
<span class="go">Out[3]: </span><span class="p">[</span><span class="o"><</span><span class="n">matplotlib</span><span class="o">.</span><span class="n">lines</span><span class="o">.</span><span class="n">Line2D</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x9b74d8c</span><span class="o">></span><span class="p">]</span>
</pre></div>
</div>
</li>
<li><p class="first">Various fixes to the standalone ipython-wx application.</p>
</li>
<li><p class="first">We now ship internally the excellent argparse library, graciously licensed
under BSD terms by Steven Bethard. Now (2010) that argparse has become part
of Python 2.7 this will be less of an issue, but Steven’s relicensing allowed
us to start updating IPython to using argparse well before Python 2.7. Many
thanks!</p>
</li>
<li><p class="first">Robustness improvements so that IPython doesn’t crash if the readline library
is absent (though obviously a lot of functionality that requires readline
will not be available).</p>
</li>
<li><p class="first">Improvements to tab completion in Emacs with Python 2.6.</p>
</li>
<li><p class="first">Logging now supports timestamps (see <tt class="docutils literal"><span class="pre">%logstart?</span></tt> for full details).</p>
</li>
<li><p class="first">A long-standing and quite annoying bug where parentheses would be added to
<tt class="docutils literal"><span class="pre">print</span></tt> statements, under Python 2.5 and 2.6, was finally fixed.</p>
</li>
<li><p class="first">Improved handling of libreadline on Apple OSX.</p>
</li>
<li><p class="first">Fix <tt class="docutils literal"><span class="pre">reload</span></tt> method of IPython demos, which was broken.</p>
</li>
<li><p class="first">Fixes for the ipipe/ibrowse system on OSX.</p>
</li>
<li><p class="first">Fixes for Zope profile.</p>
</li>
<li><p class="first">Fix %timeit reporting when the time is longer than 1000s.</p>
</li>
<li><p class="first">Avoid lockups with ? or ?? in SunOS, due to a bug in termios.</p>
</li>
<li><p class="first">The usual assortment of miscellaneous bug fixes and small improvements.</p>
</li>
</ul>
<p>The following people contributed to this release (please let us know if we
ommitted your name and we’ll gladly fix this in the notes for the future):</p>
<ul class="simple">
<li>Beni Cherniavsky</li>
<li>Boyd Waters.</li>
<li>David Warde-Farley</li>
<li>Fernando Perez</li>
<li>Gökhan Sever</li>
<li>John Hunter</li>
<li>Justin Riley</li>
<li>Kiorky</li>
<li>Laurent Dufrechou</li>
<li>Mark E. Smith</li>
<li>Matthieu Brucher</li>
<li>Satrajit Ghosh</li>
<li>Sebastian Busch</li>
<li>Václav Šmilauer</li>
</ul>
</div>
<div class="section" id="release-0-10">
<h2>Release 0.10<a class="headerlink" href="#release-0-10" title="Permalink to this headline">¶</a></h2>
<p>This release brings months of slow but steady development, and will be the last
before a major restructuring and cleanup of IPython’s internals that is already
under way. For this reason, we hope that 0.10 will be a stable and robust
release so that while users adapt to some of the API changes that will come
with the refactoring that will become IPython 0.11, they can safely use 0.10 in
all existing projects with minimal changes (if any).</p>
<p>IPython 0.10 is now a medium-sized project, with roughly (as reported by David
Wheeler’s <strong class="command">sloccount</strong> utility) 40750 lines of Python code, and a diff
between 0.9.1 and this release that contains almost 28000 lines of code and
documentation. Our documentation, in PDF format, is a 495-page long PDF
document (also available in HTML format, both generated from the same sources).</p>
<p>Many users and developers contributed code, features, bug reports and ideas to
this release. Please do not hesitate in contacting us if we’ve failed to
acknowledge your contribution here. In particular, for this release we have
contribution from the following people, a mix of new and regular names (in
alphabetical order by first name):</p>
<ul class="simple">
<li>Alexander Clausen: fix #341726.</li>
<li>Brian Granger: lots of work everywhere (features, bug fixes, etc).</li>
<li>Daniel Ashbrook: bug report on MemoryError during compilation, now fixed.</li>
<li>Darren Dale: improvements to documentation build system, feedback, design
ideas.</li>
<li>Fernando Perez: various places.</li>
<li>Gaël Varoquaux: core code, ipythonx GUI, design discussions, etc. Lots...</li>
<li>John Hunter: suggestions, bug fixes, feedback.</li>
<li>Jorgen Stenarson: work on many fronts, tests, fixes, win32 support, etc.</li>
<li>Laurent Dufréchou: many improvements to ipython-wx standalone app.</li>
<li>Lukasz Pankowski: prefilter, <cite>%edit</cite>, demo improvements.</li>
<li>Matt Foster: TextMate support in <cite>%edit</cite>.</li>
<li>Nathaniel Smith: fix #237073.</li>
<li>Pauli Virtanen: fixes and improvements to extensions, documentation.</li>
<li>Prabhu Ramachandran: improvements to <cite>%timeit</cite>.</li>
<li>Robert Kern: several extensions.</li>
<li>Sameer D’Costa: help on critical bug #269966.</li>
<li>Stephan Peijnik: feedback on Debian compliance and many man pages.</li>
<li>Steven Bethard: we are now shipping his <tt class="xref py py-mod docutils literal"><span class="pre">argparse</span></tt> module.</li>
<li>Tom Fetherston: many improvements to <a class="reference internal" href="api/generated/IPython.demo.html#module-IPython.demo" title="IPython.demo"><tt class="xref py py-mod docutils literal"><span class="pre">IPython.demo</span></tt></a> module.</li>
<li>Ville Vainio: lots of work everywhere (features, bug fixes, etc).</li>
<li>Vishal Vasta: ssh support in ipcluster.</li>
<li>Walter Doerwald: work on the <tt class="xref py py-mod docutils literal"><span class="pre">IPython.ipipe</span></tt> system.</li>
</ul>
<p>Below we give an overview of new features, bug fixes and backwards-incompatible
changes. For a detailed account of every change made, feel free to view the
project log with <strong class="command">bzr log</strong>.</p>
<div class="section" id="new-features">
<h3>New features<a class="headerlink" href="#new-features" title="Permalink to this headline">¶</a></h3>
<ul>
<li><p class="first">New <cite>%paste</cite> magic automatically extracts current contents of clipboard and
pastes it directly, while correctly handling code that is indented or
prepended with <cite>>>></cite> or <cite>...</cite> python prompt markers. A very useful new
feature contributed by Robert Kern.</p>
</li>
<li><p class="first">IPython ‘demos’, created with the <a class="reference internal" href="api/generated/IPython.demo.html#module-IPython.demo" title="IPython.demo"><tt class="xref py py-mod docutils literal"><span class="pre">IPython.demo</span></tt></a> module, can now be
created from files on disk or strings in memory. Other fixes and
improvements to the demo system, by Tom Fetherston.</p>
</li>
<li><p class="first">Added <tt class="xref py py-func docutils literal"><span class="pre">find_cmd()</span></tt> function to <a class="reference internal" href="api/generated/IPython.platutils.html#module-IPython.platutils" title="IPython.platutils"><tt class="xref py py-mod docutils literal"><span class="pre">IPython.platutils</span></tt></a> module, to find
commands in a cross-platform manner.</p>
</li>
<li><p class="first">Many improvements and fixes to Gaël Varoquaux’s <strong class="command">ipythonx</strong>, a
WX-based lightweight IPython instance that can be easily embedded in other WX
applications. These improvements have made it possible to now have an
embedded IPython in Mayavi and other tools.</p>
</li>
<li><p class="first"><tt class="xref py py-class docutils literal"><span class="pre">MultiengineClient</span></tt> objects now have a <tt class="xref py py-meth docutils literal"><span class="pre">benchmark()</span></tt> method.</p>
</li>
<li><p class="first">The manual now includes a full set of auto-generated API documents from the
code sources, using Sphinx and some of our own support code. We are now
using the <a class="reference external" href="http://projects.scipy.org/numpy/wiki/CodingStyleGuidelines#docstring-standard">Numpy Documentation Standard</a> for all docstrings, and we have
tried to update as many existing ones as possible to this format.</p>
</li>
<li><p class="first">The new <tt class="xref py py-mod docutils literal"><span class="pre">IPython.Extensions.ipy_pretty</span></tt> extension by Robert Kern
provides configurable pretty-printing.</p>
</li>
<li><p class="first">Many improvements to the <strong class="command">ipython-wx</strong> standalone WX-based IPython
application by Laurent Dufréchou. It can optionally run in a thread, and
this can be toggled at runtime (allowing the loading of Matplotlib in a
running session without ill effects).</p>
</li>
<li><p class="first">IPython includes a copy of Steven Bethard’s <a class="reference external" href="http://code.google.com/p/argparse/">argparse</a> in the
<tt class="xref py py-mod docutils literal"><span class="pre">IPython.external</span></tt> package, so we can use it internally and it is also
available to any IPython user. By installing it in this manner, we ensure
zero conflicts with any system-wide installation you may already have while
minimizing external dependencies for new users. In IPython 0.10, We ship
argparse version 1.0.</p>
</li>
<li><p class="first">An improved and much more robust test suite, that runs groups of tests in
separate subprocesses using either Nose or Twisted’s <strong class="command">trial</strong> runner
to ensure proper management of Twisted-using code. The test suite degrades
gracefully if optional dependencies are not available, so that the
<strong class="command">iptest</strong> command can be run with only Nose installed and nothing
else. We also have more and cleaner test decorators to better select tests
depending on runtime conditions, do setup/teardown, etc.</p>
</li>
<li><p class="first">The new ipcluster now has a fully working ssh mode that should work on
Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!</p>
</li>
<li><p class="first">The wonderful TextMate editor can now be used with %edit on OS X. Thanks
to Matt Foster for this patch.</p>
</li>
<li><p class="first">The documentation regarding parallel uses of IPython, including MPI and PBS,
has been significantly updated and improved.</p>
</li>
<li><p class="first">The developer guidelines in the documentation have been updated to explain
our workflow using <strong class="command">bzr</strong> and Launchpad.</p>
</li>
<li><p class="first">Fully refactored <strong class="command">ipcluster</strong> command line program for starting
IPython clusters. This new version is a complete rewrite and 1) is fully
cross platform (we now use Twisted’s process management), 2) has much
improved performance, 3) uses subcommands for different types of clusters, 4)
uses argparse for parsing command line options, 5) has better support for
starting clusters using <strong class="command">mpirun</strong>, 6) has experimental support for
starting engines using PBS. It can also reuse FURL files, by appropriately
passing options to its subcommands. However, this new version of ipcluster
should be considered a technology preview. We plan on changing the API in
significant ways before it is final.</p>
</li>
<li><p class="first">Full description of the security model added to the docs.</p>
</li>
<li><p class="first">cd completer: show bookmarks if no other completions are available.</p>
</li>
<li><p class="first">sh profile: easy way to give ‘title’ to prompt: assign to variable
‘_prompt_title’. It looks like this:</p>
<div class="highlight-python"><pre>[~]|1> _prompt_title = 'sudo!'
sudo![~]|2></pre>
</div>
</li>
<li><p class="first">%edit: If you do ‘%edit pasted_block’, pasted_block variable gets updated
with new data (so repeated editing makes sense)</p>
</li>
</ul>
</div>
<div class="section" id="bug-fixes">
<h3>Bug fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>Fix #368719, removed top-level debian/ directory to make the job of Debian
packagers easier.</li>
<li>Fix #291143 by including man pages contributed by Stephan Peijnik from the
Debian project.</li>
<li>Fix #358202, effectively a race condition, by properly synchronizing file
creation at cluster startup time.</li>
<li><cite>%timeit</cite> now handles correctly functions that take a long time to execute
even the first time, by not repeating them.</li>
<li>Fix #239054, releasing of references after exiting.</li>
<li>Fix #341726, thanks to Alexander Clausen.</li>
<li>Fix #269966. This long-standing and very difficult bug (which is actually a
problem in Python itself) meant long-running sessions would inevitably grow
in memory size, often with catastrophic consequences if users had large
objects in their scripts. Now, using <cite>%run</cite> repeatedly should not cause any
memory leaks. Special thanks to John Hunter and Sameer D’Costa for their
help with this bug.</li>
<li>Fix #295371, bug in <cite>%history</cite>.</li>
<li>Improved support for py2exe.</li>
<li>Fix #270856: IPython hangs with PyGTK</li>
<li>Fix #270998: A magic with no docstring breaks the ‘%magic magic’</li>
<li>fix #271684: -c startup commands screw up raw vs. native history</li>
<li>Numerous bugs on Windows with the new ipcluster have been fixed.</li>
<li>The ipengine and ipcontroller scripts now handle missing furl files
more gracefully by giving better error messages.</li>
<li>%rehashx: Aliases no longer contain dots. python3.0 binary
will create alias python30. Fixes:
#259716 “commands with dots in them don’t work”</li>
<li>%cpaste: %cpaste -r repeats the last pasted block.
The block is assigned to pasted_block even if code
raises exception.</li>
<li>Bug #274067 ‘The code in get_home_dir is broken for py2exe’ was
fixed.</li>
<li>Many other small bug fixes not listed here by number (see the bzr log for
more info).</li>
</ul>
</div>
<div class="section" id="backwards-incompatible-changes">
<h3>Backwards incompatible changes<a class="headerlink" href="#backwards-incompatible-changes" title="Permalink to this headline">¶</a></h3>
<ul>
<li><p class="first"><cite>ipykit</cite> and related files were unmaintained and have been removed.</p>
</li>
<li><p class="first">The <a class="reference internal" href="api/generated/IPython.genutils.html#IPython.genutils.doctest_reload" title="IPython.genutils.doctest_reload"><tt class="xref py py-func docutils literal"><span class="pre">IPython.genutils.doctest_reload()</span></tt></a> does not actually call
<cite>reload(doctest)</cite> anymore, as this was causing many problems with the test
suite. It still resets <cite>doctest.master</cite> to None.</p>
</li>
<li><p class="first">While we have not deliberately broken Python 2.4 compatibility, only minor
testing was done with Python 2.4, while 2.5 and 2.6 were fully tested. But
if you encounter problems with 2.4, please do report them as bugs.</p>
</li>
<li><p class="first">The <strong class="command">ipcluster</strong> now requires a mode argument; for example to start a
cluster on the local machine with 4 engines, you must now type:</p>
<div class="highlight-python"><pre>$ ipcluster local -n 4</pre>
</div>
</li>
<li><p class="first">The controller now has a <tt class="docutils literal"><span class="pre">-r</span></tt> flag that needs to be used if you want to
reuse existing furl files. Otherwise they are deleted (the default).</p>
</li>
<li><p class="first">Remove ipy_leo.py. You can use <strong class="command">easy_install ipython-extension</strong> to
get it. (done to decouple it from ipython release cycle)</p>
</li>
</ul>
</div>
</div>
<div class="section" id="release-0-9-1">
<h2>Release 0.9.1<a class="headerlink" href="#release-0-9-1" title="Permalink to this headline">¶</a></h2>
<p>This release was quickly made to restore compatibility with Python 2.4, which
version 0.9 accidentally broke. No new features were introduced, other than
some additional testing support for internal use.</p>
</div>
<div class="section" id="release-0-9">
<h2>Release 0.9<a class="headerlink" href="#release-0-9" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id1">
<h3>New features<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>All furl files and security certificates are now put in a read-only
directory named ~./ipython/security.</li>
<li>A single function <tt class="xref py py-func docutils literal"><span class="pre">get_ipython_dir()</span></tt>, in <a class="reference internal" href="api/generated/IPython.genutils.html#module-IPython.genutils" title="IPython.genutils"><tt class="xref py py-mod docutils literal"><span class="pre">IPython.genutils</span></tt></a> that
determines the user’s IPython directory in a robust manner.</li>
<li>Laurent’s WX application has been given a top-level script called
ipython-wx, and it has received numerous fixes. We expect this code to be
architecturally better integrated with Gael’s WX ‘ipython widget’ over the
next few releases.</li>
<li>The Editor synchronization work by Vivian De Smedt has been merged in. This
code adds a number of new editor hooks to synchronize with editors under
Windows.</li>
<li>A new, still experimental but highly functional, WX shell by Gael Varoquaux.
This work was sponsored by Enthought, and while it’s still very new, it is
based on a more cleanly organized arhictecture of the various IPython
components. We will continue to develop this over the next few releases as a
model for GUI components that use IPython.</li>
<li>Another GUI frontend, Cocoa based (Cocoa is the OSX native GUI framework),
authored by Barry Wark. Currently the WX and the Cocoa ones have slightly
different internal organizations, but the whole team is working on finding
what the right abstraction points are for a unified codebase.</li>
<li>As part of the frontend work, Barry Wark also implemented an experimental
event notification system that various ipython components can use. In the
next release the implications and use patterns of this system regarding the
various GUI options will be worked out.</li>
<li>IPython finally has a full test system, that can test docstrings with
IPython-specific functionality. There are still a few pieces missing for it
to be widely accessible to all users (so they can run the test suite at any
time and report problems), but it now works for the developers. We are
working hard on continuing to improve it, as this was probably IPython’s
major Achilles heel (the lack of proper test coverage made it effectively
impossible to do large-scale refactoring). The full test suite can now
be run using the <strong class="command">iptest</strong> command line program.</li>
<li>The notion of a task has been completely reworked. An <cite>ITask</cite> interface has
been created. This interface defines the methods that tasks need to
implement. These methods are now responsible for things like submitting
tasks and processing results. There are two basic task types:
<a class="reference internal" href="api/generated/IPython.kernel.task.html#IPython.kernel.task.StringTask" title="IPython.kernel.task.StringTask"><tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.task.StringTask</span></tt></a> (this is the old <cite>Task</cite> object, but
renamed) and the new <a class="reference internal" href="api/generated/IPython.kernel.task.html#IPython.kernel.task.MapTask" title="IPython.kernel.task.MapTask"><tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.task.MapTask</span></tt></a>, which is based on
a function.</li>
<li>A new interface, <a class="reference internal" href="api/generated/IPython.kernel.mapper.html#IPython.kernel.mapper.IMapper" title="IPython.kernel.mapper.IMapper"><tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.mapper.IMapper</span></tt></a> has been defined to
standardize the idea of a <cite>map</cite> method. This interface has a single <cite>map</cite>
method that has the same syntax as the built-in <cite>map</cite>. We have also defined
a <cite>mapper</cite> factory interface that creates objects that implement
<a class="reference internal" href="api/generated/IPython.kernel.mapper.html#IPython.kernel.mapper.IMapper" title="IPython.kernel.mapper.IMapper"><tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.mapper.IMapper</span></tt></a> for different controllers. Both the
multiengine and task controller now have mapping capabilties.</li>
<li>The parallel function capabilities have been reworks. The major changes are
that i) there is now an <cite>@parallel</cite> magic that creates parallel functions,
ii) the syntax for mulitple variable follows that of <cite>map</cite>, iii) both the
multiengine and task controller now have a parallel function implementation.</li>
<li>All of the parallel computing capabilities from <cite>ipython1-dev</cite> have been
merged into IPython proper. This resulted in the following new subpackages:
<tt class="xref py py-mod docutils literal"><span class="pre">IPython.kernel</span></tt>, <tt class="xref py py-mod docutils literal"><span class="pre">IPython.kernel.core</span></tt>, <tt class="xref py py-mod docutils literal"><span class="pre">IPython.config</span></tt>,
<tt class="xref py py-mod docutils literal"><span class="pre">IPython.tools</span></tt> and <tt class="xref py py-mod docutils literal"><span class="pre">IPython.testing</span></tt>.</li>
<li>As part of merging in the <cite>ipython1-dev</cite> stuff, the <cite>setup.py</cite> script and
friends have been completely refactored. Now we are checking for
dependencies using the approach that matplotlib uses.</li>
<li>The documentation has been completely reorganized to accept the
documentation from <cite>ipython1-dev</cite>.</li>
<li>We have switched to using Foolscap for all of our network protocols in
<tt class="xref py py-mod docutils literal"><span class="pre">IPython.kernel</span></tt>. This gives us secure connections that are both
encrypted and authenticated.</li>
<li>We have a brand new <cite>COPYING.txt</cite> files that describes the IPython license
and copyright. The biggest change is that we are putting “The IPython
Development Team” as the copyright holder. We give more details about
exactly what this means in this file. All developer should read this and use
the new banner in all IPython source code files.</li>
<li>sh profile: ./foo runs foo as system command, no need to do !./foo anymore</li>
<li>String lists now support <tt class="docutils literal"><span class="pre">sort(field,</span> <span class="pre">nums</span> <span class="pre">=</span> <span class="pre">True)</span></tt> method (to easily sort
system command output). Try it with <tt class="docutils literal"><span class="pre">a</span> <span class="pre">=</span> <span class="pre">!ls</span> <span class="pre">-l</span> <span class="pre">;</span> <span class="pre">a.sort(1,</span> <span class="pre">nums=1)</span></tt>.</li>
<li>‘%cpaste foo’ now assigns the pasted block as string list, instead of string</li>
<li>The ipcluster script now run by default with no security. This is done
because the main usage of the script is for starting things on localhost.
Eventually when ipcluster is able to start things on other hosts, we will put
security back.</li>
<li>‘cd –foo’ searches directory history for string foo, and jumps to that dir.
Last part of dir name is checked first. If no matches for that are found,
look at the whole path.</li>
</ul>
</div>
<div class="section" id="id2">
<h3>Bug fixes<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>The Windows installer has been fixed. Now all IPython scripts have <tt class="docutils literal"><span class="pre">.bat</span></tt>
versions created. Also, the Start Menu shortcuts have been updated.</li>
<li>The colors escapes in the multiengine client are now turned off on win32 as
they don’t print correctly.</li>
<li>The <a class="reference internal" href="api/generated/IPython.kernel.scripts.ipengine.html#module-IPython.kernel.scripts.ipengine" title="IPython.kernel.scripts.ipengine"><tt class="xref py py-mod docutils literal"><span class="pre">IPython.kernel.scripts.ipengine</span></tt></a> script was exec’ing
mpi_import_statement incorrectly, which was leading the engine to crash when
mpi was enabled.</li>
<li>A few subpackages had missing <tt class="docutils literal"><span class="pre">__init__.py</span></tt> files.</li>
<li>The documentation is only created if Sphinx is found. Previously, the
<tt class="docutils literal"><span class="pre">setup.py</span></tt> script would fail if it was missing.</li>
<li>Greedy <tt class="docutils literal"><span class="pre">cd</span></tt> completion has been disabled again (it was enabled in 0.8.4) as
it caused problems on certain platforms.</li>
</ul>
</div>
<div class="section" id="id3">
<h3>Backwards incompatible changes<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>The <tt class="docutils literal"><span class="pre">clusterfile</span></tt> options of the <strong class="command">ipcluster</strong> command has been
removed as it was not working and it will be replaced soon by something much
more robust.</li>
<li>The <tt class="xref py py-mod docutils literal"><span class="pre">IPython.kernel</span></tt> configuration now properly find the user’s
IPython directory.</li>
<li>In ipapi, the <tt class="xref py py-func docutils literal"><span class="pre">make_user_ns()</span></tt> function has been replaced with
<tt class="xref py py-func docutils literal"><span class="pre">make_user_namespaces()</span></tt>, to support dict subclasses in namespace
creation.</li>
<li><tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.client.Task</span></tt> has been renamed
<tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.client.StringTask</span></tt> to make way for new task types.</li>
<li>The keyword argument <cite>style</cite> has been renamed <cite>dist</cite> in <cite>scatter</cite>, <cite>gather</cite>
and <cite>map</cite>.</li>
<li>Renamed the values that the rename <cite>dist</cite> keyword argument can have from
<cite>‘basic’</cite> to <cite>‘b’</cite>.</li>
<li>IPython has a larger set of dependencies if you want all of its capabilities.
See the <cite>setup.py</cite> script for details.</li>
<li>The constructors for <tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.client.MultiEngineClient</span></tt> and
<tt class="xref py py-class docutils literal"><span class="pre">IPython.kernel.client.TaskClient</span></tt> no longer take the (ip,port) tuple.
Instead they take the filename of a file that contains the FURL for that
client. If the FURL file is in your IPYTHONDIR, it will be found automatically
and the constructor can be left empty.</li>
<li>The asynchronous clients in <tt class="xref py py-mod docutils literal"><span class="pre">IPython.kernel.asyncclient</span></tt> are now created
using the factory functions <tt class="xref py py-func docutils literal"><span class="pre">get_multiengine_client()</span></tt> and
<tt class="xref py py-func docutils literal"><span class="pre">get_task_client()</span></tt>. These return a <cite>Deferred</cite> to the actual client.</li>
<li>The command line options to <cite>ipcontroller</cite> and <cite>ipengine</cite> have changed to
reflect the new Foolscap network protocol and the FURL files. Please see the
help for these scripts for details.</li>
<li>The configuration files for the kernel have changed because of the Foolscap
stuff. If you were using custom config files before, you should delete them
and regenerate new ones.</li>
</ul>
</div>
<div class="section" id="changes-merged-in-from-ipython1">
<h3>Changes merged in from IPython1<a class="headerlink" href="#changes-merged-in-from-ipython1" title="Permalink to this headline">¶</a></h3>
<div class="section" id="id4">
<h4>New features<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h4>
<ul class="simple">
<li>Much improved <tt class="docutils literal"><span class="pre">setup.py</span></tt> and <tt class="docutils literal"><span class="pre">setupegg.py</span></tt> scripts. Because Twisted and
zope.interface are now easy installable, we can declare them as dependencies
in our setupegg.py script.</li>
<li>IPython is now compatible with Twisted 2.5.0 and 8.x.</li>
<li>Added a new example of how to use <tt class="xref py py-mod docutils literal"><span class="pre">ipython1.kernel.asynclient</span></tt>.</li>
<li>Initial draft of a process daemon in <tt class="xref py py-mod docutils literal"><span class="pre">ipython1.daemon</span></tt>. This has not
been merged into IPython and is still in <cite>ipython1-dev</cite>.</li>
<li>The <tt class="docutils literal"><span class="pre">TaskController</span></tt> now has methods for getting the queue status.</li>
<li>The <tt class="docutils literal"><span class="pre">TaskResult</span></tt> objects not have information about how long the task
took to run.</li>
<li>We are attaching additional attributes to exceptions <tt class="docutils literal"><span class="pre">(_ipython_*)</span></tt> that
we use to carry additional info around.</li>
<li>New top-level module <tt class="xref py py-mod docutils literal"><span class="pre">asyncclient</span></tt> that has asynchronous versions (that
return deferreds) of the client classes. This is designed to users who want
to run their own Twisted reactor.</li>
<li>All the clients in <tt class="xref py py-mod docutils literal"><span class="pre">client</span></tt> are now based on Twisted. This is done by
running the Twisted reactor in a separate thread and using the
<tt class="xref py py-func docutils literal"><span class="pre">blockingCallFromThread()</span></tt> function that is in recent versions of Twisted.</li>
<li>Functions can now be pushed/pulled to/from engines using
<tt class="xref py py-meth docutils literal"><span class="pre">MultiEngineClient.push_function()</span></tt> and
<tt class="xref py py-meth docutils literal"><span class="pre">MultiEngineClient.pull_function()</span></tt>.</li>
<li>Gather/scatter are now implemented in the client to reduce the work load
of the controller and improve performance.</li>
<li>Complete rewrite of the IPython docuementation. All of the documentation
from the IPython website has been moved into docs/source as restructured
text documents. PDF and HTML documentation are being generated using
Sphinx.</li>
<li>New developer oriented documentation: development guidelines and roadmap.</li>
<li>Traditional <tt class="docutils literal"><span class="pre">ChangeLog</span></tt> has been changed to a more useful <tt class="docutils literal"><span class="pre">changes.txt</span></tt>
file that is organized by release and is meant to provide something more
relevant for users.</li>
</ul>
</div>
<div class="section" id="id5">
<h4>Bug fixes<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h4>
<ul class="simple">
<li>Created a proper <tt class="docutils literal"><span class="pre">MANIFEST.in</span></tt> file to create source distributions.</li>
<li>Fixed a bug in the <tt class="docutils literal"><span class="pre">MultiEngine</span></tt> interface. Previously, multi-engine
actions were being collected with a <tt class="xref py py-class docutils literal"><span class="pre">DeferredList</span></tt> with
<tt class="docutils literal"><span class="pre">fireononeerrback=1</span></tt>. This meant that methods were returning
before all engines had given their results. This was causing extremely odd
bugs in certain cases. To fix this problem, we have 1) set
<tt class="docutils literal"><span class="pre">fireononeerrback=0</span></tt> to make sure all results (or exceptions) are in
before returning and 2) introduced a <tt class="xref py py-exc docutils literal"><span class="pre">CompositeError</span></tt> exception
that wraps all of the engine exceptions. This is a huge change as it means
that users will have to catch <tt class="xref py py-exc docutils literal"><span class="pre">CompositeError</span></tt> rather than the actual
exception.</li>
</ul>
</div>
<div class="section" id="id6">
<h4>Backwards incompatible changes<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h4>
<ul class="simple">
<li>All names have been renamed to conform to the lowercase_with_underscore
convention. This will require users to change references to all names like
<tt class="docutils literal"><span class="pre">queueStatus</span></tt> to <tt class="docutils literal"><span class="pre">queue_status</span></tt>.</li>
<li>Previously, methods like <tt class="xref py py-meth docutils literal"><span class="pre">MultiEngineClient.push()</span></tt> and
<tt class="xref py py-meth docutils literal"><span class="pre">MultiEngineClient.push()</span></tt> used <tt class="docutils literal"><span class="pre">*args</span></tt> and <tt class="docutils literal"><span class="pre">**kwargs</span></tt>. This was
becoming a problem as we weren’t able to introduce new keyword arguments into
the API. Now these methods simple take a dict or sequence. This has also
allowed us to get rid of the <tt class="docutils literal"><span class="pre">*All</span></tt> methods like <tt class="xref py py-meth docutils literal"><span class="pre">pushAll()</span></tt> and
<tt class="xref py py-meth docutils literal"><span class="pre">pullAll()</span></tt>. These things are now handled with the <tt class="docutils literal"><span class="pre">targets</span></tt> keyword
argument that defaults to <tt class="docutils literal"><span class="pre">'all'</span></tt>.</li>
<li>The <tt class="xref py py-attr docutils literal"><span class="pre">MultiEngineClient.magicTargets</span></tt> has been renamed to
<tt class="xref py py-attr docutils literal"><span class="pre">MultiEngineClient.targets</span></tt>.</li>
<li>All methods in the MultiEngine interface now accept the optional keyword
argument <tt class="docutils literal"><span class="pre">block</span></tt>.</li>
<li>Renamed <tt class="xref py py-class docutils literal"><span class="pre">RemoteController</span></tt> to <tt class="xref py py-class docutils literal"><span class="pre">MultiEngineClient</span></tt> and
<tt class="xref py py-class docutils literal"><span class="pre">TaskController</span></tt> to <tt class="xref py py-class docutils literal"><span class="pre">TaskClient</span></tt>.</li>
<li>Renamed the top-level module from <tt class="xref py py-mod docutils literal"><span class="pre">api</span></tt> to <tt class="xref py py-mod docutils literal"><span class="pre">client</span></tt>.</li>
<li>Most methods in the multiengine interface now raise a <tt class="xref py py-exc docutils literal"><span class="pre">CompositeError</span></tt>
exception that wraps the user’s exceptions, rather than just raising the raw
user’s exception.</li>
<li>Changed the <tt class="docutils literal"><span class="pre">setupNS</span></tt> and <tt class="docutils literal"><span class="pre">resultNames</span></tt> in the <tt class="docutils literal"><span class="pre">Task</span></tt> class to <tt class="docutils literal"><span class="pre">push</span></tt>
and <tt class="docutils literal"><span class="pre">pull</span></tt>.</li>
</ul>
</div>
</div>
</div>
<div class="section" id="release-0-8-4">
<h2>Release 0.8.4<a class="headerlink" href="#release-0-8-4" title="Permalink to this headline">¶</a></h2>
<p>This was a quick release to fix an unfortunate bug that slipped into the 0.8.3
release. The <tt class="docutils literal"><span class="pre">--twisted</span></tt> option was disabled, as it turned out to be broken
across several platforms.</p>
</div>
<div class="section" id="release-0-8-3">
<h2>Release 0.8.3<a class="headerlink" href="#release-0-8-3" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>pydb is now disabled by default (due to %run -d problems). You can enable
it by passing -pydb command line argument to IPython. Note that setting
it in config file won’t work.</li>
</ul>
</div>
<div class="section" id="release-0-8-2">
<h2>Release 0.8.2<a class="headerlink" href="#release-0-8-2" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>%pushd/%popd behave differently; now “pushd /foo” pushes CURRENT directory
and jumps to /foo. The current behaviour is closer to the documented
behaviour, and should not trip anyone.</li>
</ul>
</div>
<div class="section" id="older-releases">
<h2>Older releases<a class="headerlink" href="#older-releases" title="Permalink to this headline">¶</a></h2>
<p>Changes in earlier releases of IPython are described in the older file
<tt class="docutils literal"><span class="pre">ChangeLog</span></tt>. Please refer to this document for details.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">What’s new</a><ul>
<li><a class="reference internal" href="#release-0-10-2">Release 0.10.2</a></li>
<li><a class="reference internal" href="#release-0-10-1">Release 0.10.1</a></li>
<li><a class="reference internal" href="#release-0-10">Release 0.10</a><ul>
<li><a class="reference internal" href="#new-features">New features</a></li>
<li><a class="reference internal" href="#bug-fixes">Bug fixes</a></li>
<li><a class="reference internal" href="#backwards-incompatible-changes">Backwards incompatible changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#release-0-9-1">Release 0.9.1</a></li>
<li><a class="reference internal" href="#release-0-9">Release 0.9</a><ul>
<li><a class="reference internal" href="#id1">New features</a></li>
<li><a class="reference internal" href="#id2">Bug fixes</a></li>
<li><a class="reference internal" href="#id3">Backwards incompatible changes</a></li>
<li><a class="reference internal" href="#changes-merged-in-from-ipython1">Changes merged in from IPython1</a><ul>
<li><a class="reference internal" href="#id4">New features</a></li>
<li><a class="reference internal" href="#id5">Bug fixes</a></li>
<li><a class="reference internal" href="#id6">Backwards incompatible changes</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#release-0-8-4">Release 0.8.4</a></li>
<li><a class="reference internal" href="#release-0-8-3">Release 0.8.3</a></li>
<li><a class="reference internal" href="#release-0-8-2">Release 0.8.2</a></li>
<li><a class="reference internal" href="#older-releases">Older releases</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="history.html"
title="previous chapter">History</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="development/index.html"
title="next chapter">IPython Developer’s Guide</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/changes.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" size="18" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="development/index.html" title="IPython Developer’s Guide"
>next</a> |</li>
<li class="right" >
<a href="history.html" title="History"
>previous</a> |</li>
<li><a href="index.html">IPython 0.10.2 documentation</a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2008, The IPython Development Team.
Last updated on Apr 09, 2011.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1pre.
</div>
</body>
</html>