diff options
author | agronholm <devnull@localhost> | 2010-05-19 07:32:28 +0300 |
---|---|---|
committer | agronholm <devnull@localhost> | 2010-05-19 07:32:28 +0300 |
commit | ab50a8448388f077c689c7063211fd31d16ca715 (patch) | |
tree | eb64d6ad3c6f06eac3fea5eedd70ad19ebfac362 | |
parent | 6e9f98d2b8ec02706c24f17fb2b46e961c61038c (diff) | |
download | apscheduler-ab50a8448388f077c689c7063211fd31d16ca715.tar.gz |
Improvements/changes to __repr__(), __str__()
-rw-r--r-- | apscheduler/expressions.py | 23 | ||||
-rw-r--r-- | apscheduler/fields.py | 3 | ||||
-rw-r--r-- | apscheduler/scheduler.py | 6 | ||||
-rw-r--r-- | apscheduler/triggers.py | 13 | ||||
-rw-r--r-- | tests/apschedulertests/testexpressions.py | 28 | ||||
-rw-r--r-- | tests/apschedulertests/testscheduler.py | 10 | ||||
-rw-r--r-- | tests/apschedulertests/testtriggers.py | 18 |
7 files changed, 81 insertions, 20 deletions
diff --git a/apscheduler/expressions.py b/apscheduler/expressions.py index 5415006..d19754d 100644 --- a/apscheduler/expressions.py +++ b/apscheduler/expressions.py @@ -41,7 +41,7 @@ class AllExpression(object): return '*' def __repr__(self): - return '%s(%s)' % (self.__class__.__name__, str(self)) + return "%s(%s)" % (self.__class__.__name__, self.step) class RangeExpression(AllExpression): @@ -90,6 +90,14 @@ class RangeExpression(AllExpression): return '%s/%d' % (range, self.step) return range + def __repr__(self): + args = [str(self.first)] + if self.last != self.first and self.last is not None or self.step: + args.append(str(self.last)) + if self.step: + args.append(str(self.step)) + return "%s(%s)" % (self.__class__.__name__, ', '.join(args)) + class WeekdayRangeExpression(RangeExpression): value_re = re.compile(r'(?P<first>[a-z]+)(?:-(?P<last>[a-z]+))?', @@ -112,10 +120,16 @@ class WeekdayRangeExpression(RangeExpression): RangeExpression.__init__(self, first_num, last_num) def __str__(self): - if self.last != self.first: + if self.last != self.first and self.last is not None: return '%s-%s' % (WEEKDAYS[self.first], WEEKDAYS[self.last]) return WEEKDAYS[self.first] + def __repr__(self): + args = ["'%s'" % WEEKDAYS[self.first]] + if self.last != self.first and self.last is not None: + args.append("'%s'" % WEEKDAYS[self.last]) + return "%s(%s)" % (self.__class__.__name__, ', '.join(args)) + class WeekdayPositionExpression(AllExpression): options = ['1st', '2nd', '3rd', '4th', '5th', 'last'] @@ -155,3 +169,8 @@ class WeekdayPositionExpression(AllExpression): def __str__(self): return '%s %s' % (self.options[self.option_num], WEEKDAYS[self.weekday]) + + def __repr__(self): + return "%s('%s', '%s')" % (self.__class__.__name__, + self.options[self.option_num], + WEEKDAYS[self.weekday]) diff --git a/apscheduler/fields.py b/apscheduler/fields.py index e70a95e..4e2cde3 100644 --- a/apscheduler/fields.py +++ b/apscheduler/fields.py @@ -66,7 +66,8 @@ class BaseField(object): return ','.join(expr_strings) def __repr__(self): - return '%s(%s, %s)' % (self.__class__.__name__, self.name, str(self)) + return "%s('%s', '%s')" % (self.__class__.__name__, self.name, + str(self)) class WeekField(BaseField): diff --git a/apscheduler/scheduler.py b/apscheduler/scheduler.py index 6bcd9a7..2dced5f 100644 --- a/apscheduler/scheduler.py +++ b/apscheduler/scheduler.py @@ -54,7 +54,11 @@ class Job(object): raise def __str__(self): - return self.name + return '%s: %s' % (self.name, repr(self.trigger)) + + def __repr__(self): + return '%s(%s, %s)' % (self.__class__.__name__, self.name, + repr(self.trigger)) class SchedulerShutdownError(Exception): diff --git a/apscheduler/triggers.py b/apscheduler/triggers.py index 3ac0af6..9886b2b 100644 --- a/apscheduler/triggers.py +++ b/apscheduler/triggers.py @@ -113,6 +113,11 @@ class CronTrigger(object): if fieldnum >= 0: return next_date + def __repr__(self): + field_reprs = ("%s='%s'" % (f.name, str(f)) for f in self.fields + if str(f) != '*') + return '%s(%s)' % (self.__class__.__name__, ', '.join(field_reprs)) + class DateTrigger(object): def __init__(self, run_date): @@ -122,6 +127,9 @@ class DateTrigger(object): if self.run_date >= start_date: return self.run_date + def __repr__(self): + return '%s(%s)' % (self.__class__.__name__, repr(self.run_date)) + class IntervalTrigger(object): def __init__(self, interval, repeat, start_date=None): @@ -156,3 +164,8 @@ class IntervalTrigger(object): timediff_seconds = timedelta_seconds(start_date - self.first_fire_date) next_interval_num = int(ceil(timediff_seconds / self.interval_length)) return self.first_fire_date + self.interval * next_interval_num + + def __repr__(self): + return "%s(interval=%s, repeat=%d, start_date=%s)" % ( + self.__class__.__name__, repr(self.interval), self.repeat, + repr(self.first_fire_date)) diff --git a/tests/apschedulertests/testexpressions.py b/tests/apschedulertests/testexpressions.py index 8679557..2ffc968 100644 --- a/tests/apschedulertests/testexpressions.py +++ b/tests/apschedulertests/testexpressions.py @@ -8,7 +8,7 @@ from apscheduler.fields import DayOfMonthField, BaseField, DayOfWeekField def test_all_expression(): field = DayOfMonthField('day', '*') - eq_(repr(field), 'DayOfMonthField(day, *)') + eq_(repr(field), "DayOfMonthField('day', '*')") date = datetime(2009, 7, 1) eq_(field.get_next_value(date), 1) date = datetime(2009, 7, 10) @@ -19,7 +19,7 @@ def test_all_expression(): def test_all_expression_step(): field = BaseField('hour', '*/3') - eq_(repr(field), 'BaseField(hour, */3)') + eq_(repr(field), "BaseField('hour', '*/3')") date = datetime(2009, 7, 1, 0) eq_(field.get_next_value(date), 0) date = datetime(2009, 7, 1, 2) @@ -35,17 +35,17 @@ def test_all_expression_invalid(): def test_all_expression_repr(): expr = AllExpression() - eq_(repr(expr), 'AllExpression(*)') + eq_(repr(expr), 'AllExpression(None)') def test_all_expression_step_repr(): expr = AllExpression(2) - eq_(repr(expr), 'AllExpression(*/2)') + eq_(repr(expr), "AllExpression(2)") def test_range_expression(): field = DayOfMonthField('day', '2-9') - eq_(repr(field), 'DayOfMonthField(day, 2-9)') + eq_(repr(field), "DayOfMonthField('day', '2-9')") date = datetime(2009, 7, 1) eq_(field.get_next_value(date), 2) date = datetime(2009, 7, 10) @@ -56,7 +56,7 @@ def test_range_expression(): def test_range_expression_step(): field = DayOfMonthField('day', '2-9/3') - eq_(repr(field), 'DayOfMonthField(day, 2-9/3)') + eq_(repr(field), "DayOfMonthField('day', '2-9/3')") date = datetime(2009, 7, 1) eq_(field.get_next_value(date), 2) date = datetime(2009, 7, 3) @@ -67,7 +67,7 @@ def test_range_expression_step(): def test_range_expression_single(): field = DayOfMonthField('day', 9) - eq_(repr(field), 'DayOfMonthField(day, 9)') + eq_(repr(field), "DayOfMonthField('day', '9')") date = datetime(2009, 7, 1) eq_(field.get_next_value(date), 9) date = datetime(2009, 7, 9) @@ -83,7 +83,7 @@ def test_range_expression_invalid(): def test_range_expression_repr(): expr = RangeExpression(3, 7) - eq_(repr(expr), 'RangeExpression(3-7)') + eq_(repr(expr), 'RangeExpression(3, 7)') def test_range_expression_single_repr(): @@ -93,19 +93,19 @@ def test_range_expression_single_repr(): def test_range_expression_step_repr(): expr = RangeExpression(3, 7, 2) - eq_(repr(expr), 'RangeExpression(3-7/2)') + eq_(repr(expr), 'RangeExpression(3, 7, 2)') def test_weekday_single(): field = DayOfWeekField('day_of_week', 'WED') - eq_(repr(field), 'DayOfWeekField(day_of_week, wed)') + eq_(repr(field), "DayOfWeekField('day_of_week', 'wed')") date = datetime(2008, 2, 4) eq_(field.get_next_value(date), 2) def test_weekday_range(): field = DayOfWeekField('day_of_week', 'TUE-SAT') - eq_(repr(field), 'DayOfWeekField(day_of_week, tue-sat)') + eq_(repr(field), "DayOfWeekField('day_of_week', 'tue-sat')") date = datetime(2008, 2, 7) eq_(field.get_next_value(date), 3) @@ -143,7 +143,7 @@ def test_day_of_week_invalid_name(): def test_weekday_position_expression_repr(): expr = WeekdayPositionExpression('2nd', 'FRI') - eq_(repr(expr), 'WeekdayPositionExpression(2nd fri)') + eq_(repr(expr), "WeekdayPositionExpression('2nd', 'fri')") @raises(ValueError) @@ -158,9 +158,9 @@ def test_day_of_week_invalid_last(): def test_weekday_range_expression_repr(): expr = WeekdayRangeExpression('tue', 'SUN') - eq_(repr(expr), 'WeekdayRangeExpression(tue-sun)') + eq_(repr(expr), "WeekdayRangeExpression('tue', 'sun')") def test_weekday_range_expression_single_repr(): expr = WeekdayRangeExpression('thu') - eq_(repr(expr), 'WeekdayRangeExpression(thu)') + eq_(repr(expr), "WeekdayRangeExpression('thu')") diff --git a/tests/apschedulertests/testscheduler.py b/tests/apschedulertests/testscheduler.py index 92bc1aa..80244a8 100644 --- a/tests/apschedulertests/testscheduler.py +++ b/tests/apschedulertests/testscheduler.py @@ -42,8 +42,14 @@ class TestScheduler(object): def test_job_name(self): def my_job(): pass - job = self.scheduler.add_interval_job(my_job) - eq_(str(job), 'my_job') + job = self.scheduler.add_interval_job(my_job, + start_date=datetime(2010, 5, 19)) + eq_(str(job), + 'my_job: IntervalTrigger(interval=datetime.timedelta(0, 1), ' + 'repeat=0, start_date=datetime.datetime(2010, 5, 19, 0, 0))') + eq_(repr(job), + 'Job(my_job, IntervalTrigger(interval=datetime.timedelta(0, 1), ' + 'repeat=0, start_date=datetime.datetime(2010, 5, 19, 0, 0)))') def test_interval(self): def increment(vals, amount): diff --git a/tests/apschedulertests/testtriggers.py b/tests/apschedulertests/testtriggers.py index 20fa8ee..c6f4101 100644 --- a/tests/apschedulertests/testtriggers.py +++ b/tests/apschedulertests/testtriggers.py @@ -7,6 +7,7 @@ from apscheduler.triggers import CronTrigger, DateTrigger, IntervalTrigger def test_cron_trigger_1(): trigger = CronTrigger(year='2009/2', month='1/3', day='5-13') + eq_(repr(trigger), "CronTrigger(year='2009/2', month='1/3', day='5-13')") start_date = datetime(2008, 12, 1) correct_next_date = datetime(2009, 1, 5) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -21,6 +22,7 @@ def test_cron_trigger_2(): def test_cron_trigger_3(): trigger = CronTrigger(year='2009', month='2', hour='8-10') + eq_(repr(trigger), "CronTrigger(year='2009', month='2', hour='8-10')") start_date = datetime(2009, 1, 1) correct_next_date = datetime(2009, 2, 1, 8) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -28,6 +30,7 @@ def test_cron_trigger_3(): def test_cron_year_list(): trigger = CronTrigger(year='2009,2008') + eq_(repr(trigger), "CronTrigger(year='2009,2008')") start_date = datetime(2009, 1, 1) correct_next_date = datetime(2009, 1, 1) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -36,6 +39,8 @@ def test_cron_year_list(): def test_cron_weekday_overlap(): trigger = CronTrigger(year=2009, month=1, day='6-10', day_of_week='2-4') + eq_(repr(trigger), + "CronTrigger(year='2009', month='1', day='6-10', day_of_week='2-4')") start_date = datetime(2009, 1, 1) correct_next_date = datetime(2009, 1, 7) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -44,6 +49,8 @@ def test_cron_weekday_overlap(): def test_cron_weekday_nomatch(): trigger = CronTrigger(year=2009, month=1, day='6-10', day_of_week='0,6') + eq_(repr(trigger), + "CronTrigger(year='2009', month='1', day='6-10', day_of_week='0,6')") start_date = datetime(2009, 1, 1) correct_next_date = None eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -51,6 +58,7 @@ def test_cron_weekday_nomatch(): def test_cron_weekday_positional(): trigger = CronTrigger(year=2009, month=1, day='4th wed') + eq_(repr(trigger), "CronTrigger(year='2009', month='1', day='4th wed')") start_date = datetime(2009, 1, 1) correct_next_date = datetime(2009, 1, 28) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -58,6 +66,7 @@ def test_cron_weekday_positional(): def test_week_1(): trigger = CronTrigger(year=2009, month=2, week=8) + eq_(repr(trigger), "CronTrigger(year='2009', month='2', week='8')") start_date = datetime(2009, 1, 1) correct_next_date = datetime(2009, 2, 16) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -65,6 +74,7 @@ def test_week_1(): def test_week_2(): trigger = CronTrigger(year=2009, week=15, day_of_week=2) + eq_(repr(trigger), "CronTrigger(year='2009', week='15', day_of_week='2')") start_date = datetime(2009, 1, 1) correct_next_date = datetime(2009, 4, 8) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -73,6 +83,7 @@ def test_week_2(): def test_cron_extra_coverage(): # This test has no value other than patching holes in test coverage trigger = CronTrigger(day='6,8') + eq_(repr(trigger), "CronTrigger(day='6,8')") start_date = datetime(2009, 12, 31) correct_next_date = datetime(2010, 1, 6) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -87,6 +98,7 @@ def test_cron_increment_weekday(): # Makes sure that incrementing the weekday field in the process of # calculating the next matching date won't cause problems trigger = CronTrigger(hour='5-6') + eq_(repr(trigger), "CronTrigger(hour='5-6')") start_date = datetime(2009, 9, 25, 7) correct_next_date = datetime(2009, 9, 26, 5) eq_(trigger.get_next_fire_time(start_date), correct_next_date) @@ -95,6 +107,7 @@ def test_cron_increment_weekday(): def test_date_trigger_earlier(): fire_date = datetime(2009, 7, 6) trigger = DateTrigger(fire_date) + eq_(repr(trigger), "DateTrigger(datetime.datetime(2009, 7, 6, 0, 0))") start_date = datetime(2008, 12, 1) eq_(trigger.get_next_fire_time(start_date), fire_date) @@ -136,6 +149,11 @@ class TestInterval(object): trigger_start_date = datetime(2009, 8, 4, second=2) self.trigger = IntervalTrigger(interval, 3, trigger_start_date) + def test_interval_repr(self): + eq_(repr(self.trigger), + "IntervalTrigger(interval=datetime.timedelta(0, 1), repeat=3, " + "start_date=datetime.datetime(2009, 8, 4, 0, 0, 2))") + def test_interval_before(self): start_date = datetime(2009, 8, 4) correct_next_date = datetime(2009, 8, 4, second=2) |