File tree Expand file tree Collapse file tree 1 file changed +10
-10
lines changed
Expand file tree Collapse file tree 1 file changed +10
-10
lines changed Original file line number Diff line number Diff line change 2929
3030import sys
3131import os
32+ import io
3233import socket
3334import select
3435import socketserver
@@ -53,16 +54,15 @@ def pickle_code(co):
5354 ms = marshal .dumps (co )
5455 return unpickle_code , (ms ,)
5556
56- # XXX KBK 24Aug02 function pickling capability not used in Idle
57- # def unpickle_function(ms):
58- # return ms
57+ def dumps (obj , protocol = None ):
58+ f = io .BytesIO ()
59+ p = CodePickler (f , protocol )
60+ p .dump (obj )
61+ return f .getvalue ()
5962
60- # def pickle_function(fn):
61- # assert isinstance(fn, type.FunctionType)
62- # return repr(fn)
63-
64- copyreg .pickle (types .CodeType , pickle_code , unpickle_code )
65- # copyreg.pickle(types.FunctionType, pickle_function, unpickle_function)
63+ class CodePickler (pickle .Pickler ):
64+ dispatch_table = {types .CodeType : pickle_code }
65+ dispatch_table .update (copyreg .dispatch_table )
6666
6767BUFSIZE = 8 * 1024
6868LOCALHOST = '127.0.0.1'
@@ -329,7 +329,7 @@ def newseq(self):
329329 def putmessage (self , message ):
330330 self .debug ("putmessage:%d:" % message [0 ])
331331 try :
332- s = pickle . dumps (message )
332+ s = dumps (message )
333333 except pickle .PicklingError :
334334 print ("Cannot pickle:" , repr (message ), file = sys .__stderr__ )
335335 raise
You can’t perform that action at this time.
0 commit comments