← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~cjwatson/python-timeline/division into lp:python-timeline

 

Colin Watson has proposed merging lp:~cjwatson/python-timeline/division into lp:python-timeline.

Commit message:
Use floor division for consistent output between Python 2 and 3.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/python-timeline/division/+merge/345341

I noticed this while attempting to port oops-timeline.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/python-timeline/division into lp:python-timeline.
=== modified file 'NEWS'
--- NEWS	2018-05-10 08:22:00 +0000
+++ NEWS	2018-05-10 08:44:57 +0000
@@ -3,6 +3,13 @@
 
 Changes and improvements to timeline, grouped by release.
 
+NEXT
+----
+
+* Use floor division so that intervals are always represented as integer
+  numbers of milliseconds, preserving output compatibility between Python 2
+  and 3. (Colin Watson)
+
 0.0.5
 -----
 

=== modified file 'timeline/tests/test_timedaction.py'
--- timeline/tests/test_timedaction.py	2018-03-12 12:47:17 +0000
+++ timeline/tests/test_timedaction.py	2018-05-10 08:44:57 +0000
@@ -55,9 +55,11 @@
         log_tuple = action.logTuple()
         self.assertEqual(5, len(log_tuple), "!= 5 elements %s" % (log_tuple,))
         # The first element is the start offset in ms.
-        self.assertAlmostEqual(2, log_tuple[0])
+        self.assertIsInstance(log_tuple[0], int)
+        self.assertEqual(2, log_tuple[0])
         # The second element is the end offset in ms.
-        self.assertAlmostEqual(6, log_tuple[1])
+        self.assertIsInstance(log_tuple[1], int)
+        self.assertEqual(6, log_tuple[1])
         self.assertEqual("foo", log_tuple[2])
         self.assertEqual("bar", log_tuple[3])
         # The fifth element defaults to None:
@@ -74,8 +76,10 @@
         action._interval_to_now = lambda: datetime.timedelta(0, 0, 0, 3)
         log_tuple = action.logTuple()
         self.assertEqual(5, len(log_tuple), "!= 5 elements %s" % (log_tuple,))
-        self.assertAlmostEqual(2, log_tuple[0])
-        self.assertAlmostEqual(5, log_tuple[1])
+        self.assertIsInstance(log_tuple[0], int)
+        self.assertEqual(2, log_tuple[0])
+        self.assertIsInstance(log_tuple[1], int)
+        self.assertEqual(5, log_tuple[1])
         self.assertEqual("foo", log_tuple[2])
         self.assertEqual("bar", log_tuple[3])
 

=== modified file 'timeline/timedaction.py'
--- timeline/timedaction.py	2018-03-12 12:47:17 +0000
+++ timeline/timedaction.py	2018-05-10 08:44:57 +0000
@@ -15,7 +15,7 @@
 """Time a single categorised action."""
 
 
-from __future__ import absolute_import, print_function
+from __future__ import absolute_import, division, print_function
 
 __all__ = ['TimedAction']
 
@@ -89,7 +89,7 @@
     def _td_to_ms(self, td):
         """Tweak on a backport from python 2.7"""
         return (td.microseconds + (
-            td.seconds + td.days * 24 * 3600) * 10**6) / 10**3
+            td.seconds + td.days * 24 * 3600) * 10**6) // 10**3
 
     def finish(self):
         """Mark the TimedAction as finished."""