Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files

codeutil into zmq, to prevent IPython.kernel import

  • Loading branch information...
1 parent b8dd49c commit f2c5960c7dd32464f562cb41bb426799c63de40a @minrk minrk committed
39 IPython/zmq/
@@ -0,0 +1,39 @@
+# encoding: utf-8
+"""Utilities to enable code objects to be pickled.
+Any process that import this module will be able to pickle code objects. This
+includes the func_code attribute of any function. Once unpickled, new
+functions can be built using new.function(code, globals()). Eventually
+we need to automate all of this so that functions themselves can be pickled.
+Reference: A. Tremols, P Cogolo, "Python Cookbook," p 302-305
+__docformat__ = "restructuredtext en"
+# Copyright (C) 2008 The IPython Development Team
+# Distributed under the terms of the BSD License. The full license is in
+# the file COPYING, distributed as part of this software.
+# Imports
+import new, types, copy_reg
+def code_ctor(*args):
+ return new.code(*args)
+def reduce_code(co):
+ if co.co_freevars or co.co_cellvars:
+ raise ValueError("Sorry, cannot pickle code objects with closures")
+ return code_ctor, (co.co_argcount, co.co_nlocals, co.co_stacksize,
+ co.co_flags, co.co_code, co.co_consts, co.co_names,
+ co.co_varnames, co.co_filename, co.co_name, co.co_firstlineno,
+ co.co_lnotab)
+copy_reg.pickle(types.CodeType, reduce_code)
6 IPython/zmq/
@@ -21,15 +21,13 @@
import cPickle as pickle
-# from twisted.python import components
-# from zope.interface import Interface, implements
import numpy
except ImportError:
-from IPython.kernel.error import SerializationError
+class SerializationError(Exception):
+ pass
# Classes and functions
2  IPython/zmq/
@@ -18,8 +18,8 @@
from types import FunctionType
# contents of codeutil should either be in here, or codeutil belongs in IPython/util
-from IPython.kernel import codeutil
from IPython.zmq.parallel.dependency import dependent
+import codeutil
class CannedObject(object):
def __init__(self, obj, keys=[]):

0 comments on commit f2c5960

Please sign in to comment.
Something went wrong with that request. Please try again.