def __init__(self, *args, **keys):
self._spec = {}
max_priority = min(x.time_tuple_index for x in self._units.values())
for key, arg in dict(*args, **keys).iteritems():
if key not in self._units:
raise TypeError("unexpected unit {0!r}".format(key))
unit = self._units[key]
max_priority = max(max_priority, unit.time_tuple_index)
rangeobj = self._coerce(arg)
self._spec[key] = unit.resolve(rangeobj)
for key, unit in self._units.iteritems():
if key in self._spec:
continue
if max_priority >= unit.time_tuple_index:
self._spec[key] = unit.resolve(any())
else:
self._spec[key] = unit.resolve(value(unit.min))
# Special case: If both day or weekday is limited, then use OR instead of AND.
if self._is_any("day"):
self._spec["day"] = self._units["day"].resolve(empty())
elif self._is_any("weekday"):
self._spec["weekday"] = self._units["weekday"].resolve(empty())
self._spec["day"] = _ResolvedOr(self._spec.pop("day"), self._spec.pop("weekday"))
评论列表
文章目录