[pypy-svn] r75170 - in pypy/trunk/pypy/module/cpyext: . test

afa at codespeak.net afa at codespeak.net
Mon Jun 7 13:30:57 CEST 2010


Author: afa
Date: Mon Jun  7 13:30:56 2010
New Revision: 75170

Modified:
   pypy/trunk/pypy/module/cpyext/datetime.py
   pypy/trunk/pypy/module/cpyext/stubs.py
   pypy/trunk/pypy/module/cpyext/test/test_datetime.py
Log:
PyDateTime_FromTimestamp, PyDate_FromTimestamp


Modified: pypy/trunk/pypy/module/cpyext/datetime.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/datetime.py	(original)
+++ pypy/trunk/pypy/module/cpyext/datetime.py	Mon Jun  7 13:30:56 2010
@@ -79,6 +79,26 @@
         space.wrap(usecond))
     raise NotImplementedError
 
+ at cpython_api([PyObject], PyObject)
+def PyDateTime_FromTimestamp(space, w_args):
+    """Create and return a new datetime.datetime object given an argument tuple
+    suitable for passing to datetime.datetime.fromtimestamp().
+    """
+    w_datetime = PyImport_Import(space, space.wrap("datetime"))
+    w_type = space.getattr(w_datetime, space.wrap("datetime"))
+    w_method = space.getattr(w_type, space.wrap("fromtimestamp"))
+    return space.call(w_method, w_args)
+
+ at cpython_api([PyObject], PyObject)
+def PyDate_FromTimestamp(space, w_args):
+    """Create and return a new datetime.date object given an argument tuple
+    suitable for passing to datetime.date.fromtimestamp().
+    """
+    w_datetime = PyImport_Import(space, space.wrap("datetime"))
+    w_type = space.getattr(w_datetime, space.wrap("date"))
+    w_method = space.getattr(w_type, space.wrap("fromtimestamp"))
+    return space.call(w_method, w_args)
+
 @cpython_api([rffi.INT_real, rffi.INT_real, rffi.INT_real], PyObject)
 def PyDelta_FromDSU(space, days, seconds, useconds):
     """Return a datetime.timedelta object representing the given number of days,

Modified: pypy/trunk/pypy/module/cpyext/stubs.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/stubs.py	(original)
+++ pypy/trunk/pypy/module/cpyext/stubs.py	Mon Jun  7 13:30:56 2010
@@ -587,20 +587,6 @@
     """
     raise NotImplementedError
 
- at cpython_api([PyObject], PyObject)
-def PyDateTime_FromTimestamp(space, args):
-    """Create and return a new datetime.datetime object given an argument tuple
-    suitable for passing to datetime.datetime.fromtimestamp().
-    """
-    raise NotImplementedError
-
- at cpython_api([PyObject], PyObject)
-def PyDate_FromTimestamp(space, args):
-    """Create and return a new datetime.date object given an argument tuple
-    suitable for passing to datetime.date.fromtimestamp().
-    """
-    raise NotImplementedError
-
 @cpython_api([PyTypeObjectPtr, PyGetSetDef], PyObject)
 def PyDescr_NewGetSet(space, type, getset):
     raise NotImplementedError

Modified: pypy/trunk/pypy/module/cpyext/test/test_datetime.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/test/test_datetime.py	(original)
+++ pypy/trunk/pypy/module/cpyext/test/test_datetime.py	Mon Jun  7 13:30:56 2010
@@ -1,5 +1,6 @@
 from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
 from pypy.module.cpyext.test.test_api import BaseApiTest
+import datetime
 
 class TestDatetime(BaseApiTest):
     def test_date(self, space, api):
@@ -61,3 +62,13 @@
         w_delta = api.PyDelta_FromDSU(10, 20, 30)
         assert api.PyDelta_Check(w_delta)
         assert api.PyDelta_CheckExact(w_delta)
+
+    def test_fromtimestamp(self, space, api):
+        w_args = space.wrap((0,))
+        w_date = api.PyDate_FromTimestamp(w_args)
+        assert space.unwrap(space.str(w_date)) == '1970-01-01'
+
+        w_args = space.wrap((0,))
+        w_date = api.PyDateTime_FromTimestamp(w_args)
+        date = datetime.datetime.fromtimestamp(0)
+        assert space.unwrap(space.str(w_date)) == str(date)



More information about the Pypy-commit mailing list