mirror of https://github.com/python/cpython
Issue #17025: Add dumps() and loads() to ForkingPickler.
This commit is contained in:
parent
89e6b31845
commit
a655075d16
|
@ -12,7 +12,6 @@ __all__ = [ 'Client', 'Listener', 'Pipe', 'wait' ]
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import pickle
|
|
||||||
import select
|
import select
|
||||||
import socket
|
import socket
|
||||||
import struct
|
import struct
|
||||||
|
@ -202,9 +201,7 @@ class _ConnectionBase:
|
||||||
"""Send a (picklable) object"""
|
"""Send a (picklable) object"""
|
||||||
self._check_closed()
|
self._check_closed()
|
||||||
self._check_writable()
|
self._check_writable()
|
||||||
buf = io.BytesIO()
|
self._send_bytes(ForkingPickler.dumps(obj))
|
||||||
ForkingPickler(buf, pickle.HIGHEST_PROTOCOL).dump(obj)
|
|
||||||
self._send_bytes(buf.getbuffer())
|
|
||||||
|
|
||||||
def recv_bytes(self, maxlength=None):
|
def recv_bytes(self, maxlength=None):
|
||||||
"""
|
"""
|
||||||
|
@ -249,7 +246,7 @@ class _ConnectionBase:
|
||||||
self._check_closed()
|
self._check_closed()
|
||||||
self._check_readable()
|
self._check_readable()
|
||||||
buf = self._recv_bytes()
|
buf = self._recv_bytes()
|
||||||
return pickle.loads(buf.getbuffer())
|
return ForkingPickler.loads(buf.getbuffer())
|
||||||
|
|
||||||
def poll(self, timeout=0.0):
|
def poll(self, timeout=0.0):
|
||||||
"""Whether there is any input available to be read"""
|
"""Whether there is any input available to be read"""
|
||||||
|
|
|
@ -7,7 +7,9 @@
|
||||||
# Licensed to PSF under a Contributor Agreement.
|
# Licensed to PSF under a Contributor Agreement.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import io
|
||||||
import os
|
import os
|
||||||
|
import pickle
|
||||||
import sys
|
import sys
|
||||||
import signal
|
import signal
|
||||||
import errno
|
import errno
|
||||||
|
@ -44,6 +46,15 @@ class ForkingPickler(Pickler):
|
||||||
def register(cls, type, reduce):
|
def register(cls, type, reduce):
|
||||||
cls._extra_reducers[type] = reduce
|
cls._extra_reducers[type] = reduce
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def dumps(obj):
|
||||||
|
buf = io.BytesIO()
|
||||||
|
ForkingPickler(buf, pickle.HIGHEST_PROTOCOL).dump(obj)
|
||||||
|
return buf.getbuffer()
|
||||||
|
|
||||||
|
loads = pickle.loads
|
||||||
|
|
||||||
|
|
||||||
def _reduce_method(m):
|
def _reduce_method(m):
|
||||||
if m.__self__ is None:
|
if m.__self__ is None:
|
||||||
return getattr, (m.__class__, m.__func__.__name__)
|
return getattr, (m.__class__, m.__func__.__name__)
|
||||||
|
|
Loading…
Reference in New Issue