Author: Brian Kearns <[email protected]>
Branch: py3k
Changeset: r62205:a7f2fbea4eaf
Date: 2013-03-07 22:44 -0500
http://bitbucket.org/pypy/pypy/changeset/a7f2fbea4eaf/

Log:    use struct.pack for datetime getstate (faster, works in both
        py2/py3)

diff --git a/lib-python/3/datetime.py b/lib-python/3/datetime.py
--- a/lib-python/3/datetime.py
+++ b/lib-python/3/datetime.py
@@ -18,6 +18,7 @@
 
 import time as _time
 import math as _math
+import struct as _struct
 
 def _cmp(x, y):
     return 0 if x == y else 1 if x > y else -1
@@ -929,7 +930,7 @@
 
     def _getstate(self):
         yhi, ylo = divmod(self._year, 256)
-        return bytes([yhi, ylo, self._month, self._day]),
+        return (_struct.pack('4B', yhi, ylo, self._month, self._day),)
 
     def __setstate(self, string):
         if len(string) != 4 or not (1 <= string[2] <= 12):
@@ -1300,8 +1301,8 @@
     def _getstate(self):
         us2, us3 = divmod(self._microsecond, 256)
         us1, us2 = divmod(us2, 256)
-        basestate = bytes([self._hour, self._minute, self._second,
-                           us1, us2, us3])
+        basestate = _struct.pack('6B', self._hour, self._minute, self._second,
+                                       us1, us2, us3)
         if self._tzinfo is None:
             return (basestate,)
         else:
@@ -1774,9 +1775,9 @@
         yhi, ylo = divmod(self._year, 256)
         us2, us3 = divmod(self._microsecond, 256)
         us1, us2 = divmod(us2, 256)
-        basestate = bytes([yhi, ylo, self._month, self._day,
-                           self._hour, self._minute, self._second,
-                           us1, us2, us3])
+        basestate = _struct.pack('10B', yhi, ylo, self._month, self._day,
+                                        self._hour, self._minute, self._second,
+                                        us1, us2, us3)
         if self._tzinfo is None:
             return (basestate,)
         else:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to