[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#686604: unblock (pre-approval): ipython 0.13.1



On 10/11/2012 08:20 PM, Julien Cristau wrote:
> On Mon, Sep  3, 2012 at 20:01:12 +0200, Julian Taylor wrote:
> 
>> Hi,
>> ipython upstream is going to release a bugfix only release soon which
>> fixes a couple important and many minor bugs. I would like to have this
>> release in wheezy if you allow it.
>> Attached a debdiff of the current 0.13.1 branch which is likely not
>> going change much until the release.
>>
> Looks fine to me.
> 
> [...]
>> When the final release is done I will ping you again with the changes
>> since this request.
>>
> I take it this hasn't happened yet?
> 
> Cheers,
> Julien
> 

not yet but the plan is this or next weekend.
attached the change debdiff and associated upstream git log. No major
changes upstream, just a matplotlib 1.2 compatibility addition, a
ipcluster bugfix and a windows only fix.
debian package gained a build dependency on libc-bin >= 2.13-1~ for the
C.UTF-8 locale used in tests.
diff -Nru ipython-0.13.1~20120903/debian/changelog ipython-0.13.1~20121013/debian/changelog
--- ipython-0.13.1~20120903/debian/changelog	2012-09-03 19:42:05.000000000 +0200
+++ ipython-0.13.1~20121013/debian/changelog	2012-10-13 14:20:03.000000000 +0200
@@ -1,14 +1,15 @@
-ipython (0.13.1~20120903-1) UNRELEASED; urgency=low
+ipython (0.13.1~20121013-1) UNRELEASED; urgency=low
 
-  * snapshot of 0.13.1 branch, 59eda2908a
+  * snapshot of 0.13.1 branch, 41d1bc18429
   * refresh patches, drop applied except-shadows-builtin-fix.patch
   * depend on libjs-jquery >= 1.7 (Closes: #685986)
   * drop build depends on dh-linktree and libjs-jquery-ui (Closes: #685985)
     - needs to be added again when we can use the packaged jquery-ui
   * drop LC_ALL=C.UTF-8 from build and install, not required anymore
   * override dh_python[23] to work around #683108
+  * build depend on libc-bin (>= 2.13-1~) for C.UTF-8 locale used in tests
 
- -- Julian Taylor <jtaylor.debian@googlemail.com>  Sat, 01 Sep 2012 13:56:37 +0200
+ -- Julian Taylor <jtaylor.debian@googlemail.com>  Tue, 04 Sep 2012 22:41:20 +0200
 
 ipython (0.13-1) unstable; urgency=low
 
diff -Nru ipython-0.13.1~20120903/debian/control ipython-0.13.1~20121013/debian/control
--- ipython-0.13.1~20120903/debian/control	2012-09-03 19:42:05.000000000 +0200
+++ ipython-0.13.1~20121013/debian/control	2012-10-13 14:20:03.000000000 +0200
@@ -5,6 +5,7 @@
 Uploaders: Julian Taylor <jtaylor.debian@googlemail.com>
 Build-Depends: debhelper (>= 7.3.13)
 Build-Depends-Indep: graphviz,
+                     libc-bin (>= 2.13-1~),
                      python-all (>= 2.6.6-3~),
                      python-argparse,
                      python-configobj,
diff -Nru ipython-0.13.1~20120903/debian/ipython-notebook-common.install ipython-0.13.1~20121013/debian/ipython-notebook-common.install
--- ipython-0.13.1~20120903/debian/ipython-notebook-common.install	2012-09-03 19:42:05.000000000 +0200
+++ ipython-0.13.1~20121013/debian/ipython-notebook-common.install	2012-10-13 14:20:03.000000000 +0200
@@ -1,2 +1,2 @@
-IPython/frontend/html/notebook/static usr/share/ipython/notebook
 IPython/external/js usr/share/ipython/notebook
+IPython/frontend/html/notebook/static usr/share/ipython/notebook
diff -Nru ipython-0.13.1~20120903/docs/source/parallel/parallel_task.txt ipython-0.13.1~20121013/docs/source/parallel/parallel_task.txt
--- ipython-0.13.1~20120903/docs/source/parallel/parallel_task.txt	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/docs/source/parallel/parallel_task.txt	2012-10-12 01:09:17.000000000 +0200
@@ -386,19 +386,20 @@
 Greedy Assignment
 -----------------
 
-Tasks are assigned greedily as they are submitted. If their dependencies are
+Tasks can be assigned greedily as they are submitted. If their dependencies are
 met, they will be assigned to an engine right away, and multiple tasks can be
 assigned to an engine at a given time. This limit is set with the
-``TaskScheduler.hwm`` (high water mark) configurable:
+``TaskScheduler.hwm`` (high water mark) configurable in your
+:file:`ipcontroller_config.py` config file, with:
 
 .. sourcecode:: python
 
     # the most common choices are:
-    c.TaskSheduler.hwm = 0 # (minimal latency, default in IPython ≤ 0.12)
+    c.TaskSheduler.hwm = 0 # (minimal latency, default in IPython < 0.13)
     # or
-    c.TaskScheduler.hwm = 1 # (most-informed balancing, default in > 0.12)
+    c.TaskScheduler.hwm = 1 # (most-informed balancing, default in ≥ 0.13)
 
-In IPython ≤ 0.12,the default is 0, or no-limit. That is, there is no limit to the number of
+In IPython < 0.13, the default is 0, or no-limit. That is, there is no limit to the number of
 tasks that can be outstanding on a given engine. This greatly benefits the
 latency of execution, because network traffic can be hidden behind computation.
 However, this means that workload is assigned without knowledge of how long
@@ -406,10 +407,10 @@
 submitting a collection of heterogeneous tasks all at once. You can limit this
 effect by setting hwm to a positive integer, 1 being maximum load-balancing (a
 task will never be waiting if there is an idle engine), and any larger number
-being a compromise between load-balance and latency-hiding.
+being a compromise between load-balancing and latency-hiding.
 
 In practice, some users have been confused by having this optimization on by
-default, and the default value has been changed to 1. This can be slower,
+default, so the default value has been changed to 1 in IPython 0.13. This can be slower,
 but has more obvious behavior and won't result in assigning too many tasks to
 some engines in heterogeneous cases.
 
diff -Nru ipython-0.13.1~20120903/docs/source/whatsnew/version0.13.txt ipython-0.13.1~20121013/docs/source/whatsnew/version0.13.txt
--- ipython-0.13.1~20120903/docs/source/whatsnew/version0.13.txt	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/docs/source/whatsnew/version0.13.txt	2012-10-12 01:09:17.000000000 +0200
@@ -2,6 +2,92 @@
  0.13 Series
 =============
 
+Release 0.13.1
+==============
+
+0.13.1 is a bugfix release for 0.13.
+
+Notable fixes:
+
+* ipcluster launchers were released with a few serious bugs in 0.13, preventing
+  the default configuration from working in just about any nontrivial environment
+  (SSH and PBS/SGE/LSF launchers all affected).
+* Various installation / name fixes required for Python 3.3.
+* Notebook frontend should no longer be vulnerable to errors in user javascript.
+* Notebook download/save/print should get the right title instead of 'notebook'.
+* Tab completion fixes when using ``IPython.embed_kernel()``.
+* A few NameErrors/AttributeErrors in magics due to the reorganized magics system.
+
+We closed a total of 60 issues (39 pull requests and 21 regular issues);
+this is the full list (generated with the script :file:`tools/github_stats.py`):
+
+Pull Requests (39):
+
+* :ghpull:`2384`: Adapt inline backend to changes in matplotlib
+* :ghpull:`2479`: use new _winapi instead of removed _subprocess
+* :ghpull:`2437`: don't let log cleanup prevent engine start
+* :ghpull:`2405`: clarify TaskScheduler.hwm doc
+* :ghpull:`2377`: Fix installation of man pages in Python 3
+* :ghpull:`2373`: fix missing imports in core.interactiveshell
+* :ghpull:`2365`: fix names of notebooks for download/save
+* :ghpull:`2345`: Remove references to 'version' no longer in argparse. Github issue #2343.
+* :ghpull:`2347`: adjust division error message checking to account for Python 3
+* :ghpull:`2305`: RemoteError._render_traceback_ calls self.render_traceback
+* :ghpull:`2280`: fix SSH passwordless check for OpenSSH
+* :ghpull:`2270`: SSHLauncher tweaks
+* :ghpull:`2261`: Fix: longest_substr([]) -> ''
+* :ghpull:`2250`: fix html in notebook example
+* :ghpull:`2235`: remove spurious print statement from setupbase.py
+* :ghpull:`2223`: Custom tracebacks
+* :ghpull:`2214`: use KernelApp.exec_lines/files in IPEngineApp
+* :ghpull:`2212`: catch errors in markdown javascript
+* :ghpull:`2194`: clean nan/inf in json_clean
+* :ghpull:`2169`: ipdb: pdef, pdoc, pinfo magics all broken
+* :ghpull:`2186`: removed references to h5py dependence in octave magic documentation
+* :ghpull:`2185`: added test for %store, fixed storemagic
+* :ghpull:`2177`: remove numpy install from travis/tox scripts
+* :ghpull:`2170`: Fix tab completion with IPython.embed_kernel().
+* :ghpull:`2163`: fix 'remote_profie_dir' typo in SSH launchers
+* :ghpull:`2117`: use explicit url in notebook example
+* :ghpull:`2126`: ipcluster broken with any batch launcher (PBS/LSF/SGE)
+* :ghpull:`2128`: open notebook copy in different tabs
+* :ghpull:`2073`: allows password and prefix for notebook
+* :ghpull:`2086`: re-alias %ed to %edit in qtconsole
+* :ghpull:`2101`: fix completer deleting newline
+* :ghpull:`2102`: Fix logging on interactive shell.
+* :ghpull:`2063`: Remove umlauts so py3 installations on LANG=C systems succeed.
+* :ghpull:`2068`: record sysinfo in sdist
+* :ghpull:`2067`: update tools/release_windows.py
+* :ghpull:`2065`: Fix parentheses typo
+* :ghpull:`2062`: Remove duplicates and auto-generated files from repo.
+* :ghpull:`2061`: use explicit tuple in exception
+* :ghpull:`2060`: change minus to \- or \(hy in manpages
+
+Issues (21):
+
+* :ghissue:`2471`: _subprocess module removed in Python 3.3
+* :ghissue:`2374`: Issues with man pages
+* :ghissue:`2435`: ipengines fail if clean_logs enabled
+* :ghissue:`2372`: interactiveshell.py misses urllib and io_open imports
+* :ghissue:`2227`: print name for IPython Notebooks has become uninformative
+* :ghissue:`2343`: Installing in a python 3.3b2 or python 3.3rc1 virtual environment.
+* :ghissue:`2303`:  remote tracebacks broken since 952d0d6 (PR #2223)
+* :ghissue:`2266`: SSH passwordless check with OpenSSH checks for the wrong thing
+* :ghissue:`2252`: %paste throws an exception with empty clipboard
+* :ghissue:`2221`: Avoid importing from IPython.parallel in core
+* :ghissue:`2213`: Can't trigger startup code in Engines
+* :ghissue:`2187`: NaN in object_info_reply JSON causes parse error
+* :ghissue:`2173`: oct2py v >= 0.3.1 doesn't need h5py anymore
+* :ghissue:`2099`: storemagic needs to use self.shell
+* :ghissue:`2139`: 00_notebook_tour Image example broken on master
+* :ghissue:`2085`: %ed magic fails in qtconsole
+* :ghissue:`2082`: Qt Console output spacing
+* :ghissue:`2057`: setup fails for python3 with LANG=C
+* :ghissue:`2059`: duplicate and modified files in documentation
+* :ghissue:`2056`: except-shadows-builtin osm.py:687
+* :ghissue:`2058`: hyphen-used-as-minus-sign in manpages
+
+
 Release 0.13
 ============
 
diff -Nru ipython-0.13.1~20120903/IPython/core/release.py ipython-0.13.1~20121013/IPython/core/release.py
--- ipython-0.13.1~20120903/IPython/core/release.py	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/IPython/core/release.py	2012-10-12 01:09:17.000000000 +0200
@@ -22,8 +22,8 @@
 _version_major = 0
 _version_minor = 13
 _version_micro = 1  # use '' for first of series, number for 1 and above
-_version_extra = 'dev'
-#_version_extra = 'rc1'
+# _version_extra = 'dev'
+_version_extra = 'rc2'
 # _version_extra = ''  # Uncomment this for full releases
 
 # Construct full version string from these.
diff -Nru ipython-0.13.1~20120903/IPython/parallel/apps/baseapp.py ipython-0.13.1~20121013/IPython/parallel/apps/baseapp.py
--- ipython-0.13.1~20120903/IPython/parallel/apps/baseapp.py	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/IPython/parallel/apps/baseapp.py	2012-10-12 01:09:17.000000000 +0200
@@ -169,8 +169,13 @@
         log_dir = self.profile_dir.log_dir
         if self.clean_logs:
             for f in os.listdir(log_dir):
-                if re.match(r'%s-\d+\.(log|err|out)'%self.name,f):
-                    os.remove(os.path.join(log_dir, f))
+                if re.match(r'%s-\d+\.(log|err|out)' % self.name, f):
+                    try:
+                        os.remove(os.path.join(log_dir, f))
+                    except (OSError, IOError):
+                        # probably just conflict from sibling process
+                        # already removing it
+                        pass
         if self.log_to_file:
             # Start logging to the new log file
             log_filename = self.name + u'-' + str(os.getpid()) + u'.log'
diff -Nru ipython-0.13.1~20120903/IPython/zmq/entry_point.py ipython-0.13.1~20121013/IPython/zmq/entry_point.py
--- ipython-0.13.1~20120903/IPython/zmq/entry_point.py	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/IPython/zmq/entry_point.py	2012-10-12 01:09:17.000000000 +0200
@@ -179,8 +179,12 @@
                          creationflags=512, # CREATE_NEW_PROCESS_GROUP
                          stdin=_stdin, stdout=_stdout, stderr=_stderr)
         else:
-            from _subprocess import DuplicateHandle, GetCurrentProcess, \
-                DUPLICATE_SAME_ACCESS
+            try:
+                from _winapi import DuplicateHandle, GetCurrentProcess, \
+                    DUPLICATE_SAME_ACCESS
+            except:
+                from _subprocess import DuplicateHandle, GetCurrentProcess, \
+                    DUPLICATE_SAME_ACCESS
             pid = GetCurrentProcess()
             handle = DuplicateHandle(pid, pid, pid, 0,
                                      True, # Inheritable by new processes.
diff -Nru ipython-0.13.1~20120903/IPython/zmq/parentpoller.py ipython-0.13.1~20121013/IPython/zmq/parentpoller.py
--- ipython-0.13.1~20120903/IPython/zmq/parentpoller.py	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/IPython/zmq/parentpoller.py	2012-10-12 01:09:17.000000000 +0200
@@ -100,7 +100,10 @@
     def run(self):
         """ Run the poll loop. This method never returns.
         """
-        from _subprocess import WAIT_OBJECT_0, INFINITE
+        try:
+            from _winapi import WAIT_OBJECT_0, INFINITE
+        except ImportError:
+            from _subprocess import WAIT_OBJECT_0, INFINITE
 
         # Build the list of handle to listen on.
         handles = []
diff -Nru ipython-0.13.1~20120903/IPython/zmq/pylab/backend_inline.py ipython-0.13.1~20121013/IPython/zmq/pylab/backend_inline.py
--- ipython-0.13.1~20120903/IPython/zmq/pylab/backend_inline.py	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/IPython/zmq/pylab/backend_inline.py	2012-10-12 01:09:17.000000000 +0200
@@ -10,7 +10,7 @@
 
 # Third-party imports
 import matplotlib
-from matplotlib.backends.backend_agg import new_figure_manager
+from matplotlib.backends.backend_agg import new_figure_manager, FigureCanvasAgg
 from matplotlib._pylab_helpers import Gcf
 
 # Local imports.
@@ -222,3 +222,7 @@
         {mime : data}
     )
 
+# Changes to matplotlib in version 1.2 requires a mpl backend to supply a default
+# figurecanvas. This is set here to a Agg canvas
+# See https://github.com/matplotlib/matplotlib/pull/1125
+FigureCanvas = FigureCanvasAgg
diff -Nru ipython-0.13.1~20120903/setupbase.py ipython-0.13.1~20121013/setupbase.py
--- ipython-0.13.1~20120903/setupbase.py	2012-09-03 19:29:09.000000000 +0200
+++ ipython-0.13.1~20121013/setupbase.py	2012-10-12 01:09:17.000000000 +0200
@@ -204,12 +204,12 @@
     manpagebase = pjoin('share', 'man', 'man1')
 
     # Simple file lists can be made by hand
-    manpages  = filter(isfile, glob(pjoin('docs','man','*.1.gz')))
+    manpages = [f for f in glob(pjoin('docs','man','*.1.gz')) if isfile(f)]
     if not manpages:
         # When running from a source tree, the manpages aren't gzipped
-        manpages = filter(isfile, glob(pjoin('docs','man','*.1')))
-    igridhelpfiles = filter(isfile,
-                            glob(pjoin('IPython','extensions','igrid_help.*')))
+        manpages = [f for f in glob(pjoin('docs','man','*.1')) if isfile(f)]
+
+    igridhelpfiles = [f for f in glob(pjoin('IPython','extensions','igrid_help.*')) if isfile(f)]
 
     # For nested structures, use the utility above
     example_files = make_dir_struct(
commit 41d1bc184294be826f52a296a4eac0a055686f35
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 16:09:17 2012 -0700

    PR 2384 to whatsnew

diff --git a/docs/source/whatsnew/version0.13.txt b/docs/source/whatsnew/version0.13.txt
index cb1a887..37c9f9e 100644
--- a/docs/source/whatsnew/version0.13.txt
+++ b/docs/source/whatsnew/version0.13.txt
@@ -18,11 +18,12 @@ Notable fixes:
 * Tab completion fixes when using ``IPython.embed_kernel()``.
 * A few NameErrors/AttributeErrors in magics due to the reorganized magics system.
 
-We closed a total of 59 issues (38 pull requests and 21 regular issues);
+We closed a total of 60 issues (39 pull requests and 21 regular issues);
 this is the full list (generated with the script :file:`tools/github_stats.py`):
 
-Pull Requests (38):
+Pull Requests (39):
 
+* :ghpull:`2384`: Adapt inline backend to changes in matplotlib
 * :ghpull:`2479`: use new _winapi instead of removed _subprocess
 * :ghpull:`2437`: don't let log cleanup prevent engine start
 * :ghpull:`2405`: clarify TaskScheduler.hwm doc

commit 8a2ea35361159d2b45c0402832b4ad39256fc342
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 16:05:50 2012 -0700

    mark 0.13.1.rc2

diff --git a/IPython/core/release.py b/IPython/core/release.py
index 0da132a..d536b98 100644
--- a/IPython/core/release.py
+++ b/IPython/core/release.py
@@ -23,7 +23,7 @@ _version_major = 0
 _version_minor = 13
 _version_micro = 1  # use '' for first of series, number for 1 and above
 # _version_extra = 'dev'
-_version_extra = 'rc1'
+_version_extra = 'rc2'
 # _version_extra = ''  # Uncomment this for full releases
 
 # Construct full version string from these.

commit 7d16877a0b99771e473cb9005b11593a0f37e4aa
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 16:04:57 2012 -0700

    Backport PR #2384: Adapt inline backend to changes in matplotlib
    
    Matplotlib recently merged https://github.com/matplotlib/matplotlib/pull/1125 that makes it simpler to use
    objective oriented figure creation by automatically creating the right canvas for the backend. To solve that
    all backends must provide a backend_xxx.FigureCanvas. This is obviosly missing from the inline backend.
    
    The change is needed to make the inline backend work with mpl's 1.2.x branch which is due to released soon. Simply setting the default canvas equal to a Agg canvas appears to work for both svg and png figures but I'm not sure weather that  is the right approach. Should the canvas depend on the figure format and provide a svg canvas for a svg figure? (Note that before this change to matplotlib the canvas from a plt.figure call seams to be a agg type in all cases)
    
    Edit: I made the pull request against 0.13.1 since it would be good to have this in the stable branch for when mpl is released.
    Just let me know and I can rebase it against master

diff --git a/IPython/zmq/pylab/backend_inline.py b/IPython/zmq/pylab/backend_inline.py
index 2401cb9..72e887a 100644
--- a/IPython/zmq/pylab/backend_inline.py
+++ b/IPython/zmq/pylab/backend_inline.py
@@ -10,7 +10,7 @@ import sys
 
 # Third-party imports
 import matplotlib
-from matplotlib.backends.backend_agg import new_figure_manager
+from matplotlib.backends.backend_agg import new_figure_manager, FigureCanvasAgg
 from matplotlib._pylab_helpers import Gcf
 
 # Local imports.
@@ -222,3 +222,7 @@ def send_figure(fig):
         {mime : data}
     )
 
+# Changes to matplotlib in version 1.2 requires a mpl backend to supply a default
+# figurecanvas. This is set here to a Agg canvas
+# See https://github.com/matplotlib/matplotlib/pull/1125
+FigureCanvas = FigureCanvasAgg

commit acc1ee13d9c65b3928061bea0b1953801452a6f9
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 15:42:39 2012 -0700

    mark 0.13.1.rc1

diff --git a/IPython/core/release.py b/IPython/core/release.py
index ed1a0af..0da132a 100644
--- a/IPython/core/release.py
+++ b/IPython/core/release.py
@@ -22,8 +22,8 @@ name = 'ipython'
 _version_major = 0
 _version_minor = 13
 _version_micro = 1  # use '' for first of series, number for 1 and above
-_version_extra = 'dev'
-#_version_extra = 'rc1'
+# _version_extra = 'dev'
+_version_extra = 'rc1'
 # _version_extra = ''  # Uncomment this for full releases
 
 # Construct full version string from these.

commit 6f17ff7862f51495e65fed80d076ffc81597c696
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 15:40:45 2012 -0700

    update 0.13.1 whatsnew lists

diff --git a/docs/source/whatsnew/version0.13.txt b/docs/source/whatsnew/version0.13.txt
index 5f19317..cb1a887 100644
--- a/docs/source/whatsnew/version0.13.txt
+++ b/docs/source/whatsnew/version0.13.txt
@@ -7,7 +7,7 @@ Release 0.13.1
 
 0.13.1 is a bugfix release for 0.13.
 
-Notable:
+Notable fixes:
 
 * ipcluster launchers were released with a few serious bugs in 0.13, preventing
   the default configuration from working in just about any nontrivial environment
@@ -18,11 +18,15 @@ Notable:
 * Tab completion fixes when using ``IPython.embed_kernel()``.
 * A few NameErrors/AttributeErrors in magics due to the reorganized magics system.
 
-We closed a total of 52 issues, 34 pull requests and 18 regular issues;
+We closed a total of 59 issues (38 pull requests and 21 regular issues);
 this is the full list (generated with the script :file:`tools/github_stats.py`):
 
-Pull Requests (34):
+Pull Requests (38):
 
+* :ghpull:`2479`: use new _winapi instead of removed _subprocess
+* :ghpull:`2437`: don't let log cleanup prevent engine start
+* :ghpull:`2405`: clarify TaskScheduler.hwm doc
+* :ghpull:`2377`: Fix installation of man pages in Python 3
 * :ghpull:`2373`: fix missing imports in core.interactiveshell
 * :ghpull:`2365`: fix names of notebooks for download/save
 * :ghpull:`2345`: Remove references to 'version' no longer in argparse. Github issue #2343.
@@ -58,8 +62,11 @@ Pull Requests (34):
 * :ghpull:`2061`: use explicit tuple in exception
 * :ghpull:`2060`: change minus to \- or \(hy in manpages
 
-Issues (18):
+Issues (21):
 
+* :ghissue:`2471`: _subprocess module removed in Python 3.3
+* :ghissue:`2374`: Issues with man pages
+* :ghissue:`2435`: ipengines fail if clean_logs enabled
 * :ghissue:`2372`: interactiveshell.py misses urllib and io_open imports
 * :ghissue:`2227`: print name for IPython Notebooks has become uninformative
 * :ghissue:`2343`: Installing in a python 3.3b2 or python 3.3rc1 virtual environment.

commit bbd44856ff844fa6f7fa81c798a8bbc91a81ade6
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 14:50:27 2012 -0700

    Backport PR #2479: use new _winapi instead of removed _subprocess
    
    `_subprocess` is removed in Python 3.3, and the relevant names relocated to a new `_winapi` module.
    
    closes #2471
    
    should be back ported to 0.13.1 because all zmq-based IPython will fail on win/py3.3 without it.
    
    ref: http://bugs.python.org/issue11750

diff --git a/IPython/zmq/entry_point.py b/IPython/zmq/entry_point.py
index ca85a44..7dab631 100644
--- a/IPython/zmq/entry_point.py
+++ b/IPython/zmq/entry_point.py
@@ -179,8 +179,12 @@ def base_launch_kernel(code, fname, stdin=None, stdout=None, stderr=None,
                          creationflags=512, # CREATE_NEW_PROCESS_GROUP
                          stdin=_stdin, stdout=_stdout, stderr=_stderr)
         else:
-            from _subprocess import DuplicateHandle, GetCurrentProcess, \
-                DUPLICATE_SAME_ACCESS
+            try:
+                from _winapi import DuplicateHandle, GetCurrentProcess, \
+                    DUPLICATE_SAME_ACCESS
+            except:
+                from _subprocess import DuplicateHandle, GetCurrentProcess, \
+                    DUPLICATE_SAME_ACCESS
             pid = GetCurrentProcess()
             handle = DuplicateHandle(pid, pid, pid, 0,
                                      True, # Inheritable by new processes.
diff --git a/IPython/zmq/parentpoller.py b/IPython/zmq/parentpoller.py
index dec2e7b..343f297 100644
--- a/IPython/zmq/parentpoller.py
+++ b/IPython/zmq/parentpoller.py
@@ -100,7 +100,10 @@ class ParentPollerWindows(Thread):
     def run(self):
         """ Run the poll loop. This method never returns.
         """
-        from _subprocess import WAIT_OBJECT_0, INFINITE
+        try:
+            from _winapi import WAIT_OBJECT_0, INFINITE
+        except ImportError:
+            from _subprocess import WAIT_OBJECT_0, INFINITE
 
         # Build the list of handle to listen on.
         handles = []

commit 4a473095480665305b94e6c6160375a0415ba7d2
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 12:31:30 2012 -0700

    Backport PR #2437: don't let log cleanup prevent engine start
    
    closes #2435

diff --git a/IPython/parallel/apps/baseapp.py b/IPython/parallel/apps/baseapp.py
index 071a06d..684ff2f 100644
--- a/IPython/parallel/apps/baseapp.py
+++ b/IPython/parallel/apps/baseapp.py
@@ -169,8 +169,13 @@ class BaseParallelApplication(BaseIPythonApplication):
         log_dir = self.profile_dir.log_dir
         if self.clean_logs:
             for f in os.listdir(log_dir):
-                if re.match(r'%s-\d+\.(log|err|out)'%self.name,f):
-                    os.remove(os.path.join(log_dir, f))
+                if re.match(r'%s-\d+\.(log|err|out)' % self.name, f):
+                    try:
+                        os.remove(os.path.join(log_dir, f))
+                    except (OSError, IOError):
+                        # probably just conflict from sibling process
+                        # already removing it
+                        pass
         if self.log_to_file:
             # Start logging to the new log file
             log_filename = self.name + u'-' + str(os.getpid()) + u'.log'

commit 750c862684965f442e7e3221d6bca04b2cae21d6
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 12:31:22 2012 -0700

    Backport PR #2405: clarify TaskScheduler.hwm doc
    
    changes version inequality to 0.13, where the change happened,
    and clarifies that the code block is an example for a config file.

diff --git a/docs/source/parallel/parallel_task.txt b/docs/source/parallel/parallel_task.txt
index 9871bca..85ed0f3 100644
--- a/docs/source/parallel/parallel_task.txt
+++ b/docs/source/parallel/parallel_task.txt
@@ -386,19 +386,20 @@ weighted: Weighted Two-Bin Random
 Greedy Assignment
 -----------------
 
-Tasks are assigned greedily as they are submitted. If their dependencies are
+Tasks can be assigned greedily as they are submitted. If their dependencies are
 met, they will be assigned to an engine right away, and multiple tasks can be
 assigned to an engine at a given time. This limit is set with the
-``TaskScheduler.hwm`` (high water mark) configurable:
+``TaskScheduler.hwm`` (high water mark) configurable in your
+:file:`ipcontroller_config.py` config file, with:
 
 .. sourcecode:: python
 
     # the most common choices are:
-    c.TaskSheduler.hwm = 0 # (minimal latency, default in IPython â?¤ 0.12)
+    c.TaskSheduler.hwm = 0 # (minimal latency, default in IPython < 0.13)
     # or
-    c.TaskScheduler.hwm = 1 # (most-informed balancing, default in > 0.12)
+    c.TaskScheduler.hwm = 1 # (most-informed balancing, default in â?¥ 0.13)
 
-In IPython â?¤ 0.12,the default is 0, or no-limit. That is, there is no limit to the number of
+In IPython < 0.13, the default is 0, or no-limit. That is, there is no limit to the number of
 tasks that can be outstanding on a given engine. This greatly benefits the
 latency of execution, because network traffic can be hidden behind computation.
 However, this means that workload is assigned without knowledge of how long
@@ -406,10 +407,10 @@ each task might take, and can result in poor load-balancing, particularly for
 submitting a collection of heterogeneous tasks all at once. You can limit this
 effect by setting hwm to a positive integer, 1 being maximum load-balancing (a
 task will never be waiting if there is an idle engine), and any larger number
-being a compromise between load-balance and latency-hiding.
+being a compromise between load-balancing and latency-hiding.
 
 In practice, some users have been confused by having this optimization on by
-default, and the default value has been changed to 1. This can be slower,
+default, so the default value has been changed to 1 in IPython 0.13. This can be slower,
 but has more obvious behavior and won't result in assigning too many tasks to
 some engines in heterogeneous cases.
 

commit fcc0c73ec0bb88a6978727dd118b98afd4da184f
Author: MinRK <benjaminrk@gmail.com>
Date:   Thu Oct 11 12:31:10 2012 -0700

    Backport PR #2377: Fix installation of man pages in Python 3
    
    This fixes a bug that caused man pages to not be installed in Python 3 when running from the source tree. The issue was that in Python 3, an empty filter is not an empty list, so ``if not manpages`` could not be satisfied. By using ``list()``, we can ensure that we convert the filter iterator to a list in Python 3. This partially fixes #2374.

diff --git a/setupbase.py b/setupbase.py
index d253e3a..29df1d1 100644
--- a/setupbase.py
+++ b/setupbase.py
@@ -204,12 +204,12 @@ def find_data_files():
     manpagebase = pjoin('share', 'man', 'man1')
 
     # Simple file lists can be made by hand
-    manpages  = filter(isfile, glob(pjoin('docs','man','*.1.gz')))
+    manpages = [f for f in glob(pjoin('docs','man','*.1.gz')) if isfile(f)]
     if not manpages:
         # When running from a source tree, the manpages aren't gzipped
-        manpages = filter(isfile, glob(pjoin('docs','man','*.1')))
-    igridhelpfiles = filter(isfile,
-                            glob(pjoin('IPython','extensions','igrid_help.*')))
+        manpages = [f for f in glob(pjoin('docs','man','*.1')) if isfile(f)]
+
+    igridhelpfiles = [f for f in glob(pjoin('IPython','extensions','igrid_help.*')) if isfile(f)]
 
     # For nested structures, use the utility above
     example_files = make_dir_struct(

commit e567806ffc070b4e968791a2983da345d0398836
Author: MinRK <benjaminrk@gmail.com>
Date:   Mon Sep 3 18:10:28 2012 -0700

    start 0.13.1 whatsnew

diff --git a/docs/source/whatsnew/version0.13.txt b/docs/source/whatsnew/version0.13.txt
index 32aa1bc..5f19317 100644
--- a/docs/source/whatsnew/version0.13.txt
+++ b/docs/source/whatsnew/version0.13.txt
@@ -2,6 +2,84 @@
  0.13 Series
 =============
 
+Release 0.13.1
+==============
+
+0.13.1 is a bugfix release for 0.13.
+
+Notable:
+
+* ipcluster launchers were released with a few serious bugs in 0.13, preventing
+  the default configuration from working in just about any nontrivial environment
+  (SSH and PBS/SGE/LSF launchers all affected).
+* Various installation / name fixes required for Python 3.3.
+* Notebook frontend should no longer be vulnerable to errors in user javascript.
+* Notebook download/save/print should get the right title instead of 'notebook'.
+* Tab completion fixes when using ``IPython.embed_kernel()``.
+* A few NameErrors/AttributeErrors in magics due to the reorganized magics system.
+
+We closed a total of 52 issues, 34 pull requests and 18 regular issues;
+this is the full list (generated with the script :file:`tools/github_stats.py`):
+
+Pull Requests (34):
+
+* :ghpull:`2373`: fix missing imports in core.interactiveshell
+* :ghpull:`2365`: fix names of notebooks for download/save
+* :ghpull:`2345`: Remove references to 'version' no longer in argparse. Github issue #2343.
+* :ghpull:`2347`: adjust division error message checking to account for Python 3
+* :ghpull:`2305`: RemoteError._render_traceback_ calls self.render_traceback
+* :ghpull:`2280`: fix SSH passwordless check for OpenSSH
+* :ghpull:`2270`: SSHLauncher tweaks
+* :ghpull:`2261`: Fix: longest_substr([]) -> ''
+* :ghpull:`2250`: fix html in notebook example
+* :ghpull:`2235`: remove spurious print statement from setupbase.py
+* :ghpull:`2223`: Custom tracebacks
+* :ghpull:`2214`: use KernelApp.exec_lines/files in IPEngineApp
+* :ghpull:`2212`: catch errors in markdown javascript
+* :ghpull:`2194`: clean nan/inf in json_clean
+* :ghpull:`2169`: ipdb: pdef, pdoc, pinfo magics all broken
+* :ghpull:`2186`: removed references to h5py dependence in octave magic documentation
+* :ghpull:`2185`: added test for %store, fixed storemagic
+* :ghpull:`2177`: remove numpy install from travis/tox scripts
+* :ghpull:`2170`: Fix tab completion with IPython.embed_kernel().
+* :ghpull:`2163`: fix 'remote_profie_dir' typo in SSH launchers
+* :ghpull:`2117`: use explicit url in notebook example
+* :ghpull:`2126`: ipcluster broken with any batch launcher (PBS/LSF/SGE)
+* :ghpull:`2128`: open notebook copy in different tabs
+* :ghpull:`2073`: allows password and prefix for notebook
+* :ghpull:`2086`: re-alias %ed to %edit in qtconsole
+* :ghpull:`2101`: fix completer deleting newline
+* :ghpull:`2102`: Fix logging on interactive shell.
+* :ghpull:`2063`: Remove umlauts so py3 installations on LANG=C systems succeed.
+* :ghpull:`2068`: record sysinfo in sdist
+* :ghpull:`2067`: update tools/release_windows.py
+* :ghpull:`2065`: Fix parentheses typo
+* :ghpull:`2062`: Remove duplicates and auto-generated files from repo.
+* :ghpull:`2061`: use explicit tuple in exception
+* :ghpull:`2060`: change minus to \- or \(hy in manpages
+
+Issues (18):
+
+* :ghissue:`2372`: interactiveshell.py misses urllib and io_open imports
+* :ghissue:`2227`: print name for IPython Notebooks has become uninformative
+* :ghissue:`2343`: Installing in a python 3.3b2 or python 3.3rc1 virtual environment.
+* :ghissue:`2303`:  remote tracebacks broken since 952d0d6 (PR #2223)
+* :ghissue:`2266`: SSH passwordless check with OpenSSH checks for the wrong thing
+* :ghissue:`2252`: %paste throws an exception with empty clipboard
+* :ghissue:`2221`: Avoid importing from IPython.parallel in core
+* :ghissue:`2213`: Can't trigger startup code in Engines
+* :ghissue:`2187`: NaN in object_info_reply JSON causes parse error
+* :ghissue:`2173`: oct2py v >= 0.3.1 doesn't need h5py anymore
+* :ghissue:`2099`: storemagic needs to use self.shell
+* :ghissue:`2139`: 00_notebook_tour Image example broken on master
+* :ghissue:`2085`: %ed magic fails in qtconsole
+* :ghissue:`2082`: Qt Console output spacing
+* :ghissue:`2057`: setup fails for python3 with LANG=C
+* :ghissue:`2059`: duplicate and modified files in documentation
+* :ghissue:`2056`: except-shadows-builtin osm.py:687
+* :ghissue:`2058`: hyphen-used-as-minus-sign in manpages
+
+
 Release 0.13
 ============
 

Reply to: