44import shelve
55import pickle
66import os
7- from io import BytesIO
87
98from test .support import import_helper , os_helper
109from collections .abc import MutableMapping
@@ -183,8 +182,7 @@ def serializer(obj, protocol):
183182
184183 def deserializer (data ):
185184 if isinstance (data , (bytes , bytearray , str )):
186- value = BytesIO (data ).read ()
187- return value .decode ("utf-8" )
185+ return data .decode ("utf-8" )
188186 elif isinstance (data , array .array ):
189187 return array .array ("b" , data )
190188 else :
@@ -240,14 +238,14 @@ def serializer(obj, protocol=None):
240238 pass
241239
242240 def deserializer (data ):
243- return BytesIO ( data ). read () .decode ("utf-8" )
241+ return data .decode ("utf-8" )
244242
245243 with shelve .open (self .fn , serializer = serializer ,
246244 deserializer = deserializer ) as s :
247245 s ["foo" ] = "bar"
248246
249247 def serializer (obj , protocol = None ):
250- return bytes ( type (obj ).__name__ , ' utf-8' )
248+ return type (obj ).__name__ . encode ( " utf-8" )
251249
252250 def deserializer (data ):
253251 pass
@@ -262,14 +260,13 @@ def test_custom_serializer_and_deserializer_bsd_db_shelf(self):
262260 berkeleydb = import_helper .import_module ("berkeleydb" )
263261
264262 def serializer (obj , protocol = None ):
263+ data = obj .__class__ .__name__
265264 if protocol == 5 :
266- return bytes (f"{ len (type (obj ).__name__ )} " , encoding = "utf-8" )
267- else :
268- return bytes (f"{ type (obj ).__name__ } " , "utf-8" )
265+ data = str (len (data ))
266+ return data .encode ("utf-8" )
269267
270268 def deserializer (data ):
271- value = BytesIO (data ).read ()
272- return value .decode ("utf-8" )
269+ return data .decode ("utf-8" )
273270
274271 os .mkdir (self .dirname )
275272 self .addCleanup (os_helper .rmtree , self .dirname )
@@ -384,9 +381,11 @@ def deserializer(data):
384381
385382 def test_custom_incomplete_serializer_and_deserializer_bsd_db_shelf (self ):
386383 berkeleydb = import_helper .import_module ("berkeleydb" )
384+ os .mkdir (self .dirname )
385+ self .addCleanup (os_helper .rmtree , self .dirname )
387386
388387 def serializer (obj , protocol = None ):
389- return bytes ( type (obj ).__name__ , ' utf-8' )
388+ return type (obj ).__name__ . encode ( " utf-8" )
390389
391390 def deserializer (data ):
392391 pass
@@ -402,7 +401,7 @@ def serializer(obj, protocol=None):
402401 pass
403402
404403 def deserializer (data ):
405- return BytesIO ( data ). read () .decode ("utf-8" )
404+ return data .decode ("utf-8" )
406405
407406 with shelve .BsdDbShelf (berkeleydb .btopen (self .fn ),
408407 serializer = serializer ,
0 commit comments