Merge pull request #56 from kiorky/master

backport
This commit is contained in:
Mathieu Le Marec - Pasquet 2016-03-10 21:31:55 +01:00
commit 194d6f2e15
3 changed files with 21 additions and 13 deletions

View File

@ -1,12 +1,16 @@
Changelog
==============
0.3.12 (unreleased)
0.3.13 (unreleased)
-------------------
- Nothing changed yet.
0.3.12 (2016-03-10)
-------------------
- support setting ret_type in __init__ [Brent Tubbs <brent.tubbs@gmail.com>]
0.3.11 (2016-01-13)
-------------------

View File

@ -17,7 +17,7 @@ long_description = "\n\n".join(
setup(
name='croniter',
version='0.3.12.dev0',
version='0.3.13.dev0',
py_modules=['croniter', ],
description=(
'croniter provides iteration for datetime '

View File

@ -52,7 +52,8 @@ class croniter(object):
bad_length = 'Exactly 5 or 6 columns has to be specified for iterator' \
'expression.'
def __init__(self, expr_format, start_time=None):
def __init__(self, expr_format, start_time=None, ret_type=float):
self._ret_type = ret_type
if start_time is None:
start_time = time()
@ -137,13 +138,14 @@ class croniter(object):
else res)
self.expanded = expanded
def get_next(self, ret_type=float):
return self._get_next(ret_type, is_prev=False)
def get_next(self, ret_type=None):
return self._get_next(ret_type or self._ret_type, is_prev=False)
def get_prev(self, ret_type=float):
return self._get_next(ret_type, is_prev=True)
def get_prev(self, ret_type=None):
return self._get_next(ret_type or self._ret_type, is_prev=True)
def get_current(self, ret_type=float):
def get_current(self, ret_type=None):
ret_type = ret_type or self._ret_type
if ret_type == datetime.datetime:
return self._timestamp_to_datetime(self.cur)
return self.cur
@ -186,24 +188,26 @@ class croniter(object):
return self
__next__ = next = get_next
def all_next(self, ret_type=float):
def all_next(self, ret_type=None):
'''Generator of all consecutive dates. Can be used instead of
implicit call to __iter__, whenever non-default
'ret_type' has to be specified.
'''
while True:
yield self._get_next(ret_type, is_prev=False)
yield self._get_next(ret_type or self._ret_type, is_prev=False)
def all_prev(self, ret_type=float):
def all_prev(self, ret_type=None):
'''Generator of all previous dates.'''
while True:
yield self._get_next(ret_type, is_prev=True)
yield self._get_next(ret_type or self._ret_type, is_prev=True)
iter = all_next # alias, you can call .iter() instead of .all_next()
def _get_next(self, ret_type=float, is_prev=False):
def _get_next(self, ret_type=None, is_prev=False):
expanded = self.expanded[:]
ret_type = ret_type or self._ret_type
if ret_type not in (float, datetime.datetime):
raise TypeError("Invalid ret_type, only 'float' or 'datetime' "
"is acceptable.")