diff --git a/gnu-system.am b/gnu-system.am index 77a8b2e1c5..0039246e4d 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -640,6 +640,7 @@ dist_patch_DATA = \ gnu/packages/patches/python-3-search-paths.patch \ gnu/packages/patches/python-disable-ssl-test.patch \ gnu/packages/patches/python-fix-tests.patch \ + gnu/packages/patches/python-ipython-inputhook-ctype.patch \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python-configobj-setuptools.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ diff --git a/gnu/packages/patches/python-ipython-inputhook-ctype.patch b/gnu/packages/patches/python-ipython-inputhook-ctype.patch new file mode 100644 index 0000000000..c77e310542 --- /dev/null +++ b/gnu/packages/patches/python-ipython-inputhook-ctype.patch @@ -0,0 +1,41 @@ +From 04c5d358c7ab74d3ddab4f7662e539393d8604c6 Mon Sep 17 00:00:00 2001 +From: Lucretiel +Date: Wed, 13 May 2015 13:12:43 -0400 +Subject: [PATCH] register now checks for missing ctypes + +If ctypes is None, then no input hooks may be registered; `InputHookManager.register` skips registration of input hook classes. Also updated `__init__` to no longer skip creating the instance attributes, to prevent AttributeError exceptions at load time. +--- + IPython/lib/inputhook.py | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/IPython/lib/inputhook.py b/IPython/lib/inputhook.py +index 4ae2cb3..6578365 100644 +--- a/IPython/lib/inputhook.py ++++ b/IPython/lib/inputhook.py +@@ -107,8 +107,8 @@ class InputHookManager(object): + def __init__(self): + if ctypes is None: + warn("IPython GUI event loop requires ctypes, %gui will not be available") +- return +- self.PYFUNC = ctypes.PYFUNCTYPE(ctypes.c_int) ++ else: ++ self.PYFUNC = ctypes.PYFUNCTYPE(ctypes.c_int) + self.guihooks = {} + self.aliases = {} + self.apps = {} +@@ -197,10 +197,11 @@ def enable(self, app=None): + ... + """ + def decorator(cls): +- inst = cls(self) +- self.guihooks[toolkitname] = inst +- for a in aliases: +- self.aliases[a] = toolkitname ++ if ctypes is not None: ++ inst = cls(self) ++ self.guihooks[toolkitname] = inst ++ for a in aliases: ++ self.aliases[a] = toolkitname + return cls + return decorator + diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 6a051014f9..95c24a6a43 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4194,11 +4194,12 @@ without using the configuration machinery.") (version "3.2.1") (source (origin - (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/i/" - "ipython/ipython-" version ".tar.gz")) - (sha256 - (base32 "0xwin0sa9n0cabx4cq1ibf5ldsiw5dyimibla82kicz5gbpas4y9")))) + (method url-fetch) + (patches (list (search-patch "python-ipython-inputhook-ctype.patch"))) + (uri (string-append "https://pypi.python.org/packages/source/i/" + "ipython/ipython-" version ".tar.gz")) + (sha256 + (base32 "0xwin0sa9n0cabx4cq1ibf5ldsiw5dyimibla82kicz5gbpas4y9")))) (build-system python-build-system) (outputs '("out" "doc")) (propagated-inputs