##// END OF EJS Templates
more docs on building docs
more docs on building docs

File last commit:

r16506:e56ff8b2
r20903:09c0c94e
Show More
codeutil.py
34 lines | 1.1 KiB | text/x-python | PythonLexer
MinRK
codeutil into zmq, to prevent IPython.kernel import
r3557 # 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
Bernardo B. Marques
remove all trailling spaces
r4872 includes the func_code attribute of any function. Once unpickled, new
MinRK
codeutil into zmq, to prevent IPython.kernel import
r3557 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
"""
MinRK
handle simple closures in pickleutil...
r16506 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
MinRK
codeutil into zmq, to prevent IPython.kernel import
r3557
MinRK
update parallel code for py3k...
r4155 import sys
Thomas Kluyver
Update imports for Python 3...
r13354 import types
try:
import copyreg # Py 3
except ImportError:
import copy_reg as copyreg # Py 2
MinRK
codeutil into zmq, to prevent IPython.kernel import
r3557
def code_ctor(*args):
MinRK
cleanup per review...
r4161 return types.CodeType(*args)
Bernardo B. Marques
remove all trailling spaces
r4872
MinRK
codeutil into zmq, to prevent IPython.kernel import
r3557 def reduce_code(co):
MinRK
update parallel code for py3k...
r4155 args = [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,
MinRK
handle simple closures in pickleutil...
r16506 co.co_lnotab, co.co_freevars, co.co_cellvars]
MinRK
update parallel code for py3k...
r4155 if sys.version_info[0] >= 3:
args.insert(1, co.co_kwonlyargcount)
return code_ctor, tuple(args)
MinRK
codeutil into zmq, to prevent IPython.kernel import
r3557
Thomas Kluyver
Update imports for Python 3...
r13354 copyreg.pickle(types.CodeType, reduce_code)