mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Changes sufficient so that pickles written by the Python implementation
can be read by the C implementation. I don't really understand this.
This commit is contained in:
		
							parent
							
								
									f39f59a5f2
								
							
						
					
					
						commit
						fb8472c79c
					
				
					 1 changed files with 15 additions and 9 deletions
				
			
		| 
						 | 
					@ -38,6 +38,10 @@ def tzname(self, dt):
 | 
				
			||||||
    def dst(self, dt):
 | 
					    def dst(self, dt):
 | 
				
			||||||
        return self.__dstoffset
 | 
					        return self.__dstoffset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PicklableFixedOffset(FixedOffset):
 | 
				
			||||||
 | 
					    def __init__(self, offset=None, name=None, dstoffset=None):
 | 
				
			||||||
 | 
					        FixedOffset.__init__(self, offset, name, dstoffset)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestTZInfo(unittest.TestCase):
 | 
					class TestTZInfo(unittest.TestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_non_abstractness(self):
 | 
					    def test_non_abstractness(self):
 | 
				
			||||||
| 
						 | 
					@ -90,9 +94,9 @@ def test_pickling_subclass(self):
 | 
				
			||||||
        import pickle, cPickle
 | 
					        import pickle, cPickle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Make sure we can pickle/unpickle an instance of a subclass.
 | 
					        # Make sure we can pickle/unpickle an instance of a subclass.
 | 
				
			||||||
        orig = FixedOffset(-300, 'cookie')
 | 
					        orig = PicklableFixedOffset(-300, 'cookie')
 | 
				
			||||||
        self.failUnless(isinstance(orig, tzinfo))
 | 
					        self.failUnless(isinstance(orig, tzinfo))
 | 
				
			||||||
        self.failUnless(type(orig) is FixedOffset)
 | 
					        self.failUnless(type(orig) is PicklableFixedOffset)
 | 
				
			||||||
        self.assertEqual(orig.utcoffset(None), -300)
 | 
					        self.assertEqual(orig.utcoffset(None), -300)
 | 
				
			||||||
        self.assertEqual(orig.tzname(None), 'cookie')
 | 
					        self.assertEqual(orig.tzname(None), 'cookie')
 | 
				
			||||||
        for pickler in pickle, cPickle:
 | 
					        for pickler in pickle, cPickle:
 | 
				
			||||||
| 
						 | 
					@ -100,7 +104,7 @@ def test_pickling_subclass(self):
 | 
				
			||||||
                green = pickler.dumps(orig, binary)
 | 
					                green = pickler.dumps(orig, binary)
 | 
				
			||||||
                derived = pickler.loads(green)
 | 
					                derived = pickler.loads(green)
 | 
				
			||||||
                self.failUnless(isinstance(derived, tzinfo))
 | 
					                self.failUnless(isinstance(derived, tzinfo))
 | 
				
			||||||
                self.failUnless(type(derived) is FixedOffset)
 | 
					                self.failUnless(type(derived) is PicklableFixedOffset)
 | 
				
			||||||
                self.assertEqual(derived.utcoffset(None), -300)
 | 
					                self.assertEqual(derived.utcoffset(None), -300)
 | 
				
			||||||
                self.assertEqual(derived.tzname(None), 'cookie')
 | 
					                self.assertEqual(derived.tzname(None), 'cookie')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1606,13 +1610,13 @@ def test_pickling(self):
 | 
				
			||||||
                self.assertEqual(orig, derived)
 | 
					                self.assertEqual(orig, derived)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Try one with a tzinfo.
 | 
					        # Try one with a tzinfo.
 | 
				
			||||||
        tinfo = FixedOffset(-300, 'cookie')
 | 
					        tinfo = PicklableFixedOffset(-300, 'cookie')
 | 
				
			||||||
        orig = self.theclass(5, 6, 7, tzinfo=tinfo)
 | 
					        orig = self.theclass(5, 6, 7, tzinfo=tinfo)
 | 
				
			||||||
        state = orig.__getstate__()
 | 
					        state = orig.__getstate__()
 | 
				
			||||||
        derived = self.theclass()
 | 
					        derived = self.theclass()
 | 
				
			||||||
        derived.__setstate__(state)
 | 
					        derived.__setstate__(state)
 | 
				
			||||||
        self.assertEqual(orig, derived)
 | 
					        self.assertEqual(orig, derived)
 | 
				
			||||||
        self.failUnless(isinstance(derived.tzinfo, FixedOffset))
 | 
					        self.failUnless(isinstance(derived.tzinfo, PicklableFixedOffset))
 | 
				
			||||||
        self.assertEqual(derived.utcoffset(), -300)
 | 
					        self.assertEqual(derived.utcoffset(), -300)
 | 
				
			||||||
        self.assertEqual(derived.tzname(), 'cookie')
 | 
					        self.assertEqual(derived.tzname(), 'cookie')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1621,7 +1625,8 @@ def test_pickling(self):
 | 
				
			||||||
                green = pickler.dumps(orig, binary)
 | 
					                green = pickler.dumps(orig, binary)
 | 
				
			||||||
                derived = pickler.loads(green)
 | 
					                derived = pickler.loads(green)
 | 
				
			||||||
                self.assertEqual(orig, derived)
 | 
					                self.assertEqual(orig, derived)
 | 
				
			||||||
                self.failUnless(isinstance(derived.tzinfo, FixedOffset))
 | 
					                self.failUnless(isinstance(derived.tzinfo,
 | 
				
			||||||
 | 
					                                PicklableFixedOffset))
 | 
				
			||||||
                self.assertEqual(derived.utcoffset(), -300)
 | 
					                self.assertEqual(derived.utcoffset(), -300)
 | 
				
			||||||
                self.assertEqual(derived.tzname(), 'cookie')
 | 
					                self.assertEqual(derived.tzname(), 'cookie')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1767,13 +1772,13 @@ def test_pickling(self):
 | 
				
			||||||
                self.assertEqual(orig, derived)
 | 
					                self.assertEqual(orig, derived)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Try one with a tzinfo.
 | 
					        # Try one with a tzinfo.
 | 
				
			||||||
        tinfo = FixedOffset(-300, 'cookie')
 | 
					        tinfo = PicklableFixedOffset(-300, 'cookie')
 | 
				
			||||||
        orig = self.theclass(*args, **{'tzinfo': tinfo})
 | 
					        orig = self.theclass(*args, **{'tzinfo': tinfo})
 | 
				
			||||||
        state = orig.__getstate__()
 | 
					        state = orig.__getstate__()
 | 
				
			||||||
        derived = self.theclass(1, 1, 1)
 | 
					        derived = self.theclass(1, 1, 1)
 | 
				
			||||||
        derived.__setstate__(state)
 | 
					        derived.__setstate__(state)
 | 
				
			||||||
        self.assertEqual(orig, derived)
 | 
					        self.assertEqual(orig, derived)
 | 
				
			||||||
        self.failUnless(isinstance(derived.tzinfo, FixedOffset))
 | 
					        self.failUnless(isinstance(derived.tzinfo, PicklableFixedOffset))
 | 
				
			||||||
        self.assertEqual(derived.utcoffset(), -300)
 | 
					        self.assertEqual(derived.utcoffset(), -300)
 | 
				
			||||||
        self.assertEqual(derived.tzname(), 'cookie')
 | 
					        self.assertEqual(derived.tzname(), 'cookie')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1782,7 +1787,8 @@ def test_pickling(self):
 | 
				
			||||||
                green = pickler.dumps(orig, binary)
 | 
					                green = pickler.dumps(orig, binary)
 | 
				
			||||||
                derived = pickler.loads(green)
 | 
					                derived = pickler.loads(green)
 | 
				
			||||||
                self.assertEqual(orig, derived)
 | 
					                self.assertEqual(orig, derived)
 | 
				
			||||||
                self.failUnless(isinstance(derived.tzinfo, FixedOffset))
 | 
					                self.failUnless(isinstance(derived.tzinfo,
 | 
				
			||||||
 | 
					                                PicklableFixedOffset))
 | 
				
			||||||
                self.assertEqual(derived.utcoffset(), -300)
 | 
					                self.assertEqual(derived.utcoffset(), -300)
 | 
				
			||||||
                self.assertEqual(derived.tzname(), 'cookie')
 | 
					                self.assertEqual(derived.tzname(), 'cookie')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue