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.deb...@googlemail.com> Sat, 01 Sep 2012 13:56:37 +0200 + -- Julian Taylor <jtaylor.deb...@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.deb...@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 <benjami...@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 <benjami...@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 <benjami...@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 <benjami...@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 <benjami...@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 <benjami...@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 <benjami...@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 <benjami...@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 <benjami...@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 <benjami...@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 ============