Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: third_party/APScheduler/build/lib.linux-x86_64-2.6/apscheduler/fields.py

Issue 6673078: Initial checkin of media test matrix class, which will be used for media perf test later. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Put APScheduler in third_party directory for Media Performance test. Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 """
2 Fields represent :class:`~apscheduler.triggers.CronTrigger` options which map
3 to :class:`~datetime.datetime` fields.
4 """
5 from calendar import monthrange
6
7 from apscheduler.expressions import *
8
9 __all__ = ('BaseField', 'WeekField', 'DayOfMonthField', 'DayOfWeekField')
10
11 MIN_VALUES = {'year': 1970, 'month': 1, 'day': 1, 'week': 1,
12 'day_of_week': 0, 'hour': 0, 'minute': 0, 'second': 0}
13 MAX_VALUES = {'year': 2 ** 63, 'month': 12, 'day:': 31, 'week': 53,
14 'day_of_week': 6, 'hour': 23, 'minute': 59, 'second': 59}
15
16 class BaseField(object):
17 REAL = True
18 COMPILERS = [AllExpression, RangeExpression]
19
20 def __init__(self, name, exprs):
21 self.name = name
22 self.compile_expressions(exprs)
23
24 def get_min(self, dateval):
25 return MIN_VALUES[self.name]
26
27 def get_max(self, dateval):
28 return MAX_VALUES[self.name]
29
30 def get_value(self, dateval):
31 return getattr(dateval, self.name)
32
33 def get_next_value(self, dateval):
34 smallest = None
35 for expr in self.expressions:
36 value = expr.get_next_value(dateval, self)
37 if smallest is None or (value is not None and value < smallest):
38 smallest = value
39
40 return smallest
41
42 def compile_expressions(self, exprs):
43 self.expressions = []
44
45 # Split a comma-separated expression list, if any
46 exprs = str(exprs).strip()
47 if ',' in exprs:
48 for expr in exprs.split(','):
49 self.compile_expression(expr)
50 else:
51 self.compile_expression(exprs)
52
53 def compile_expression(self, expr):
54 for compiler in self.COMPILERS:
55 match = compiler.value_re.match(expr)
56 if match:
57 compiled_expr = compiler(**match.groupdict())
58 self.expressions.append(compiled_expr)
59 return
60
61 raise ValueError('Unrecognized expression "%s" for field "%s"' %
62 (expr, self.name))
63
64 def __str__(self):
65 expr_strings = (str(e) for e in self.expressions)
66 return ','.join(expr_strings)
67
68 def __repr__(self):
69 return "%s('%s', '%s')" % (self.__class__.__name__, self.name,
70 str(self))
71
72
73 class WeekField(BaseField):
74 REAL = False
75
76 def get_value(self, dateval):
77 return dateval.isocalendar()[1]
78
79
80 class DayOfMonthField(BaseField):
81 COMPILERS = BaseField.COMPILERS + [WeekdayPositionExpression]
82
83 def get_max(self, dateval):
84 return monthrange(dateval.year, dateval.month)[1]
85
86
87 class DayOfWeekField(BaseField):
88 REAL = False
89 COMPILERS = BaseField.COMPILERS + [WeekdayRangeExpression]
90
91 def get_value(self, dateval):
92 return dateval.weekday()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698