|  | @@ -12,7 +12,7 @@ from celery.execute import send_task
 | 
	
		
			
				|  |  |  from celery.result import EagerResult
 | 
	
		
			
				|  |  |  from celery.schedules import crontab, crontab_parser, ParseException
 | 
	
		
			
				|  |  |  from celery.utils import uuid
 | 
	
		
			
				|  |  | -from celery.utils.timeutils import parse_iso8601
 | 
	
		
			
				|  |  | +from celery.utils.timeutils import parse_iso8601, timedelta_seconds
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from celery.tests.utils import Case, with_eager_tasks, WhateverIO
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -514,11 +514,11 @@ class TestPeriodicTask(Case):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def test_remaining_estimate(self):
 | 
	
		
			
				|  |  |          self.assertIsInstance(
 | 
	
		
			
				|  |  | -            MyPeriodic().remaining_estimate(datetime.utcnow()),
 | 
	
		
			
				|  |  | +            MyPeriodic().run_every.remaining_estimate(datetime.utcnow()),
 | 
	
		
			
				|  |  |              timedelta)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def test_is_due_not_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = MyPeriodic().is_due(datetime.utcnow())
 | 
	
		
			
				|  |  | +        due, remaining = MyPeriodic().run_every.is_due(datetime.utcnow())
 | 
	
		
			
				|  |  |          self.assertFalse(due)
 | 
	
		
			
				|  |  |          # This assertion may fail if executed in the
 | 
	
		
			
				|  |  |          # first minute of an hour, thus 59 instead of 60
 | 
	
	
		
			
				|  | @@ -526,10 +526,11 @@ class TestPeriodicTask(Case):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def test_is_due(self):
 | 
	
		
			
				|  |  |          p = MyPeriodic()
 | 
	
		
			
				|  |  | -        due, remaining = p.is_due(datetime.utcnow() - p.run_every.run_every)
 | 
	
		
			
				|  |  | +        due, remaining = p.run_every.is_due(
 | 
	
		
			
				|  |  | +                datetime.utcnow() - p.run_every.run_every)
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining,
 | 
	
		
			
				|  |  | -                         p.timedelta_seconds(p.run_every.run_every))
 | 
	
		
			
				|  |  | +                         timedelta_seconds(p.run_every.run_every))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def test_schedule_repr(self):
 | 
	
		
			
				|  |  |          p = MyPeriodic()
 | 
	
	
		
			
				|  | @@ -785,13 +786,13 @@ class test_crontab_is_due(Case):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def test_every_minute_execution_is_due(self):
 | 
	
		
			
				|  |  |          last_ran = self.now - timedelta(seconds=61)
 | 
	
		
			
				|  |  | -        due, remaining = EveryMinutePeriodic().is_due(last_ran)
 | 
	
		
			
				|  |  | +        due, remaining = EveryMinutePeriodic().run_every.is_due(last_ran)
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.seconds_almost_equal(remaining, self.next_minute, 1)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def test_every_minute_execution_is_not_due(self):
 | 
	
		
			
				|  |  |          last_ran = self.now - timedelta(seconds=self.now.second)
 | 
	
		
			
				|  |  | -        due, remaining = EveryMinutePeriodic().is_due(last_ran)
 | 
	
		
			
				|  |  | +        due, remaining = EveryMinutePeriodic().run_every.is_due(last_ran)
 | 
	
		
			
				|  |  |          self.assertFalse(due)
 | 
	
		
			
				|  |  |          self.seconds_almost_equal(remaining, self.next_minute, 1)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -799,7 +800,7 @@ class test_crontab_is_due(Case):
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(HourlyPeriodic, datetime(2010, 5, 29, 10, 30))
 | 
	
		
			
				|  |  |      def test_execution_is_due_on_saturday(self):
 | 
	
		
			
				|  |  |          last_ran = self.now - timedelta(seconds=61)
 | 
	
		
			
				|  |  | -        due, remaining = EveryMinutePeriodic().is_due(last_ran)
 | 
	
		
			
				|  |  | +        due, remaining = EveryMinutePeriodic().run_every.is_due(last_ran)
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.seconds_almost_equal(remaining, self.next_minute, 1)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -807,7 +808,7 @@ class test_crontab_is_due(Case):
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(HourlyPeriodic, datetime(2010, 5, 30, 10, 30))
 | 
	
		
			
				|  |  |      def test_execution_is_due_on_sunday(self):
 | 
	
		
			
				|  |  |          last_ran = self.now - timedelta(seconds=61)
 | 
	
		
			
				|  |  | -        due, remaining = EveryMinutePeriodic().is_due(last_ran)
 | 
	
		
			
				|  |  | +        due, remaining = EveryMinutePeriodic().run_every.is_due(last_ran)
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.seconds_almost_equal(remaining, self.next_minute, 1)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -815,70 +816,70 @@ class test_crontab_is_due(Case):
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(HourlyPeriodic, datetime(2010, 5, 31, 10, 30))
 | 
	
		
			
				|  |  |      def test_execution_is_due_on_monday(self):
 | 
	
		
			
				|  |  |          last_ran = self.now - timedelta(seconds=61)
 | 
	
		
			
				|  |  | -        due, remaining = EveryMinutePeriodic().is_due(last_ran)
 | 
	
		
			
				|  |  | +        due, remaining = EveryMinutePeriodic().run_every.is_due(last_ran)
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.seconds_almost_equal(remaining, self.next_minute, 1)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(HourlyPeriodic, datetime(2010, 5, 10, 10, 30))
 | 
	
		
			
				|  |  |      def test_every_hour_execution_is_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = HourlyPeriodic().is_due(datetime(2010, 5, 10, 6, 30))
 | 
	
		
			
				|  |  | +        due, remaining = HourlyPeriodic().run_every.is_due(datetime(2010, 5, 10, 6, 30))
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 60 * 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(HourlyPeriodic, datetime(2010, 5, 10, 10, 29))
 | 
	
		
			
				|  |  |      def test_every_hour_execution_is_not_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = HourlyPeriodic().is_due(datetime(2010, 5, 10, 9, 30))
 | 
	
		
			
				|  |  | +        due, remaining = HourlyPeriodic().run_every.is_due(datetime(2010, 5, 10, 9, 30))
 | 
	
		
			
				|  |  |          self.assertFalse(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(QuarterlyPeriodic, datetime(2010, 5, 10, 10, 15))
 | 
	
		
			
				|  |  |      def test_first_quarter_execution_is_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = QuarterlyPeriodic().is_due(
 | 
	
		
			
				|  |  | +        due, remaining = QuarterlyPeriodic().run_every.is_due(
 | 
	
		
			
				|  |  |                              datetime(2010, 5, 10, 6, 30))
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 15 * 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(QuarterlyPeriodic, datetime(2010, 5, 10, 10, 30))
 | 
	
		
			
				|  |  |      def test_second_quarter_execution_is_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = QuarterlyPeriodic().is_due(
 | 
	
		
			
				|  |  | +        due, remaining = QuarterlyPeriodic().run_every.is_due(
 | 
	
		
			
				|  |  |                              datetime(2010, 5, 10, 6, 30))
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 15 * 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(QuarterlyPeriodic, datetime(2010, 5, 10, 10, 14))
 | 
	
		
			
				|  |  |      def test_first_quarter_execution_is_not_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = QuarterlyPeriodic().is_due(
 | 
	
		
			
				|  |  | +        due, remaining = QuarterlyPeriodic().run_every.is_due(
 | 
	
		
			
				|  |  |                              datetime(2010, 5, 10, 10, 0))
 | 
	
		
			
				|  |  |          self.assertFalse(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(QuarterlyPeriodic, datetime(2010, 5, 10, 10, 29))
 | 
	
		
			
				|  |  |      def test_second_quarter_execution_is_not_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = QuarterlyPeriodic().is_due(
 | 
	
		
			
				|  |  | +        due, remaining = QuarterlyPeriodic().run_every.is_due(
 | 
	
		
			
				|  |  |                              datetime(2010, 5, 10, 10, 15))
 | 
	
		
			
				|  |  |          self.assertFalse(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(DailyPeriodic, datetime(2010, 5, 10, 7, 30))
 | 
	
		
			
				|  |  |      def test_daily_execution_is_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = DailyPeriodic().is_due(datetime(2010, 5, 9, 7, 30))
 | 
	
		
			
				|  |  | +        due, remaining = DailyPeriodic().run_every.is_due(datetime(2010, 5, 9, 7, 30))
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 24 * 60 * 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(DailyPeriodic, datetime(2010, 5, 10, 10, 30))
 | 
	
		
			
				|  |  |      def test_daily_execution_is_not_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = DailyPeriodic().is_due(datetime(2010, 5, 10, 7, 30))
 | 
	
		
			
				|  |  | +        due, remaining = DailyPeriodic().run_every.is_due(datetime(2010, 5, 10, 7, 30))
 | 
	
		
			
				|  |  |          self.assertFalse(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 21 * 60 * 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(WeeklyPeriodic, datetime(2010, 5, 6, 7, 30))
 | 
	
		
			
				|  |  |      def test_weekly_execution_is_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = WeeklyPeriodic().is_due(datetime(2010, 4, 30, 7, 30))
 | 
	
		
			
				|  |  | +        due, remaining = WeeklyPeriodic().run_every.is_due(datetime(2010, 4, 30, 7, 30))
 | 
	
		
			
				|  |  |          self.assertTrue(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 7 * 24 * 60 * 60)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @patch_crontab_nowfun(WeeklyPeriodic, datetime(2010, 5, 7, 10, 30))
 | 
	
		
			
				|  |  |      def test_weekly_execution_is_not_due(self):
 | 
	
		
			
				|  |  | -        due, remaining = WeeklyPeriodic().is_due(datetime(2010, 5, 6, 7, 30))
 | 
	
		
			
				|  |  | +        due, remaining = WeeklyPeriodic().run_every.is_due(datetime(2010, 5, 6, 7, 30))
 | 
	
		
			
				|  |  |          self.assertFalse(due)
 | 
	
		
			
				|  |  |          self.assertEqual(remaining, 6 * 24 * 60 * 60 - 3 * 60 * 60)
 |