[Jython-checkins] jython (merge 2.5 -> default): Merge 2.5
frank.wierzbicki
jython-checkins at python.org
Tue Jul 24 20:03:09 CEST 2012
http://hg.python.org/jython/rev/b38eb0998437
changeset: 6811:b38eb0998437
parent: 6804:bef3eb26155e
parent: 6810:f9ccaa02aa02
user: Frank Wierzbicki <fwierzbicki at gmail.com>
date: Wed Jul 18 16:36:00 2012 -0700
summary:
Merge 2.5
files:
Lib/datetime.py | 104 +++++++++++-----------
Lib/test/test_datetime_jy.py | 35 +++++++
2 files changed, 85 insertions(+), 54 deletions(-)
diff --git a/Lib/datetime.py b/Lib/datetime.py
--- a/Lib/datetime.py
+++ b/Lib/datetime.py
@@ -18,6 +18,14 @@
import time as _time
import math as _math
+import sys as _sys
+
+if _sys.platform.startswith('java'):
+ from java.lang import Object
+ from java.sql import Date, Timestamp, Time
+ from java.util import Calendar
+ from org.python.core import Py
+
MINYEAR = 1
MAXYEAR = 9999
@@ -981,22 +989,18 @@
def __reduce__(self):
return (self.__class__, self.__getstate())
- def __tojava__(self, java_class):
- from java.lang import Object
- from java.sql import Date
- from java.util import Calendar
- from org.python.core import Py
+ if _sys.platform.startswith('java'):
+ def __tojava__(self, java_class):
+ if java_class not in (Calendar, Date, Object):
+ return Py.NoConversion
- if java_class not in (Calendar, Date, Object):
- return Py.NoConversion
-
- calendar = Calendar.getInstance()
- calendar.clear()
- calendar.set(self.year, self.month - 1, self.day)
- if java_class == Calendar:
- return calendar
- else:
- return Date(calendar.getTimeInMillis())
+ calendar = Calendar.getInstance()
+ calendar.clear()
+ calendar.set(self.year, self.month - 1, self.day)
+ if java_class == Calendar:
+ return calendar
+ else:
+ return Date(calendar.getTimeInMillis())
_date_class = date # so functions w/ args named "date" can get at the class
@@ -1364,26 +1368,22 @@
def __reduce__(self):
return (time, self.__getstate())
- def __tojava__(self, java_class):
- # TODO, if self.tzinfo is not None, convert time to UTC
- from java.lang import Object
- from java.sql import Time
- from java.util import Calendar
- from org.python.core import Py
+ if _sys.platform.startswith('java'):
+ def __tojava__(self, java_class):
+ # TODO, if self.tzinfo is not None, convert time to UTC
+ if java_class not in (Calendar, Time, Object):
+ return Py.NoConversion
- if java_class not in (Calendar, Time, Object):
- return Py.NoConversion
-
- calendar = Calendar.getInstance()
- calendar.clear()
- calendar.set(Calendar.HOUR_OF_DAY, self.hour)
- calendar.set(Calendar.MINUTE, self.minute)
- calendar.set(Calendar.SECOND, self.second)
- calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
- if java_class == Calendar:
- return calendar
- else:
- return Time(calendar.getTimeInMillis())
+ calendar = Calendar.getInstance()
+ calendar.clear()
+ calendar.set(Calendar.HOUR_OF_DAY, self.hour)
+ calendar.set(Calendar.MINUTE, self.minute)
+ calendar.set(Calendar.SECOND, self.second)
+ calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
+ if java_class == Calendar:
+ return calendar
+ else:
+ return Time(calendar.getTimeInMillis())
_time_class = time # so functions w/ args named "time" can get at the class
@@ -1839,28 +1839,24 @@
def __reduce__(self):
return (self.__class__, self.__getstate())
- def __tojava__(self, java_class):
- # TODO, if self.tzinfo is not None, convert time to UTC
- from java.lang import Object
- from java.sql import Timestamp
- from java.util import Calendar
- from org.python.core import Py
+ if _sys.platform.startswith('java'):
+ def __tojava__(self, java_class):
+ # TODO, if self.tzinfo is not None, convert time to UTC
+ if java_class not in (Calendar, Timestamp, Object):
+ return Py.NoConversion
- if java_class not in (Calendar, Timestamp, Object):
- return Py.NoConversion
+ calendar = Calendar.getInstance()
+ calendar.clear()
+ calendar.set(self.year, self.month - 1, self.day,
+ self.hour, self.minute, self.second)
- calendar = Calendar.getInstance()
- calendar.clear()
- calendar.set(self.year, self.month - 1, self.day,
- self.hour, self.minute, self.second)
-
- if java_class == Calendar:
- calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
- return calendar
- else:
- timestamp = Timestamp(calendar.getTimeInMillis())
- timestamp.setNanos(self.microsecond * 1000)
- return timestamp
+ if java_class == Calendar:
+ calendar.set(Calendar.MILLISECOND, self.microsecond // 1000)
+ return calendar
+ else:
+ timestamp = Timestamp(calendar.getTimeInMillis())
+ timestamp.setNanos(self.microsecond * 1000)
+ return timestamp
datetime.min = datetime(1, 1, 1)
diff --git a/Lib/test/test_datetime_jy.py b/Lib/test/test_datetime_jy.py
new file mode 100644
--- /dev/null
+++ b/Lib/test/test_datetime_jy.py
@@ -0,0 +1,35 @@
+import unittest
+from test import test_support
+
+from datetime import timedelta
+from datetime import tzinfo
+from datetime import time
+from datetime import date, datetime
+
+from java.util import Calendar
+from java.sql import Date
+
+
+class TestJavaDatetime(unittest.TestCase):
+
+ def test_datetime(self):
+ self.assertTrue(hasattr(datetime, "__tojava__"))
+ x = datetime(2007, 1, 3)
+ y = x.__tojava__(Calendar)
+ self.assertTrue(isinstance(y, Calendar))
+
+ def test_date(self):
+ self.assertTrue(hasattr(date, "__tojava__"))
+ x = date(2007, 1, 3)
+ y = x.__tojava__(Calendar)
+ self.assertTrue(isinstance(y, Calendar))
+
+ def test_time(self):
+ self.assertTrue(hasattr(time, "__tojava__"))
+ x = time(1, 3)
+ y = x.__tojava__(Calendar)
+ self.assertTrue(isinstance(y, Calendar))
+
+
+if __name__ == '__main__':
+ unittest.main()
--
Repository URL: http://hg.python.org/jython
More information about the Jython-checkins
mailing list