Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

codeutil into zmq, to prevent IPython.kernel import

  • Loading branch information...
commit f2c5960c7dd32464f562cb41bb426799c63de40a 1 parent b8dd49c
@minrk minrk authored
View
39 IPython/zmq/codeutil.py
@@ -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)
View
6 IPython/zmq/newserialized.py
@@ -21,15 +21,13 @@
import cPickle as pickle
-# from twisted.python import components
-# from zope.interface import Interface, implements
-
try:
import numpy
except ImportError:
pass
-from IPython.kernel.error import SerializationError
+class SerializationError(Exception):
+ pass
#-----------------------------------------------------------------------------
# Classes and functions
View
2  IPython/zmq/pickleutil.py
@@ -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=[]):
Please sign in to comment.
Something went wrong with that request. Please try again.