| 
									
										
										
										
											2000-09-15 15:14:51 +00:00
										 |  |  | import pickle | 
					
						
							| 
									
										
										
										
											2001-12-19 16:42:15 +00:00
										 |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2001-10-15 21:38:56 +00:00
										 |  |  | from cStringIO import StringIO | 
					
						
							| 
									
										
										
										
											2003-01-28 22:34:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-07-23 19:04:11 +00:00
										 |  |  | from test import test_support | 
					
						
							| 
									
										
										
										
											2001-10-15 21:38:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-28 22:34:11 +00:00
										 |  |  | from test.pickletester import AbstractPickleTests | 
					
						
							|  |  |  | from test.pickletester import AbstractPickleModuleTests | 
					
						
							|  |  |  | from test.pickletester import AbstractPersistentPicklerTests | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-15 03:01:11 +00:00
										 |  |  | class PickleTests(AbstractPickleTests, AbstractPickleModuleTests): | 
					
						
							| 
									
										
										
										
											2001-10-15 21:38:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-29 17:58:45 +00:00
										 |  |  |     def dumps(self, arg, proto=0, fast=0): | 
					
						
							|  |  |  |         # Ignore fast | 
					
						
							|  |  |  |         return pickle.dumps(arg, proto) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def loads(self, buf): | 
					
						
							|  |  |  |         # Ignore fast | 
					
						
							|  |  |  |         return pickle.loads(buf) | 
					
						
							| 
									
										
										
										
											2001-10-18 21:57:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-15 21:38:56 +00:00
										 |  |  |     module = pickle | 
					
						
							|  |  |  |     error = KeyError | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PicklerTests(AbstractPickleTests): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     error = KeyError | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-29 17:58:45 +00:00
										 |  |  |     def dumps(self, arg, proto=0, fast=0): | 
					
						
							| 
									
										
										
										
											2001-10-15 21:38:56 +00:00
										 |  |  |         f = StringIO() | 
					
						
							| 
									
										
										
										
											2003-01-28 03:51:53 +00:00
										 |  |  |         p = pickle.Pickler(f, proto) | 
					
						
							| 
									
										
										
										
											2003-01-29 17:58:45 +00:00
										 |  |  |         if fast: | 
					
						
							|  |  |  |             p.fast = fast | 
					
						
							| 
									
										
										
										
											2001-10-15 21:38:56 +00:00
										 |  |  |         p.dump(arg) | 
					
						
							|  |  |  |         f.seek(0) | 
					
						
							|  |  |  |         return f.read() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def loads(self, buf): | 
					
						
							|  |  |  |         f = StringIO(buf) | 
					
						
							|  |  |  |         u = pickle.Unpickler(f) | 
					
						
							|  |  |  |         return u.load() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-13 22:01:27 +00:00
										 |  |  | class PersPicklerTests(AbstractPersistentPicklerTests): | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-29 17:58:45 +00:00
										 |  |  |     def dumps(self, arg, proto=0, fast=0): | 
					
						
							| 
									
										
										
										
											2002-11-13 22:01:27 +00:00
										 |  |  |         class PersPickler(pickle.Pickler): | 
					
						
							|  |  |  |             def persistent_id(subself, obj): | 
					
						
							|  |  |  |                 return self.persistent_id(obj) | 
					
						
							|  |  |  |         f = StringIO() | 
					
						
							| 
									
										
										
										
											2003-01-28 03:51:53 +00:00
										 |  |  |         p = PersPickler(f, proto) | 
					
						
							| 
									
										
										
										
											2003-01-29 17:58:45 +00:00
										 |  |  |         if fast: | 
					
						
							|  |  |  |             p.fast = fast | 
					
						
							| 
									
										
										
										
											2002-11-13 22:01:27 +00:00
										 |  |  |         p.dump(arg) | 
					
						
							|  |  |  |         f.seek(0) | 
					
						
							|  |  |  |         return f.read() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def loads(self, buf): | 
					
						
							|  |  |  |         class PersUnpickler(pickle.Unpickler): | 
					
						
							|  |  |  |             def persistent_load(subself, obj): | 
					
						
							|  |  |  |                 return self.persistent_load(obj) | 
					
						
							|  |  |  |         f = StringIO(buf) | 
					
						
							|  |  |  |         u = PersUnpickler(f) | 
					
						
							|  |  |  |         return u.load() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-19 16:42:15 +00:00
										 |  |  | def test_main(): | 
					
						
							| 
									
										
										
										
											2003-05-01 17:45:56 +00:00
										 |  |  |     test_support.run_unittest( | 
					
						
							|  |  |  |         PickleTests, | 
					
						
							|  |  |  |         PicklerTests, | 
					
						
							|  |  |  |         PersPicklerTests | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2003-01-30 21:27:37 +00:00
										 |  |  |     test_support.run_doctest(pickle) | 
					
						
							| 
									
										
										
										
											2001-12-19 16:42:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-15 21:38:56 +00:00
										 |  |  | if __name__ == "__main__": | 
					
						
							| 
									
										
										
										
											2001-12-19 16:42:15 +00:00
										 |  |  |     test_main() |